diff options
Diffstat (limited to 'net/http/http_auth_sspi_win.h')
-rwxr-xr-x | net/http/http_auth_sspi_win.h | 47 |
1 files changed, 46 insertions, 1 deletions
diff --git a/net/http/http_auth_sspi_win.h b/net/http/http_auth_sspi_win.h index d58678b..4d340aa 100755 --- a/net/http/http_auth_sspi_win.h +++ b/net/http/http_auth_sspi_win.h @@ -16,8 +16,53 @@ #include <string> +class GURL; + namespace net { +class HttpRequestInfo; +class ProxyInfo; + +class HttpAuthSSPI { + public: + HttpAuthSSPI(const std::string& scheme, + SEC_WCHAR* security_package); + ~HttpAuthSSPI(); + + bool NeedsIdentity() const; + bool IsFinalRound() const; + + bool ParseChallenge(std::string::const_iterator challenge_begin, + std::string::const_iterator challenge_end); + + int GenerateCredentials(const std::wstring& username, + const std::wstring& password, + const GURL& origin, + const HttpRequestInfo* request, + const ProxyInfo* proxy, + std::string* out_credentials); + + private: + int OnFirstRound(const std::wstring& domain, + const std::wstring& user, + const std::wstring& password); + + int GetNextSecurityToken( + const GURL& origin, + const void* in_token, + int in_token_len, + void** out_token, + int* out_token_len); + + void ResetSecurityContext(); + std::string scheme_; + SEC_WCHAR* security_package_; + std::string decoded_server_auth_token_; + ULONG max_token_length_; + CredHandle cred_; + CtxtHandle ctxt_; +}; + // Splits |combined| into domain and username. // If |combined| is of form "FOO\bar", |domain| will contain "FOO" and |user| // will contain "bar". @@ -41,7 +86,7 @@ int AcquireCredentials(const SEC_WCHAR* package, const std::wstring& user, const std::wstring& password, CredHandle* cred); -} // namespace net +} // namespace net #endif // NET_HTTP_HTTP_AUTH_SSPI_WIN_H_ |