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 {