Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(240)

Unified Diff: net/http/http_auth_handler_ntlm.h

Issue 43113: Merge NTLMAuthModule into HttpAuthHandlerNTLM. The... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Upload before checkin Created 11 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | net/http/http_auth_handler_ntlm.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: net/http/http_auth_handler_ntlm.h
===================================================================
--- net/http/http_auth_handler_ntlm.h (revision 12289)
+++ net/http/http_auth_handler_ntlm.h (working copy)
@@ -9,6 +9,7 @@
#include "base/basictypes.h"
#include "base/scoped_ptr.h"
+#include "base/string16.h"
#include "net/http/http_auth_handler.h"
namespace net {
@@ -21,12 +22,30 @@
// A function that generates n random bytes in the output buffer.
typedef void (*GenerateRandomProc)(uint8* output, size_t n);
- // A function that returns the local host name as a null-terminated string
- // in the output buffer. Returns an empty string if the local host name is
- // not available.
- // TODO(wtc): return a std::string instead.
- typedef void (*HostNameProc)(char* name, size_t namelen);
+ // A function that returns the local host name. Returns an empty string if
+ // the local host name is not available.
+ typedef std::string (*HostNameProc)();
+ // For unit tests to override and restore the GenerateRandom and
+ // GetHostName functions.
+ class ScopedProcSetter {
+ public:
+ ScopedProcSetter(GenerateRandomProc random_proc,
+ HostNameProc host_name_proc) {
+ old_random_proc_ = SetGenerateRandomProc(random_proc);
+ old_host_name_proc_ = SetHostNameProc(host_name_proc);
+ }
+
+ ~ScopedProcSetter() {
+ SetGenerateRandomProc(old_random_proc_);
+ SetHostNameProc(old_host_name_proc_);
+ }
+
+ private:
+ GenerateRandomProc old_random_proc_;
+ HostNameProc old_host_name_proc_;
+ };
+
HttpAuthHandlerNTLM();
virtual ~HttpAuthHandlerNTLM();
@@ -38,10 +57,6 @@
const HttpRequestInfo* request,
const ProxyInfo* proxy);
- // For unit tests to override the GenerateRandom and GetHostName functions.
- static void SetGenerateRandomProc(GenerateRandomProc proc);
- static void SetHostNameProc(HostNameProc proc);
-
protected:
virtual bool Init(std::string::const_iterator challenge_begin,
std::string::const_iterator challenge_end) {
@@ -49,21 +64,30 @@
}
private:
+ // For unit tests to override the GenerateRandom and GetHostName functions.
+ // Returns the old function.
+ static GenerateRandomProc SetGenerateRandomProc(GenerateRandomProc proc);
+ static HostNameProc SetHostNameProc(HostNameProc proc);
+
// 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_;
+ // Given an input token received from the server, generate the next output
+ // token to be sent to the server.
+ int GetNextToken(const void* in_token,
+ uint32 in_token_len,
+ void** out_token,
+ uint32* out_token_len);
+ static GenerateRandomProc generate_random_proc_;
+ static HostNameProc get_host_name_proc_;
+
+ string16 domain_;
+ string16 username_;
+ string16 password_;
+
// The base64-encoded string following "NTLM" in the "WWW-Authenticate" or
// "Proxy-Authenticate" response header.
std::string auth_data_;
« no previous file with comments | « no previous file | net/http/http_auth_handler_ntlm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698