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

Unified Diff: net/http/http_auth_handler_ntlm.cc

Issue 42052: Add unit tests for NTLM authentication. This requires... (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 | « net/http/http_auth_handler_ntlm.h ('k') | net/http/http_network_transaction_unittest.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.cc
===================================================================
--- net/http/http_auth_handler_ntlm.cc (revision 11487)
+++ net/http/http_auth_handler_ntlm.cc (working copy)
@@ -434,6 +434,25 @@
return OK;
}
+static void GenerateRandom(uint8* output, size_t n) {
+ for (size_t i = 0; i < n; ++i)
+ output[i] = base::RandInt(0, 255);
+}
+
+static void GetHostName(char* name, size_t namelen) {
+ if (gethostname(name, namelen) != 0)
+ name[0] = '\0';
+}
+
+// TODO(wtc): these two function pointers should become static members of
+// HttpAuthHandlerNTLM. They are file-scope static variables now so that
+// GenerateType3Msg can use them without being a friend function. We should
+// have HttpAuthHandlerNTLM absorb NTLMAuthModule and pass the host name and
+// random bytes as input arguments to GenerateType3Msg.
+static HttpAuthHandlerNTLM::GenerateRandomProc generate_random_proc_ =
+ GenerateRandom;
+static HttpAuthHandlerNTLM::HostNameProc get_host_name_proc_ = GetHostName;
+
// Returns OK or a network error code.
static int GenerateType3Msg(const string16& domain,
const string16& username,
@@ -511,9 +530,10 @@
// Get workstation name (use local machine's hostname).
//
char host_buf[256]; // Host names are limited to 255 bytes.
- if (gethostname(host_buf, sizeof(host_buf)) != 0)
+ get_host_name_proc_(host_buf, sizeof(host_buf));
+ host_len = strlen(host_buf);
+ if (host_len == 0)
return ERR_UNEXPECTED;
- host_len = strlen(host_buf);
if (unicode) {
// hostname is ASCII, so we can do a simple zero-pad expansion:
ucs_host_buf.assign(host_buf, host_buf + host_len);
@@ -547,10 +567,7 @@
MD5Digest session_hash;
uint8 temp[16];
- // TODO(wtc): Add a function that generates random bytes so we can say:
- // GenerateRandom(lm_resp, 8);
- for (int i = 0; i < 8; ++i)
- lm_resp[i] = base::RandInt(0, 255);
+ generate_random_proc_(lm_resp, 8);
memset(lm_resp + 8, 0, LM_RESP_LEN - 8);
memcpy(temp, msg.challenge, 8);
@@ -757,6 +774,16 @@
return std::string("NTLM ") + encode_output;
}
+// static
+void HttpAuthHandlerNTLM::SetGenerateRandomProc(GenerateRandomProc proc) {
+ generate_random_proc_ = proc;
+}
+
+// static
+void HttpAuthHandlerNTLM::SetHostNameProc(HostNameProc proc) {
+ get_host_name_proc_ = proc;
+}
+
// The NTLM challenge header looks like:
// WWW-Authenticate: NTLM auth-data
bool HttpAuthHandlerNTLM::ParseChallenge(
« no previous file with comments | « net/http/http_auth_handler_ntlm.h ('k') | net/http/http_network_transaction_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698