windows-nt/Source/XPSP1/NT/net/upnp/host/upnphost/inc/auth.h
2020-09-26 16:20:57 +08:00

42 lines
1.4 KiB
C++

// Called once, determines which settings we're using
class CReg;
void AuthInitialize(CReg *, BOOL *pfBasicAuth, BOOL *pfNTLMAuth);
// state information for NTLM auth scheme, 1 per request.
// NOTE: In the middle of an httpd request using NTLM, this structure
// must be maintained. This is evident in HttpConnectionThread in httpmain.cpp
typedef enum
{
NTLM_NO_INIT_LIB = 0, // Needs the libraries, fcn setup. Per session
NTLM_NO_INIT_CONTEXT, // needs context structures to be initialized. Per request
NTLM_PROCESSING, // in the middle of request, keep structures around.
NTLM_DONE // Set after 2nd NTLM pass, it's either failed. Remove context, not library.
} NTLM_CONVERSATION;
typedef struct
{
NTLM_CONVERSATION m_Conversation; // Are we in the middle of a request?
BOOL m_fHaveCredHandle; // Is m_hcred initialized?
CredHandle m_hcred;
BOOL m_fHaveCtxtHandle; // Is m_hctxt initialized?
struct _SecHandle m_hctxt;
} AUTH_NTLM, *PAUTH_NTLM;
// Functions used each session
BOOL HandleBasicAuth(PSTR pszData, PSTR* ppszUser, PSTR *ppszPassword,
AUTHLEVEL* pAuth, PAUTH_NTLM pNTLMState, WCHAR *wszVRootUserList);
BOOL NTLMInitLib(PAUTH_NTLM pNTLMState);
BOOL BasicToNTLM(PAUTH_NTLM pNTLMState, WCHAR * wszPassword, WCHAR * wszRemoteUser,
AUTHLEVEL *pAuth, WCHAR *wszVRootUserList);
void FreeNTLMHandles(PAUTH_NTLM pNTLMState);