diff options
Diffstat (limited to 'net/http/http_auth_handler_ntlm.h')
-rw-r--r-- | net/http/http_auth_handler_ntlm.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/net/http/http_auth_handler_ntlm.h b/net/http/http_auth_handler_ntlm.h new file mode 100644 index 0000000..05ce06b --- /dev/null +++ b/net/http/http_auth_handler_ntlm.h @@ -0,0 +1,60 @@ +// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef NET_HTTP_HTTP_AUTH_HANDLER_NTLM_H_ +#define NET_HTTP_HTTP_AUTH_HANDLER_NTLM_H_ + +#include <string> + +#include "base/scoped_ptr.h" +#include "net/http/http_auth_handler.h" + +namespace net { + +class NTLMAuthModule; + +// Code for handling HTTP NTLM authentication. +class HttpAuthHandlerNTLM : public HttpAuthHandler { + public: + HttpAuthHandlerNTLM(); + + virtual ~HttpAuthHandlerNTLM(); + + virtual bool NeedsIdentity(); + + virtual std::string GenerateCredentials(const std::wstring& username, + const std::wstring& password, + const HttpRequestInfo* request, + const ProxyInfo* proxy); + + protected: + virtual bool Init(std::string::const_iterator challenge_begin, + std::string::const_iterator challenge_end) { + return ParseChallenge(challenge_begin, challenge_end); + } + + private: + // Parse the challenge, saving the results into this instance. + // Returns true on success. + bool ParseChallenge(std::string::const_iterator challenge_begin, + std::string::const_iterator challenge_end); + + // The actual implementation of NTLM. + // + // TODO(wtc): This artificial separation of the NTLM auth module from the + // NTLM auth handler comes from the Mozilla code. It is due to an + // architecture constraint of Mozilla's (all crypto code must reside in the + // "PSM" component), so that the NTLM code, which does crypto, must be + // separated from the "netwerk" component. Our source tree doesn't have + // this constraint, so we may want to merge NTLMAuthModule into this class. + scoped_ptr<NTLMAuthModule> ntlm_module_; + + // The base64-encoded string following "NTLM" in the "WWW-Authenticate" or + // "Proxy-Authenticate" response header. + std::string auth_data_; +}; + +} // namespace net + +#endif // NET_HTTP_HTTP_AUTH_HANDLER_NTLM_H_ |