Add non-determinism to TestTicketCrypter
This is effectively the same as cl/335958328, but for the TicketCrypter used
in chromium.
PiperOrigin-RevId: 339294711
Change-Id: Ic90aff0c03aa206b3aa096289fdc5abea7267a1b
diff --git a/quic/test_tools/test_ticket_crypter.cc b/quic/test_tools/test_ticket_crypter.cc
index 87ff202..40f28d2 100644
--- a/quic/test_tools/test_ticket_crypter.cc
+++ b/quic/test_tools/test_ticket_crypter.cc
@@ -7,6 +7,7 @@
#include <cstring>
#include "absl/base/macros.h"
+#include "net/third_party/quiche/src/quic/core/crypto/quic_random.h"
namespace quic {
namespace test {
@@ -25,22 +26,29 @@
} // namespace
+TestTicketCrypter::TestTicketCrypter()
+ : ticket_prefix_(ABSL_ARRAYSIZE(kTicketPrefix) + 16) {
+ memcpy(ticket_prefix_.data(), kTicketPrefix, ABSL_ARRAYSIZE(kTicketPrefix));
+ QuicRandom::GetInstance()->RandBytes(
+ ticket_prefix_.data() + ABSL_ARRAYSIZE(kTicketPrefix), 16);
+}
+
size_t TestTicketCrypter::MaxOverhead() {
- return ABSL_ARRAYSIZE(kTicketPrefix);
+ return ticket_prefix_.size();
}
std::vector<uint8_t> TestTicketCrypter::Encrypt(absl::string_view in) {
- size_t prefix_len = ABSL_ARRAYSIZE(kTicketPrefix);
+ size_t prefix_len = ticket_prefix_.size();
std::vector<uint8_t> out(prefix_len + in.size());
- memcpy(out.data(), kTicketPrefix, prefix_len);
+ memcpy(out.data(), ticket_prefix_.data(), prefix_len);
memcpy(out.data() + prefix_len, in.data(), in.size());
return out;
}
std::vector<uint8_t> TestTicketCrypter::Decrypt(absl::string_view in) {
- size_t prefix_len = ABSL_ARRAYSIZE(kTicketPrefix);
+ size_t prefix_len = ticket_prefix_.size();
if (fail_decrypt_ || in.size() < prefix_len ||
- memcmp(kTicketPrefix, in.data(), prefix_len) != 0) {
+ memcmp(ticket_prefix_.data(), in.data(), prefix_len) != 0) {
return std::vector<uint8_t>();
}
return std::vector<uint8_t>(in.begin() + prefix_len, in.end());