| Index: net/quic/core/crypto/crypto_server_test.cc
|
| diff --git a/net/quic/core/crypto/crypto_server_test.cc b/net/quic/core/crypto/crypto_server_test.cc
|
| index f07852483620663d5718c45d8eae6aeeeaa9eaad..941e2fedd0b0c59afc63556f0ff6694561adc7bc 100644
|
| --- a/net/quic/core/crypto/crypto_server_test.cc
|
| +++ b/net/quic/core/crypto/crypto_server_test.cc
|
| @@ -23,6 +23,7 @@
|
| #include "net/quic/platform/api/quic_text_utils.h"
|
| #include "net/quic/test_tools/crypto_test_utils.h"
|
| #include "net/quic/test_tools/delayed_verify_strike_register_client.h"
|
| +#include "net/quic/test_tools/failing_proof_source.h"
|
| #include "net/quic/test_tools/mock_clock.h"
|
| #include "net/quic/test_tools/mock_random.h"
|
| #include "net/quic/test_tools/quic_crypto_server_config_peer.h"
|
| @@ -107,6 +108,7 @@ class CryptoServerTest : public ::testing::TestWithParam<TestParams> {
|
| config_(QuicCryptoServerConfig::TESTING,
|
| rand_,
|
| CryptoTestUtils::ProofSourceForTesting()),
|
| + peer_(&config_),
|
| compressed_certs_cache_(
|
| QuicCompressedCertsCache::kQuicCompressedCertsCacheSize),
|
| params_(new QuicCryptoNegotiatedParameters),
|
| @@ -399,6 +401,7 @@ class CryptoServerTest : public ::testing::TestWithParam<TestParams> {
|
| QuicVersion client_version_;
|
| string client_version_string_;
|
| QuicCryptoServerConfig config_;
|
| + QuicCryptoServerConfigPeer peer_;
|
| QuicCompressedCertsCache compressed_certs_cache_;
|
| QuicCryptoServerConfig::ConfigOptions config_options_;
|
| QuicReferenceCountedPointer<QuicCryptoNegotiatedParameters> params_;
|
| @@ -996,6 +999,28 @@ TEST_P(CryptoServerTest, NonceInSHLO) {
|
| EXPECT_TRUE(out_.GetStringPiece(kServerNonceTag, &nonce));
|
| }
|
|
|
| +TEST_P(CryptoServerTest, ProofSourceFailure) {
|
| + // Install a ProofSource which will unconditionally fail
|
| + peer_.ResetProofSource(std::unique_ptr<ProofSource>(new FailingProofSource));
|
| +
|
| + // clang-format off
|
| + CryptoHandshakeMessage msg = CryptoTestUtils::Message(
|
| + "CHLO",
|
| + "AEAD", "AESG",
|
| + "KEXS", "C255",
|
| + "SCID", scid_hex_.c_str(),
|
| + "PUBS", pub_hex_.c_str(),
|
| + "NONC", nonce_hex_.c_str(),
|
| + "PDMD", "X509",
|
| + "VER\0", client_version_string_.c_str(),
|
| + "$padding", static_cast<int>(kClientHelloMinimumSize),
|
| + nullptr);
|
| + // clang-format on
|
| +
|
| + // Just ensure that we don't crash as occurred in b/33916924.
|
| + ShouldFailMentioning("", msg);
|
| +}
|
| +
|
| TEST(CryptoServerConfigGenerationTest, Determinism) {
|
| // Test that using a deterministic PRNG causes the server-config to be
|
| // deterministic.
|
|
|