Index: net/http/http_auth_gssapi_posix.cc |
diff --git a/net/http/http_auth_gssapi_posix.cc b/net/http/http_auth_gssapi_posix.cc |
index 388cc640a42cc097657eaf4915fd32aadbd2b89a..0b87b33a137a5da6225d89a694726237bcae81ff 100644 |
--- a/net/http/http_auth_gssapi_posix.cc |
+++ b/net/http/http_auth_gssapi_posix.cc |
@@ -16,7 +16,7 @@ |
#include "base/threading/thread_restrictions.h" |
#include "net/base/net_errors.h" |
#include "net/base/net_util.h" |
-#include "net/http/http_auth_challenge_tokenizer.h" |
+#include "net/http/http_auth_multi_round_parse.h" |
// These are defined for the GSSAPI library: |
// Paraphrasing the comments from gssapi.h: |
@@ -687,39 +687,18 @@ void HttpAuthGSSAPI::Delegate() { |
HttpAuth::AuthorizationResult HttpAuthGSSAPI::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 Negotiate challenge |
- // should be treated as a rejection of the current attempt. |
- if (scoped_sec_context_.get() != GSS_C_NO_CONTEXT) |
- 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 (scoped_sec_context_.get() == GSS_C_NO_CONTEXT) |
- return HttpAuth::AUTHORIZATION_RESULT_INVALID; |
+ if (scoped_sec_context_.get() == GSS_C_NO_CONTEXT) { |
+ return net::ParseFirstRoundChallenge(scheme_, tok); |
} |
- |
- // Make sure the additional token is base64 encoded. |
- 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 HttpAuthGSSAPI::GenerateAuthToken(const AuthCredentials* credentials, |
const std::string& spn, |
- std::string* auth_token) { |
+ std::string* auth_token, |
+ const CompletionCallback& /*callback*/) { |
DCHECK(auth_token); |
gss_buffer_desc input_token = GSS_C_EMPTY_BUFFER; |