| Index: net/quic/test_tools/crypto_test_utils.cc
|
| diff --git a/net/quic/test_tools/crypto_test_utils.cc b/net/quic/test_tools/crypto_test_utils.cc
|
| index a9c5e0d4303c164e0dfdc5d222876264130d34f9..71f3234ef12e3d88a9d2f10086cb07008382c67a 100644
|
| --- a/net/quic/test_tools/crypto_test_utils.cc
|
| +++ b/net/quic/test_tools/crypto_test_utils.cc
|
| @@ -4,12 +4,17 @@
|
|
|
| #include "net/quic/test_tools/crypto_test_utils.h"
|
|
|
| +#include "base/string_piece.h"
|
| +#include "net/quic/crypto/quic_decrypter.h"
|
| +#include "net/quic/crypto/quic_encrypter.h"
|
| #include "net/quic/quic_crypto_client_stream.h"
|
| #include "net/quic/quic_crypto_server_stream.h"
|
| #include "net/quic/quic_crypto_stream.h"
|
| #include "net/quic/test_tools/quic_test_utils.h"
|
| #include "net/quic/test_tools/simple_quic_framer.h"
|
|
|
| +using base::StringPiece;
|
| +
|
| namespace net {
|
| namespace test {
|
|
|
| @@ -61,13 +66,13 @@ void CommunicateHandshakeMessages(
|
| // static
|
| void CryptoTestUtils::HandshakeWithFakeServer(
|
| PacketSavingConnection* client_conn,
|
| - QuicCryptoStream* client) {
|
| + QuicCryptoClientStream* client) {
|
| QuicGuid guid(1);
|
| IPAddressNumber ip;
|
| CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
|
| IPEndPoint addr = IPEndPoint(ip, 1);
|
| PacketSavingConnection* server_conn =
|
| - new PacketSavingConnection(guid, addr);
|
| + new PacketSavingConnection(guid, addr, true);
|
| TestSession server_session(server_conn, true);
|
| QuicCryptoServerStream server(&server_session);
|
|
|
| @@ -75,18 +80,20 @@ void CryptoTestUtils::HandshakeWithFakeServer(
|
| CHECK_NE(0u, client_conn->packets_.size());
|
|
|
| CommunicateHandshakeMessages(client_conn, client, server_conn, &server);
|
| +
|
| + CompareClientAndServerKeys(client, &server);
|
| }
|
|
|
| // static
|
| void CryptoTestUtils::HandshakeWithFakeClient(
|
| PacketSavingConnection* server_conn,
|
| - QuicCryptoStream* server) {
|
| + QuicCryptoServerStream* server) {
|
| QuicGuid guid(1);
|
| IPAddressNumber ip;
|
| CHECK(ParseIPLiteralToNumber("192.0.2.33", &ip));
|
| IPEndPoint addr = IPEndPoint(ip, 1);
|
| PacketSavingConnection* client_conn =
|
| - new PacketSavingConnection(guid, addr);
|
| + new PacketSavingConnection(guid, addr, false);
|
| TestSession client_session(client_conn, true);
|
| QuicCryptoClientStream client(&client_session, "test.example.com");
|
|
|
| @@ -94,6 +101,50 @@ void CryptoTestUtils::HandshakeWithFakeClient(
|
| CHECK_EQ(1u, client_conn->packets_.size());
|
|
|
| CommunicateHandshakeMessages(client_conn, &client, server_conn, server);
|
| +
|
| + CompareClientAndServerKeys(&client, server);
|
| +}
|
| +
|
| +// static
|
| +void CryptoTestUtils::CompareClientAndServerKeys(
|
| + QuicCryptoClientStream* client,
|
| + QuicCryptoServerStream* server) {
|
| + StringPiece client_encrypter_key =
|
| + client->crypto_negotiated_params_.encrypter->GetKey();
|
| + StringPiece client_encrypter_iv =
|
| + client->crypto_negotiated_params_.encrypter->GetNoncePrefix();
|
| + StringPiece client_decrypter_key =
|
| + client->crypto_negotiated_params_.decrypter->GetKey();
|
| + StringPiece client_decrypter_iv =
|
| + client->crypto_negotiated_params_.decrypter->GetNoncePrefix();
|
| + StringPiece server_encrypter_key =
|
| + server->crypto_negotiated_params_.encrypter->GetKey();
|
| + StringPiece server_encrypter_iv =
|
| + server->crypto_negotiated_params_.encrypter->GetNoncePrefix();
|
| + StringPiece server_decrypter_key =
|
| + server->crypto_negotiated_params_.decrypter->GetKey();
|
| + StringPiece server_decrypter_iv =
|
| + server->crypto_negotiated_params_.decrypter->GetNoncePrefix();
|
| + CompareCharArraysWithHexError("client write key",
|
| + client_encrypter_key.data(),
|
| + client_encrypter_key.length(),
|
| + server_decrypter_key.data(),
|
| + server_decrypter_key.length());
|
| + CompareCharArraysWithHexError("client write IV",
|
| + client_encrypter_iv.data(),
|
| + client_encrypter_iv.length(),
|
| + server_decrypter_iv.data(),
|
| + server_decrypter_iv.length());
|
| + CompareCharArraysWithHexError("server write key",
|
| + server_encrypter_key.data(),
|
| + server_encrypter_key.length(),
|
| + client_decrypter_key.data(),
|
| + client_decrypter_key.length());
|
| + CompareCharArraysWithHexError("server write IV",
|
| + server_encrypter_iv.data(),
|
| + server_encrypter_iv.length(),
|
| + client_decrypter_iv.data(),
|
| + client_decrypter_iv.length());
|
| }
|
| } // namespace test
|
| } // namespace net
|
|
|