Index: net/http/http_auth_sspi_win.cc |
diff --git a/net/http/http_auth_sspi_win.cc b/net/http/http_auth_sspi_win.cc |
index c935d33a7c2e8b570a6305a6fb750f4180cc4226..f59ce4d9d781d28dc38847f9a88bf3615acafa4d 100644 |
--- a/net/http/http_auth_sspi_win.cc |
+++ b/net/http/http_auth_sspi_win.cc |
@@ -13,7 +13,7 @@ |
#include "base/strings/utf_string_conversions.h" |
#include "net/base/net_errors.h" |
#include "net/http/http_auth.h" |
-#include "net/http/http_auth_challenge_tokenizer.h" |
+#include "net/http/http_auth_multi_round_parse.h" |
namespace net { |
@@ -282,37 +282,18 @@ void HttpAuthSSPI::ResetSecurityContext() { |
HttpAuth::AuthorizationResult HttpAuthSSPI::ParseChallenge( |
HttpAuthChallengeTokenizer* tok) { |
- // Verify the challenge's auth-scheme. |
- if (!base::LowerCaseEqualsASCII(tok->scheme(), |
- base::StringToLowerASCII(scheme_).c_str())) |
- return HttpAuth::AUTHORIZATION_RESULT_INVALID; |
- |
- std::string encoded_auth_token = tok->base64_param(); |
- if (encoded_auth_token.empty()) { |
- // If a context has already been established, an empty challenge |
- // should be treated as a rejection of the current attempt. |
- if (SecIsValidHandle(&ctxt_)) |
- return HttpAuth::AUTHORIZATION_RESULT_REJECT; |
- DCHECK(decoded_server_auth_token_.empty()); |
- return HttpAuth::AUTHORIZATION_RESULT_ACCEPT; |
- } else { |
- // If a context has not already been established, additional tokens should |
- // not be present in the auth challenge. |
- if (!SecIsValidHandle(&ctxt_)) |
- return HttpAuth::AUTHORIZATION_RESULT_INVALID; |
+ if (!SecIsValidHandle(&ctxt_)) { |
+ return net::ParseFirstRoundChallenge(scheme_, tok); |
} |
- |
- std::string decoded_auth_token; |
- bool base64_rv = base::Base64Decode(encoded_auth_token, &decoded_auth_token); |
- if (!base64_rv) |
- return HttpAuth::AUTHORIZATION_RESULT_INVALID; |
- decoded_server_auth_token_ = decoded_auth_token; |
- return HttpAuth::AUTHORIZATION_RESULT_ACCEPT; |
+ std::string encoded_auth_token; |
+ return net::ParseLaterRoundChallenge(scheme_, tok, &encoded_auth_token, |
+ &decoded_server_auth_token_); |
} |
int HttpAuthSSPI::GenerateAuthToken(const AuthCredentials* credentials, |
const std::string& spn, |
- std::string* auth_token) { |
+ std::string* auth_token, |
+ const CompletionCallback& /*callback*/) { |
// Initial challenge. |
if (!SecIsValidHandle(&cred_)) { |
int rv = OnFirstRound(credentials); |