| 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 f285e254e9f568f20144a01b0dfb47cdb5b8a1c6..8b0cf604cae7cb3aea172282a16ed560b68d2c76 100644
|
| --- a/net/quic/test_tools/crypto_test_utils.cc
|
| +++ b/net/quic/test_tools/crypto_test_utils.cc
|
| @@ -20,6 +20,7 @@
|
| #include "net/quic/core/crypto/channel_id.h"
|
| #include "net/quic/core/crypto/common_cert_set.h"
|
| #include "net/quic/core/crypto/crypto_handshake.h"
|
| +#include "net/quic/core/crypto/crypto_server_config_protobuf.h"
|
| #include "net/quic/core/crypto/quic_crypto_server_config.h"
|
| #include "net/quic/core/crypto/quic_decrypter.h"
|
| #include "net/quic/core/crypto/quic_encrypter.h"
|
| @@ -299,10 +300,11 @@ class FullChloGenerator : public ValidateClientHelloResultCallback {
|
| CryptoHandshakeMessage rej;
|
| crypto_config_->ProcessClientHello(
|
| result, /*reject_only=*/false, /*connection_id=*/1, server_ip_,
|
| - client_addr_, QuicSupportedVersions().front(), QuicSupportedVersions(),
|
| + client_addr_, AllSupportedVersions().front(), AllSupportedVersions(),
|
| /*use_stateless_rejects=*/true, /*server_designated_connection_id=*/0,
|
| clock_, QuicRandom::GetInstance(), compressed_certs_cache_, ¶ms,
|
| - proof_, &rej, &diversification_nonce, &error_details);
|
| + proof_, /*total_framing_overhead=*/50, kDefaultMaxPacketSize, &rej,
|
| + &diversification_nonce, &error_details);
|
| // Verify output is a REJ or SREJ.
|
| EXPECT_THAT(rej.tag(),
|
| testing::AnyOf(testing::Eq(kSREJ), testing::Eq(kREJ)));
|
| @@ -523,9 +525,8 @@ uint64_t CryptoTestUtils::LeafCertHashForTesting() {
|
| string cert_sct;
|
| std::unique_ptr<ProofSource> proof_source(
|
| CryptoTestUtils::ProofSourceForTesting());
|
| - if (!proof_source->GetProof(server_ip, "", "",
|
| - QuicSupportedVersions().front(), "", &chain, &sig,
|
| - &cert_sct) ||
|
| + if (!proof_source->GetProof(server_ip, "", "", AllSupportedVersions().front(),
|
| + "", &chain, &sig, &cert_sct) ||
|
| chain->certs.empty()) {
|
| DCHECK(false) << "Proof generation failed";
|
| return 0;
|
| @@ -883,6 +884,8 @@ void CryptoTestUtils::MovePackets(PacketSavingConnection* source_conn,
|
| StringPiece(stream_frame->data_buffer, stream_frame->data_length)));
|
| ASSERT_FALSE(crypto_visitor.error());
|
| }
|
| + QuicConnectionPeer::SetCurrentPacket(
|
| + dest_conn, source_conn->encrypted_packets_[index]->AsStringPiece());
|
| }
|
| *inout_packet_index = index;
|
|
|
| @@ -893,6 +896,58 @@ void CryptoTestUtils::MovePackets(PacketSavingConnection* source_conn,
|
| for (const CryptoHandshakeMessage& message : crypto_visitor.messages()) {
|
| dest_stream->OnHandshakeMessage(message);
|
| }
|
| + QuicConnectionPeer::SetCurrentPacket(dest_conn, StringPiece(nullptr, 0));
|
| +}
|
| +
|
| +CryptoHandshakeMessage CryptoTestUtils::GenerateDefaultInchoateCHLO(
|
| + const QuicClock* clock,
|
| + QuicVersion version,
|
| + QuicCryptoServerConfig* crypto_config) {
|
| + // clang-format off
|
| + return CryptoTestUtils::Message(
|
| + "CHLO",
|
| + "PDMD", "X509",
|
| + "AEAD", "AESG",
|
| + "KEXS", "C255",
|
| + "PUBS", CryptoTestUtils::GenerateClientPublicValuesHex().c_str(),
|
| + "NONC", CryptoTestUtils::GenerateClientNonceHex(clock,
|
| + crypto_config).c_str(),
|
| + "VER\0", QuicUtils::TagToString(
|
| + QuicVersionToQuicTag(version)).c_str(),
|
| + "$padding", static_cast<int>(kClientHelloMinimumSize),
|
| + nullptr);
|
| + // clang-format on
|
| +}
|
| +
|
| +string CryptoTestUtils::GenerateClientNonceHex(
|
| + const QuicClock* clock,
|
| + QuicCryptoServerConfig* crypto_config) {
|
| + net::QuicCryptoServerConfig::ConfigOptions old_config_options;
|
| + net::QuicCryptoServerConfig::ConfigOptions new_config_options;
|
| + old_config_options.id = "old-config-id";
|
| + delete crypto_config->AddDefaultConfig(net::QuicRandom::GetInstance(), clock,
|
| + old_config_options);
|
| + std::unique_ptr<QuicServerConfigProtobuf> primary_config(
|
| + crypto_config->GenerateConfig(net::QuicRandom::GetInstance(), clock,
|
| + new_config_options));
|
| + primary_config->set_primary_time(clock->WallNow().ToUNIXSeconds());
|
| + std::unique_ptr<net::CryptoHandshakeMessage> msg(
|
| + crypto_config->AddConfig(primary_config.get(), clock->WallNow()));
|
| + StringPiece orbit;
|
| + CHECK(msg->GetStringPiece(net::kORBT, &orbit));
|
| + string nonce;
|
| + net::CryptoUtils::GenerateNonce(
|
| + clock->WallNow(), net::QuicRandom::GetInstance(),
|
| + StringPiece(reinterpret_cast<const char*>(orbit.data()),
|
| + sizeof(orbit.size())),
|
| + &nonce);
|
| + return ("#" + net::QuicUtils::HexEncode(nonce));
|
| +}
|
| +
|
| +string CryptoTestUtils::GenerateClientPublicValuesHex() {
|
| + char public_value[32];
|
| + memset(public_value, 42, sizeof(public_value));
|
| + return ("#" + net::QuicUtils::HexEncode(public_value, sizeof(public_value)));
|
| }
|
|
|
| // static
|
|
|