| Index: remoting/protocol/authentication_method.h
|
| diff --git a/remoting/protocol/authentication_method.h b/remoting/protocol/authentication_method.h
|
| index c2265d5e7d38e1b42138efbaf40203d61b453790..1b8dc46bddf5b09f0b09925e3bf31f56334e9f1c 100644
|
| --- a/remoting/protocol/authentication_method.h
|
| +++ b/remoting/protocol/authentication_method.h
|
| @@ -1,14 +1,6 @@
|
| // Copyright (c) 2012 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.
|
| -
|
| -// AuthenticationMethod represents an authentication algorithm and its
|
| -// configuration. It knows how to parse and format authentication
|
| -// method names.
|
| -// Currently the following methods are supported:
|
| -// spake2_plain - SPAKE2 without hashing applied to the password.
|
| -// spake2_hmac - SPAKE2 with HMAC hashing of the password.
|
| -
|
| #ifndef REMOTING_PROTOCOL_AUTHENTICATION_METHOD_H_
|
| #define REMOTING_PROTOCOL_AUTHENTICATION_METHOD_H_
|
|
|
| @@ -19,73 +11,37 @@ namespace protocol {
|
|
|
| class Authenticator;
|
|
|
| -class AuthenticationMethod {
|
| - public:
|
| - enum MethodType {
|
| - INVALID,
|
| - SPAKE2,
|
| - SPAKE2_PAIR,
|
| - THIRD_PARTY
|
| - };
|
| -
|
| - enum HashFunction {
|
| - NONE,
|
| - HMAC_SHA256,
|
| - };
|
| -
|
| - // Constructors for various authentication methods.
|
| - static AuthenticationMethod Invalid();
|
| - static AuthenticationMethod Spake2(HashFunction hash_function);
|
| - static AuthenticationMethod Spake2Pair();
|
| - static AuthenticationMethod ThirdParty();
|
| -
|
| - // Parses a string that defines an authentication method. Returns an
|
| - // invalid value if the string is invalid.
|
| - static AuthenticationMethod FromString(const std::string& value);
|
| -
|
| - // Applies the specified hash function to |shared_secret| with the
|
| - // specified |tag| as a key.
|
| - static std::string ApplyHashFunction(HashFunction hash_function,
|
| - const std::string& tag,
|
| - const std::string& shared_secret);
|
| -
|
| - bool is_valid() const { return type_ != INVALID; }
|
| -
|
| - MethodType type() const { return type_; }
|
| -
|
| - // Following methods are valid only when is_valid() returns true.
|
| -
|
| - // Hash function applied to the shared secret on both ends.
|
| - HashFunction hash_function() const;
|
| -
|
| - // Returns string representation of the value stored in this object.
|
| - const std::string ToString() const;
|
| +// AuthenticationMethod represents an authentication algorithm.
|
| +enum class AuthenticationMethod {
|
| + INVALID,
|
| + SPAKE2_SHARED_SECRET_PLAIN,
|
| + SPAKE2_SHARED_SECRET_HMAC,
|
| + SPAKE2_PAIR,
|
| + THIRD_PARTY
|
| +};
|
|
|
| - // Comparison operators so that std::find() can be used with
|
| - // collections of this class.
|
| - bool operator ==(const AuthenticationMethod& other) const;
|
| - bool operator !=(const AuthenticationMethod& other) const {
|
| - return !(*this == other);
|
| - }
|
| +enum class HashFunction {
|
| + NONE,
|
| + HMAC_SHA256,
|
| +};
|
|
|
| - protected:
|
| - AuthenticationMethod();
|
| - AuthenticationMethod(MethodType type, HashFunction hash_function);
|
| +// Parses a string that defines an authentication method. Returns
|
| +// AuthenticationMethod::INVALID if the string is invalid.
|
| +AuthenticationMethod ParseAuthenticationMethodString(const std::string& value);
|
|
|
| - MethodType type_;
|
| - HashFunction hash_function_;
|
| -};
|
| +// Returns string representation of |method|.
|
| +const std::string AuthenticationMethodToString(AuthenticationMethod method);
|
|
|
| -// SharedSecretHash stores hash of a host secret paired with the type
|
| -// of the hashing function.
|
| -struct SharedSecretHash {
|
| - AuthenticationMethod::HashFunction hash_function;
|
| - std::string value;
|
| +// Returns hash function applied to the shared secret on both ends for the
|
| +// spefied |method|.
|
| +HashFunction GetHashFunctionForAuthenticationMethod(
|
| + AuthenticationMethod method);
|
|
|
| - // Parse string representation of a shared secret hash. The |as_string|
|
| - // must be in form "<hash_function>:<hash_value_base64>".
|
| - bool Parse(const std::string& as_string);
|
| -};
|
| +// Applies the specified hash function to |shared_secret| with the
|
| +// specified |tag| as a key.
|
| +std::string ApplySharedSecretHashFunction(HashFunction hash_function,
|
| + const std::string& tag,
|
| + const std::string& shared_secret);
|
|
|
| } // namespace protocol
|
| } // namespace remoting
|
|
|