summaryrefslogtreecommitdiff
path: root/chromium/net/third_party/quiche/src/quic/core/crypto/quic_random.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/net/third_party/quiche/src/quic/core/crypto/quic_random.cc')
-rw-r--r--chromium/net/third_party/quiche/src/quic/core/crypto/quic_random.cc100
1 files changed, 0 insertions, 100 deletions
diff --git a/chromium/net/third_party/quiche/src/quic/core/crypto/quic_random.cc b/chromium/net/third_party/quiche/src/quic/core/crypto/quic_random.cc
deleted file mode 100644
index d3190c626e7..00000000000
--- a/chromium/net/third_party/quiche/src/quic/core/crypto/quic_random.cc
+++ /dev/null
@@ -1,100 +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 "quic/core/crypto/quic_random.h"
-#include <cstdint>
-#include <cstring>
-
-#include "third_party/boringssl/src/include/openssl/rand.h"
-#include "quic/platform/api/quic_bug_tracker.h"
-#include "quic/platform/api/quic_logging.h"
-#include "common/platform/api/quiche_logging.h"
-
-namespace quic {
-
-namespace {
-
-// Insecure randomness in DefaultRandom uses an implementation of
-// xoshiro256++ 1.0 based on code in the public domain from
-// <http://prng.di.unimi.it/xoshiro256plusplus.c>.
-
-inline uint64_t Xoshiro256InitializeRngStateMember() {
- uint64_t result;
- RAND_bytes(reinterpret_cast<uint8_t*>(&result), sizeof(result));
- return result;
-}
-
-inline uint64_t Xoshiro256PlusPlusRotLeft(uint64_t x, int k) {
- return (x << k) | (x >> (64 - k));
-}
-
-uint64_t Xoshiro256PlusPlus() {
- static thread_local uint64_t rng_state[4] = {
- Xoshiro256InitializeRngStateMember(),
- Xoshiro256InitializeRngStateMember(),
- Xoshiro256InitializeRngStateMember(),
- Xoshiro256InitializeRngStateMember()};
- const uint64_t result =
- Xoshiro256PlusPlusRotLeft(rng_state[0] + rng_state[3], 23) + rng_state[0];
- const uint64_t t = rng_state[1] << 17;
- rng_state[2] ^= rng_state[0];
- rng_state[3] ^= rng_state[1];
- rng_state[1] ^= rng_state[2];
- rng_state[0] ^= rng_state[3];
- rng_state[2] ^= t;
- rng_state[3] = Xoshiro256PlusPlusRotLeft(rng_state[3], 45);
- return result;
-}
-
-class DefaultRandom : public QuicRandom {
- public:
- DefaultRandom() {}
- DefaultRandom(const DefaultRandom&) = delete;
- DefaultRandom& operator=(const DefaultRandom&) = delete;
- ~DefaultRandom() override {}
-
- // QuicRandom implementation
- void RandBytes(void* data, size_t len) override;
- uint64_t RandUint64() override;
- void InsecureRandBytes(void* data, size_t len) override;
- uint64_t InsecureRandUint64() override;
-};
-
-void DefaultRandom::RandBytes(void* data, size_t len) {
- RAND_bytes(reinterpret_cast<uint8_t*>(data), len);
-}
-
-uint64_t DefaultRandom::RandUint64() {
- uint64_t value;
- RandBytes(&value, sizeof(value));
- return value;
-}
-
-void DefaultRandom::InsecureRandBytes(void* data, size_t len) {
- while (len >= sizeof(uint64_t)) {
- uint64_t random_bytes64 = Xoshiro256PlusPlus();
- memcpy(data, &random_bytes64, sizeof(uint64_t));
- data = reinterpret_cast<char*>(data) + sizeof(uint64_t);
- len -= sizeof(uint64_t);
- }
- if (len > 0) {
- QUICHE_DCHECK_LT(len, sizeof(uint64_t));
- uint64_t random_bytes64 = Xoshiro256PlusPlus();
- memcpy(data, &random_bytes64, len);
- }
-}
-
-uint64_t DefaultRandom::InsecureRandUint64() {
- return Xoshiro256PlusPlus();
-}
-
-} // namespace
-
-// static
-QuicRandom* QuicRandom::GetInstance() {
- static DefaultRandom* random = new DefaultRandom();
- return random;
-}
-
-} // namespace quic