blob: 79e09534be725edc6bcab53c6c51087d2d1be25b [file] [log] [blame]
QUICHE teama6ef0a62019-03-07 20:34:33 -05001// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef QUICHE_QUIC_CORE_CRYPTO_QUIC_RANDOM_H_
6#define QUICHE_QUIC_CORE_CRYPTO_QUIC_RANDOM_H_
7
8#include <cstddef>
9#include <cstdint>
10
11#include "net/third_party/quiche/src/quic/platform/api/quic_export.h"
12
13namespace quic {
14
15// The interface for a random number generator.
16class QUIC_EXPORT_PRIVATE QuicRandom {
17 public:
18 virtual ~QuicRandom() {}
19
20 // Returns the default random number generator, which is cryptographically
21 // secure and thread-safe.
22 static QuicRandom* GetInstance();
23
24 // Generates |len| random bytes in the |data| buffer.
25 virtual void RandBytes(void* data, size_t len) = 0;
26
27 // Returns a random number in the range [0, kuint64max].
28 virtual uint64_t RandUint64() = 0;
29};
30
31} // namespace quic
32
33#endif // QUICHE_QUIC_CORE_CRYPTO_QUIC_RANDOM_H_