Move QuicRandom functionality to QuicheRandom, and update `third_party/quic` ,`net/quic` to use alias `using QuicRandom = quiche::QuicheRandom;` PiperOrigin-RevId: 475958042
diff --git a/build/source_list.bzl b/build/source_list.bzl index edbefc2..4269322 100644 --- a/build/source_list.bzl +++ b/build/source_list.bzl
@@ -54,6 +54,7 @@ "common/quiche_linked_hash_map.h", "common/quiche_mem_slice_storage.h", "common/quiche_protocol_flags_list.h", + "common/quiche_random.h", "common/quiche_text_utils.h", "common/simple_buffer_allocator.h", "common/structured_headers.h", @@ -415,6 +416,7 @@ "common/quiche_ip_address.cc", "common/quiche_ip_address_family.cc", "common/quiche_mem_slice_storage.cc", + "common/quiche_random.cc", "common/quiche_text_utils.cc", "common/simple_buffer_allocator.cc", "common/structured_headers.cc", @@ -530,7 +532,6 @@ "quic/core/crypto/quic_decrypter.cc", "quic/core/crypto/quic_encrypter.cc", "quic/core/crypto/quic_hkdf.cc", - "quic/core/crypto/quic_random.cc", "quic/core/crypto/tls_client_connection.cc", "quic/core/crypto/tls_connection.cc", "quic/core/crypto/tls_server_connection.cc", @@ -1046,6 +1047,7 @@ "common/quiche_ip_address_test.cc", "common/quiche_linked_hash_map_test.cc", "common/quiche_mem_slice_storage_test.cc", + "common/quiche_random_test.cc", "common/quiche_text_utils_test.cc", "common/simple_buffer_allocator_test.cc", "common/structured_headers_generated_test.cc", @@ -1145,7 +1147,6 @@ "quic/core/crypto/quic_crypto_client_config_test.cc", "quic/core/crypto/quic_crypto_server_config_test.cc", "quic/core/crypto/quic_hkdf_test.cc", - "quic/core/crypto/quic_random_test.cc", "quic/core/crypto/transport_parameters_test.cc", "quic/core/crypto/web_transport_fingerprint_proof_verifier_test.cc", "quic/core/deterministic_connection_id_generator_test.cc",
diff --git a/build/source_list.gni b/build/source_list.gni index b30c93f..57eab18 100644 --- a/build/source_list.gni +++ b/build/source_list.gni
@@ -54,6 +54,7 @@ "src/quiche/common/quiche_linked_hash_map.h", "src/quiche/common/quiche_mem_slice_storage.h", "src/quiche/common/quiche_protocol_flags_list.h", + "src/quiche/common/quiche_random.h", "src/quiche/common/quiche_text_utils.h", "src/quiche/common/simple_buffer_allocator.h", "src/quiche/common/structured_headers.h", @@ -415,6 +416,7 @@ "src/quiche/common/quiche_ip_address.cc", "src/quiche/common/quiche_ip_address_family.cc", "src/quiche/common/quiche_mem_slice_storage.cc", + "src/quiche/common/quiche_random.cc", "src/quiche/common/quiche_text_utils.cc", "src/quiche/common/simple_buffer_allocator.cc", "src/quiche/common/structured_headers.cc", @@ -530,7 +532,6 @@ "src/quiche/quic/core/crypto/quic_decrypter.cc", "src/quiche/quic/core/crypto/quic_encrypter.cc", "src/quiche/quic/core/crypto/quic_hkdf.cc", - "src/quiche/quic/core/crypto/quic_random.cc", "src/quiche/quic/core/crypto/tls_client_connection.cc", "src/quiche/quic/core/crypto/tls_connection.cc", "src/quiche/quic/core/crypto/tls_server_connection.cc", @@ -1046,6 +1047,7 @@ "src/quiche/common/quiche_ip_address_test.cc", "src/quiche/common/quiche_linked_hash_map_test.cc", "src/quiche/common/quiche_mem_slice_storage_test.cc", + "src/quiche/common/quiche_random_test.cc", "src/quiche/common/quiche_text_utils_test.cc", "src/quiche/common/simple_buffer_allocator_test.cc", "src/quiche/common/structured_headers_generated_test.cc", @@ -1145,7 +1147,6 @@ "src/quiche/quic/core/crypto/quic_crypto_client_config_test.cc", "src/quiche/quic/core/crypto/quic_crypto_server_config_test.cc", "src/quiche/quic/core/crypto/quic_hkdf_test.cc", - "src/quiche/quic/core/crypto/quic_random_test.cc", "src/quiche/quic/core/crypto/transport_parameters_test.cc", "src/quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier_test.cc", "src/quiche/quic/core/deterministic_connection_id_generator_test.cc",
diff --git a/build/source_list.json b/build/source_list.json index 21ac56f..1c6503f 100644 --- a/build/source_list.json +++ b/build/source_list.json
@@ -53,6 +53,7 @@ "quiche/common/quiche_linked_hash_map.h", "quiche/common/quiche_mem_slice_storage.h", "quiche/common/quiche_protocol_flags_list.h", + "quiche/common/quiche_random.h", "quiche/common/quiche_text_utils.h", "quiche/common/simple_buffer_allocator.h", "quiche/common/structured_headers.h", @@ -414,6 +415,7 @@ "quiche/common/quiche_ip_address.cc", "quiche/common/quiche_ip_address_family.cc", "quiche/common/quiche_mem_slice_storage.cc", + "quiche/common/quiche_random.cc", "quiche/common/quiche_text_utils.cc", "quiche/common/simple_buffer_allocator.cc", "quiche/common/structured_headers.cc", @@ -529,7 +531,6 @@ "quiche/quic/core/crypto/quic_decrypter.cc", "quiche/quic/core/crypto/quic_encrypter.cc", "quiche/quic/core/crypto/quic_hkdf.cc", - "quiche/quic/core/crypto/quic_random.cc", "quiche/quic/core/crypto/tls_client_connection.cc", "quiche/quic/core/crypto/tls_connection.cc", "quiche/quic/core/crypto/tls_server_connection.cc", @@ -1045,6 +1046,7 @@ "quiche/common/quiche_ip_address_test.cc", "quiche/common/quiche_linked_hash_map_test.cc", "quiche/common/quiche_mem_slice_storage_test.cc", + "quiche/common/quiche_random_test.cc", "quiche/common/quiche_text_utils_test.cc", "quiche/common/simple_buffer_allocator_test.cc", "quiche/common/structured_headers_generated_test.cc", @@ -1144,7 +1146,6 @@ "quiche/quic/core/crypto/quic_crypto_client_config_test.cc", "quiche/quic/core/crypto/quic_crypto_server_config_test.cc", "quiche/quic/core/crypto/quic_hkdf_test.cc", - "quiche/quic/core/crypto/quic_random_test.cc", "quiche/quic/core/crypto/transport_parameters_test.cc", "quiche/quic/core/crypto/web_transport_fingerprint_proof_verifier_test.cc", "quiche/quic/core/deterministic_connection_id_generator_test.cc",
diff --git a/quiche/quic/core/crypto/quic_random.cc b/quiche/common/quiche_random.cc similarity index 68% rename from quiche/quic/core/crypto/quic_random.cc rename to quiche/common/quiche_random.cc index bd0dc5b..12eeac2 100644 --- a/quiche/quic/core/crypto/quic_random.cc +++ b/quiche/common/quiche_random.cc
@@ -1,18 +1,11 @@ -// 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. - -#include "quiche/quic/core/crypto/quic_random.h" +#include "quiche/common/quiche_random.h" #include <cstdint> #include <cstring> #include "openssl/rand.h" -#include "quiche/quic/platform/api/quic_bug_tracker.h" -#include "quiche/quic/platform/api/quic_logging.h" #include "quiche/common/platform/api/quiche_logging.h" - -namespace quic { +namespace quiche { namespace { @@ -48,12 +41,12 @@ return result; } -class DefaultRandom : public QuicRandom { +class DefaultQuicheRandom : public QuicheRandom { public: - DefaultRandom() {} - DefaultRandom(const DefaultRandom&) = delete; - DefaultRandom& operator=(const DefaultRandom&) = delete; - ~DefaultRandom() override {} + DefaultQuicheRandom() {} + DefaultQuicheRandom(const DefaultQuicheRandom&) = delete; + DefaultQuicheRandom& operator=(const DefaultQuicheRandom&) = delete; + ~DefaultQuicheRandom() override {} // QuicRandom implementation void RandBytes(void* data, size_t len) override; @@ -62,17 +55,17 @@ uint64_t InsecureRandUint64() override; }; -void DefaultRandom::RandBytes(void* data, size_t len) { +void DefaultQuicheRandom::RandBytes(void* data, size_t len) { RAND_bytes(reinterpret_cast<uint8_t*>(data), len); } -uint64_t DefaultRandom::RandUint64() { +uint64_t DefaultQuicheRandom::RandUint64() { uint64_t value; RandBytes(&value, sizeof(value)); return value; } -void DefaultRandom::InsecureRandBytes(void* data, size_t len) { +void DefaultQuicheRandom::InsecureRandBytes(void* data, size_t len) { while (len >= sizeof(uint64_t)) { uint64_t random_bytes64 = Xoshiro256PlusPlus(); memcpy(data, &random_bytes64, sizeof(uint64_t)); @@ -86,14 +79,15 @@ } } -uint64_t DefaultRandom::InsecureRandUint64() { return Xoshiro256PlusPlus(); } +uint64_t DefaultQuicheRandom::InsecureRandUint64() { + return Xoshiro256PlusPlus(); +} } // namespace // static -QuicRandom* QuicRandom::GetInstance() { - static DefaultRandom* random = new DefaultRandom(); +QuicheRandom* QuicheRandom::GetInstance() { + static DefaultQuicheRandom* random = new DefaultQuicheRandom(); return random; } - -} // namespace quic +} // namespace quiche
diff --git a/quiche/common/quiche_random.h b/quiche/common/quiche_random.h new file mode 100644 index 0000000..7ee2995 --- /dev/null +++ b/quiche/common/quiche_random.h
@@ -0,0 +1,37 @@ +#ifndef QUICHE_COMMON_QUICHE_RANDOM_H_ +#define QUICHE_COMMON_QUICHE_RANDOM_H_ + +#include <cstddef> +#include <cstdint> + +#include "quiche/common/platform/api/quiche_export.h" + +namespace quiche { + +// The interface for a random number generator. +class QUICHE_EXPORT_PRIVATE QuicheRandom { + public: + virtual ~QuicheRandom() {} + + // Returns the default random number generator, which is cryptographically + // secure and thread-safe. + static QuicheRandom* GetInstance(); + + // Generates |len| random bytes in the |data| buffer. + virtual void RandBytes(void* data, size_t len) = 0; + + // Returns a random number in the range [0, kuint64max]. + virtual uint64_t RandUint64() = 0; + + // Generates |len| random bytes in the |data| buffer. This MUST NOT be used + // for any application that requires cryptographically-secure randomness. + virtual void InsecureRandBytes(void* data, size_t len) = 0; + + // Returns a random number in the range [0, kuint64max]. This MUST NOT be used + // for any application that requires cryptographically-secure randomness. + virtual uint64_t InsecureRandUint64() = 0; +}; + +} // namespace quiche + +#endif // QUICHE_COMMON_QUICHE_RANDOM_H_
diff --git a/quiche/common/quiche_random_test.cc b/quiche/common/quiche_random_test.cc new file mode 100644 index 0000000..2f1aacc --- /dev/null +++ b/quiche/common/quiche_random_test.cc
@@ -0,0 +1,47 @@ +#include "quiche/common/quiche_random.h" + +#include "quiche/common/platform/api/quiche_test.h" + +namespace quiche { +namespace { + +TEST(QuicheRandom, RandBytes) { + unsigned char buf1[16]; + unsigned char buf2[16]; + memset(buf1, 0xaf, sizeof(buf1)); + memset(buf2, 0xaf, sizeof(buf2)); + ASSERT_EQ(0, memcmp(buf1, buf2, sizeof(buf1))); + + auto rng = QuicheRandom::GetInstance(); + rng->RandBytes(buf1, sizeof(buf1)); + EXPECT_NE(0, memcmp(buf1, buf2, sizeof(buf1))); +} + +TEST(QuicheRandom, RandUint64) { + auto rng = QuicheRandom::GetInstance(); + uint64_t value1 = rng->RandUint64(); + uint64_t value2 = rng->RandUint64(); + EXPECT_NE(value1, value2); +} + +TEST(QuicheRandom, InsecureRandBytes) { + unsigned char buf1[16]; + unsigned char buf2[16]; + memset(buf1, 0xaf, sizeof(buf1)); + memset(buf2, 0xaf, sizeof(buf2)); + ASSERT_EQ(0, memcmp(buf1, buf2, sizeof(buf1))); + + auto rng = QuicheRandom::GetInstance(); + rng->InsecureRandBytes(buf1, sizeof(buf1)); + EXPECT_NE(0, memcmp(buf1, buf2, sizeof(buf1))); +} + +TEST(QuicheRandom, InsecureRandUint64) { + auto rng = QuicheRandom::GetInstance(); + uint64_t value1 = rng->InsecureRandUint64(); + uint64_t value2 = rng->InsecureRandUint64(); + EXPECT_NE(value1, value2); +} + +} // namespace +} // namespace quiche
diff --git a/quiche/quic/core/crypto/crypto_secret_boxer.h b/quiche/quic/core/crypto/crypto_secret_boxer.h index e1927f2..5d334c3 100644 --- a/quiche/quic/core/crypto/crypto_secret_boxer.h +++ b/quiche/quic/core/crypto/crypto_secret_boxer.h
@@ -11,13 +11,12 @@ #include <vector> #include "absl/strings/string_view.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/platform/api/quic_export.h" #include "quiche/quic/platform/api/quic_mutex.h" namespace quic { -class QuicRandom; - // CryptoSecretBoxer encrypts small chunks of plaintext (called 'boxing') and // then, later, can authenticate+decrypt the resulting boxes. This object is // thread-safe.
diff --git a/quiche/quic/core/crypto/crypto_utils.h b/quiche/quic/core/crypto/crypto_utils.h index 87bf309..adc818d 100644 --- a/quiche/quic/core/crypto/crypto_utils.h +++ b/quiche/quic/core/crypto/crypto_utils.h
@@ -18,6 +18,7 @@ #include "quiche/quic/core/crypto/crypto_handshake_message.h" #include "quiche/quic/core/crypto/crypto_protocol.h" #include "quiche/quic/core/crypto/quic_crypter.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/quic_connection_id.h" #include "quiche/quic/core/quic_packets.h" #include "quiche/quic/core/quic_time.h" @@ -26,8 +27,6 @@ namespace quic { -class QuicRandom; - class QUIC_EXPORT_PRIVATE CryptoUtils { public: CryptoUtils() = delete;
diff --git a/quiche/quic/core/crypto/curve25519_key_exchange.h b/quiche/quic/core/crypto/curve25519_key_exchange.h index 34a49f9..b6e06f3 100644 --- a/quiche/quic/core/crypto/curve25519_key_exchange.h +++ b/quiche/quic/core/crypto/curve25519_key_exchange.h
@@ -10,12 +10,11 @@ #include "absl/strings/string_view.h" #include "quiche/quic/core/crypto/key_exchange.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/platform/api/quic_export.h" namespace quic { -class QuicRandom; - // Curve25519KeyExchange implements a SynchronousKeyExchange using // elliptic-curve Diffie-Hellman on curve25519. See http://cr.yp.to/ecdh.html class QUIC_EXPORT_PRIVATE Curve25519KeyExchange
diff --git a/quiche/quic/core/crypto/key_exchange.h b/quiche/quic/core/crypto/key_exchange.h index a681bf5..573b289 100644 --- a/quiche/quic/core/crypto/key_exchange.h +++ b/quiche/quic/core/crypto/key_exchange.h
@@ -10,12 +10,11 @@ #include "absl/strings/string_view.h" #include "quiche/quic/core/crypto/crypto_protocol.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/platform/api/quic_export.h" namespace quic { -class QuicRandom; - // Interface for a Diffie-Hellman key exchange with an asynchronous interface. // This allows for implementations which hold the private key locally, as well // as ones which make an RPC to an external key-exchange service.
diff --git a/quiche/quic/core/crypto/quic_crypto_client_config.h b/quiche/quic/core/crypto/quic_crypto_client_config.h index f44aac1..546f4d1 100644 --- a/quiche/quic/core/crypto/quic_crypto_client_config.h +++ b/quiche/quic/core/crypto/quic_crypto_client_config.h
@@ -17,6 +17,7 @@ #include "quiche/quic/core/crypto/client_proof_source.h" #include "quiche/quic/core/crypto/crypto_handshake.h" #include "quiche/quic/core/crypto/crypto_protocol.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/crypto/transport_parameters.h" #include "quiche/quic/core/quic_packets.h" #include "quiche/quic/core/quic_server_id.h" @@ -28,7 +29,6 @@ class CryptoHandshakeMessage; class ProofVerifier; class ProofVerifyDetails; -class QuicRandom; // QuicResumptionState stores the state a client needs for performing connection // resumption.
diff --git a/quiche/quic/core/crypto/quic_crypto_server_config.h b/quiche/quic/core/crypto/quic_crypto_server_config.h index f114546..77be1f4 100644 --- a/quiche/quic/core/crypto/quic_crypto_server_config.h +++ b/quiche/quic/core/crypto/quic_crypto_server_config.h
@@ -22,6 +22,7 @@ #include "quiche/quic/core/crypto/proof_source.h" #include "quiche/quic/core/crypto/quic_compressed_certs_cache.h" #include "quiche/quic/core/crypto/quic_crypto_proof.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/proto/cached_network_parameters_proto.h" #include "quiche/quic/core/proto/source_address_token_proto.h" #include "quiche/quic/core/quic_time.h" @@ -35,7 +36,6 @@ class CryptoHandshakeMessage; class ProofSource; class QuicClock; -class QuicRandom; class QuicServerConfigProtobuf; struct QuicSignedServerConfig;
diff --git a/quiche/quic/core/crypto/quic_random.h b/quiche/quic/core/crypto/quic_random.h index 47722cb..9f7c216 100644 --- a/quiche/quic/core/crypto/quic_random.h +++ b/quiche/quic/core/crypto/quic_random.h
@@ -5,36 +5,11 @@ #ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_RANDOM_H_ #define QUICHE_QUIC_CORE_CRYPTO_QUIC_RANDOM_H_ -#include <cstddef> -#include <cstdint> - -#include "quiche/quic/platform/api/quic_export.h" +#include "quiche/common/quiche_random.h" namespace quic { -// The interface for a random number generator. -class QUIC_EXPORT_PRIVATE QuicRandom { - public: - virtual ~QuicRandom() {} - - // Returns the default random number generator, which is cryptographically - // secure and thread-safe. - static QuicRandom* GetInstance(); - - // Generates |len| random bytes in the |data| buffer. - virtual void RandBytes(void* data, size_t len) = 0; - - // Returns a random number in the range [0, kuint64max]. - virtual uint64_t RandUint64() = 0; - - // Generates |len| random bytes in the |data| buffer. This MUST NOT be used - // for any application that requires cryptographically-secure randomness. - virtual void InsecureRandBytes(void* data, size_t len) = 0; - - // Returns a random number in the range [0, kuint64max]. This MUST NOT be used - // for any application that requires cryptographically-secure randomness. - virtual uint64_t InsecureRandUint64() = 0; -}; +using QuicRandom = quiche::QuicheRandom; } // namespace quic
diff --git a/quiche/quic/core/crypto/quic_random_test.cc b/quiche/quic/core/crypto/quic_random_test.cc deleted file mode 100644 index 2a43c29..0000000 --- a/quiche/quic/core/crypto/quic_random_test.cc +++ /dev/null
@@ -1,53 +0,0 @@ -// 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. - -#include "quiche/quic/core/crypto/quic_random.h" - -#include "quiche/quic/platform/api/quic_test.h" - -namespace quic { -namespace test { - -class QuicRandomTest : public QuicTest {}; - -TEST_F(QuicRandomTest, RandBytes) { - unsigned char buf1[16]; - unsigned char buf2[16]; - memset(buf1, 0xaf, sizeof(buf1)); - memset(buf2, 0xaf, sizeof(buf2)); - ASSERT_EQ(0, memcmp(buf1, buf2, sizeof(buf1))); - - QuicRandom* rng = QuicRandom::GetInstance(); - rng->RandBytes(buf1, sizeof(buf1)); - EXPECT_NE(0, memcmp(buf1, buf2, sizeof(buf1))); -} - -TEST_F(QuicRandomTest, RandUint64) { - QuicRandom* rng = QuicRandom::GetInstance(); - uint64_t value1 = rng->RandUint64(); - uint64_t value2 = rng->RandUint64(); - EXPECT_NE(value1, value2); -} - -TEST_F(QuicRandomTest, InsecureRandBytes) { - unsigned char buf1[16]; - unsigned char buf2[16]; - memset(buf1, 0xaf, sizeof(buf1)); - memset(buf2, 0xaf, sizeof(buf2)); - ASSERT_EQ(0, memcmp(buf1, buf2, sizeof(buf1))); - - QuicRandom* rng = QuicRandom::GetInstance(); - rng->InsecureRandBytes(buf1, sizeof(buf1)); - EXPECT_NE(0, memcmp(buf1, buf2, sizeof(buf1))); -} - -TEST_F(QuicRandomTest, InsecureRandUint64) { - QuicRandom* rng = QuicRandom::GetInstance(); - uint64_t value1 = rng->InsecureRandUint64(); - uint64_t value2 = rng->InsecureRandUint64(); - EXPECT_NE(value1, value2); -} - -} // namespace test -} // namespace quic
diff --git a/quiche/quic/core/quic_connection.h b/quiche/quic/core/quic_connection.h index 0e4c956..578de98 100644 --- a/quiche/quic/core/quic_connection.h +++ b/quiche/quic/core/quic_connection.h
@@ -29,6 +29,7 @@ #include "quiche/quic/core/congestion_control/rtt_stats.h" #include "quiche/quic/core/crypto/quic_decrypter.h" #include "quiche/quic/core/crypto/quic_encrypter.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/crypto/transport_parameters.h" #include "quiche/quic/core/frames/quic_ack_frequency_frame.h" #include "quiche/quic/core/frames/quic_max_streams_frame.h" @@ -67,7 +68,6 @@ class QuicClock; class QuicConfig; class QuicConnection; -class QuicRandom; namespace test { class QuicConnectionPeer;
diff --git a/quiche/quic/core/quic_data_writer.h b/quiche/quic/core/quic_data_writer.h index c96b3b7..cd2486a 100644 --- a/quiche/quic/core/quic_data_writer.h +++ b/quiche/quic/core/quic_data_writer.h
@@ -9,6 +9,7 @@ #include <cstdint> #include "absl/strings/string_view.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/quic_types.h" #include "quiche/quic/platform/api/quic_export.h" #include "quiche/common/quiche_data_writer.h" @@ -16,8 +17,6 @@ namespace quic { -class QuicRandom; - // This class provides facilities for packing QUIC data. // // The QuicDataWriter supports appending primitive values (int, string, etc)
diff --git a/quiche/quic/test_tools/crypto_test_utils.h b/quiche/quic/test_tools/crypto_test_utils.h index d21e897..d650706 100644 --- a/quiche/quic/test_tools/crypto_test_utils.h +++ b/quiche/quic/test_tools/crypto_test_utils.h
@@ -14,6 +14,7 @@ #include "absl/strings/string_view.h" #include "openssl/evp.h" #include "quiche/quic/core/crypto/crypto_framer.h" +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/quic_framer.h" #include "quiche/quic/core/quic_packets.h" #include "quiche/quic/test_tools/quic_test_utils.h" @@ -29,7 +30,6 @@ class QuicCryptoServerConfig; class QuicCryptoServerStreamBase; class QuicCryptoStream; -class QuicRandom; class QuicServerId; namespace test {
diff --git a/quiche/quic/test_tools/quic_packet_creator_peer.h b/quiche/quic/test_tools/quic_packet_creator_peer.h index 4607bcd..b7833a4 100644 --- a/quiche/quic/test_tools/quic_packet_creator_peer.h +++ b/quiche/quic/test_tools/quic_packet_creator_peer.h
@@ -5,12 +5,12 @@ #ifndef QUICHE_QUIC_TEST_TOOLS_QUIC_PACKET_CREATOR_PEER_H_ #define QUICHE_QUIC_TEST_TOOLS_QUIC_PACKET_CREATOR_PEER_H_ +#include "quiche/quic/core/crypto/quic_random.h" #include "quiche/quic/core/quic_packets.h" namespace quic { class QuicFramer; class QuicPacketCreator; -class QuicRandom; namespace test {