Index: crypto/p224_spake.h |
diff --git a/crypto/p224_spake.h b/crypto/p224_spake.h |
index 0441efb84d8582be6b0072b1d00cd6916bd877aa..01507c9d6928df8fddf38f9a0c6ce80f9348e402 100644 |
--- a/crypto/p224_spake.h |
+++ b/crypto/p224_spake.h |
@@ -12,12 +12,10 @@ |
namespace crypto { |
-// P224EncryptedKeyExchange provides a means to authenticate an |
-// encrypted transport using a low-entropy, shared secret. |
-// |
-// You need a value derived from the master secret of the connection in order |
-// to bind the authentication to the encrypted channel. It's the |session| |
-// argument to the constructor and can be of any length. |
+// P224EncryptedKeyExchange implements SPAKE2, a variant of Encrypted |
+// Key Exchange. It allows two parties that have a secret common |
+// password to establish a common secure key by exchanging messages |
+// over unsecure channel without disclosing the password. |
// |
// The password can be low entropy as authenticating with an attacker only |
// gives the attacker a one-shot password oracle. No other information about |
@@ -51,13 +49,11 @@ class CRYPTO_EXPORT P224EncryptedKeyExchange { |
}; |
// peer_type: the type of the local authentication party. |
- // password: a, possibly low-entropy, mutually known password. |
- // session: a value securely derived from the connection's master secret. |
- // Both parties to the authentication must pass the same value. For the |
- // case of a TLS connection, see RFC 5705. |
+ // password: secret session password. Both parties to the |
+ // authentication must pass the same value. For the case of a |
+ // TLS connection, see RFC 5705. |
P224EncryptedKeyExchange(PeerType peer_type, |
- const base::StringPiece& password, |
- const base::StringPiece& session); |
+ const base::StringPiece& password); |
// GetMessage returns a byte string which must be passed to the other party |
// in the authentication. |
@@ -71,6 +67,10 @@ class CRYPTO_EXPORT P224EncryptedKeyExchange { |
// return a human readable error message. |
const std::string& error() const; |
+ // The key established as result of the key exchange. Must be called |
+ // at then end after ProcessMessage() returns kResultSuccess. |
+ const std::string& GetKey(); |
+ |
private: |
// The authentication state machine is very simple and each party proceeds |
// through each of these states, in order. |
@@ -106,6 +106,8 @@ class CRYPTO_EXPORT P224EncryptedKeyExchange { |
// expected_authenticator_ is used to store the hash value expected from the |
// other party. |
uint8 expected_authenticator_[kSHA256Length]; |
+ |
+ std::string key_; |
}; |
} // namespace crypto |