| 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);
|
|
|