| Index: net/http/http_auth_handler_digest.h
|
| diff --git a/net/http/http_auth_handler_digest.h b/net/http/http_auth_handler_digest.h
|
| deleted file mode 100644
|
| index dbe02b4f2da0e43f8ad9fc46532adab549d24e6d..0000000000000000000000000000000000000000
|
| --- a/net/http/http_auth_handler_digest.h
|
| +++ /dev/null
|
| @@ -1,179 +0,0 @@
|
| -// Copyright (c) 2011 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#ifndef NET_HTTP_HTTP_AUTH_HANDLER_DIGEST_H_
|
| -#define NET_HTTP_HTTP_AUTH_HANDLER_DIGEST_H_
|
| -
|
| -#include <string>
|
| -
|
| -#include "base/basictypes.h"
|
| -#include "base/gtest_prod_util.h"
|
| -#include "base/memory/scoped_ptr.h"
|
| -#include "net/base/net_export.h"
|
| -#include "net/http/http_auth_handler.h"
|
| -#include "net/http/http_auth_handler_factory.h"
|
| -
|
| -namespace net {
|
| -
|
| -// Code for handling http digest authentication.
|
| -class NET_EXPORT_PRIVATE HttpAuthHandlerDigest : public HttpAuthHandler {
|
| - public:
|
| - // A NonceGenerator is a simple interface for generating client nonces.
|
| - // Unit tests can override the default client nonce behavior with fixed
|
| - // nonce generation to get reproducible results.
|
| - class NET_EXPORT_PRIVATE NonceGenerator {
|
| - public:
|
| - NonceGenerator();
|
| - virtual ~NonceGenerator();
|
| -
|
| - // Generates a client nonce.
|
| - virtual std::string GenerateNonce() const = 0;
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(NonceGenerator);
|
| - };
|
| -
|
| - // DynamicNonceGenerator does a random shuffle of 16
|
| - // characters to generate a client nonce.
|
| - class DynamicNonceGenerator : public NonceGenerator {
|
| - public:
|
| - DynamicNonceGenerator();
|
| - std::string GenerateNonce() const override;
|
| -
|
| - private:
|
| - DISALLOW_COPY_AND_ASSIGN(DynamicNonceGenerator);
|
| - };
|
| -
|
| - // FixedNonceGenerator always uses the same string specified at
|
| - // construction time as the client nonce.
|
| - class NET_EXPORT_PRIVATE FixedNonceGenerator : public NonceGenerator {
|
| - public:
|
| - explicit FixedNonceGenerator(const std::string& nonce);
|
| -
|
| - std::string GenerateNonce() const override;
|
| -
|
| - private:
|
| - const std::string nonce_;
|
| - DISALLOW_COPY_AND_ASSIGN(FixedNonceGenerator);
|
| - };
|
| -
|
| - class NET_EXPORT_PRIVATE Factory : public HttpAuthHandlerFactory {
|
| - public:
|
| - Factory();
|
| - ~Factory() override;
|
| -
|
| - // This factory owns the passed in |nonce_generator|.
|
| - void set_nonce_generator(const NonceGenerator* nonce_generator);
|
| -
|
| - int CreateAuthHandler(HttpAuthChallengeTokenizer* challenge,
|
| - HttpAuth::Target target,
|
| - const GURL& origin,
|
| - CreateReason reason,
|
| - int digest_nonce_count,
|
| - const BoundNetLog& net_log,
|
| - scoped_ptr<HttpAuthHandler>* handler) override;
|
| -
|
| - private:
|
| - scoped_ptr<const NonceGenerator> nonce_generator_;
|
| - };
|
| -
|
| - HttpAuth::AuthorizationResult HandleAnotherChallenge(
|
| - HttpAuthChallengeTokenizer* challenge) override;
|
| -
|
| - protected:
|
| - bool Init(HttpAuthChallengeTokenizer* challenge) override;
|
| -
|
| - int GenerateAuthTokenImpl(const AuthCredentials* credentials,
|
| - const HttpRequestInfo* request,
|
| - const CompletionCallback& callback,
|
| - std::string* auth_token) override;
|
| -
|
| - private:
|
| - FRIEND_TEST_ALL_PREFIXES(HttpAuthHandlerDigestTest, ParseChallenge);
|
| - FRIEND_TEST_ALL_PREFIXES(HttpAuthHandlerDigestTest, AssembleCredentials);
|
| - FRIEND_TEST_ALL_PREFIXES(HttpNetworkTransactionTest, DigestPreAuthNonceCount);
|
| -
|
| - // Possible values for the "algorithm" property.
|
| - enum DigestAlgorithm {
|
| - // No algorithm was specified. According to RFC 2617 this means
|
| - // we should default to ALGORITHM_MD5.
|
| - ALGORITHM_UNSPECIFIED,
|
| -
|
| - // Hashes are run for every request.
|
| - ALGORITHM_MD5,
|
| -
|
| - // Hash is run only once during the first WWW-Authenticate handshake.
|
| - // (SESS means session).
|
| - ALGORITHM_MD5_SESS,
|
| - };
|
| -
|
| - // Possible values for QualityOfProtection.
|
| - // auth-int is not supported, see http://crbug.com/62890 for justification.
|
| - enum QualityOfProtection {
|
| - QOP_UNSPECIFIED,
|
| - QOP_AUTH,
|
| - };
|
| -
|
| - // |nonce_count| indicates how many times the server-specified nonce has
|
| - // been used so far.
|
| - // |nonce_generator| is used to create a client nonce, and is not owned by
|
| - // the handler. The lifetime of the |nonce_generator| must exceed that of this
|
| - // handler.
|
| - HttpAuthHandlerDigest(int nonce_count, const NonceGenerator* nonce_generator);
|
| - ~HttpAuthHandlerDigest() override;
|
| -
|
| - // Parse the challenge, saving the results into this instance.
|
| - // Returns true on success.
|
| - bool ParseChallenge(HttpAuthChallengeTokenizer* challenge);
|
| -
|
| - // Parse an individual property. Returns true on success.
|
| - bool ParseChallengeProperty(const std::string& name,
|
| - const std::string& value);
|
| -
|
| - // Generates a random string, to be used for client-nonce.
|
| - static std::string GenerateNonce();
|
| -
|
| - // Convert enum value back to string.
|
| - static std::string QopToString(QualityOfProtection qop);
|
| - static std::string AlgorithmToString(DigestAlgorithm algorithm);
|
| -
|
| - // Extract the method and path of the request, as needed by
|
| - // the 'A2' production. (path may be a hostname for proxy).
|
| - void GetRequestMethodAndPath(const HttpRequestInfo* request,
|
| - std::string* method,
|
| - std::string* path) const;
|
| -
|
| - // Build up the 'response' production.
|
| - std::string AssembleResponseDigest(const std::string& method,
|
| - const std::string& path,
|
| - const AuthCredentials& credentials,
|
| - const std::string& cnonce,
|
| - const std::string& nc) const;
|
| -
|
| - // Build up the value for (Authorization/Proxy-Authorization).
|
| - std::string AssembleCredentials(const std::string& method,
|
| - const std::string& path,
|
| - const AuthCredentials& credentials,
|
| - const std::string& cnonce,
|
| - int nonce_count) const;
|
| -
|
| - // Information parsed from the challenge.
|
| - std::string nonce_;
|
| - std::string domain_;
|
| - std::string opaque_;
|
| - bool stale_;
|
| - DigestAlgorithm algorithm_;
|
| - QualityOfProtection qop_;
|
| -
|
| - // The realm as initially encoded over-the-wire. This is used in the
|
| - // challenge text, rather than |realm_| which has been converted to
|
| - // UTF-8.
|
| - std::string original_realm_;
|
| -
|
| - int nonce_count_;
|
| - const NonceGenerator* nonce_generator_;
|
| -};
|
| -
|
| -} // namespace net
|
| -
|
| -#endif // NET_HTTP_HTTP_AUTH_HANDLER_DIGEST_H_
|
|
|