7 #ifndef BOTAN_STATEFUL_RNG_H_
8 #define BOTAN_STATEFUL_RNG_H_
10 #include <botan/rng.h>
37 size_t reseed_interval) :
38 m_underlying_rng(&rng),
39 m_entropy_sources(&entropy_sources),
40 m_reseed_interval(reseed_interval)
50 m_underlying_rng(&rng),
51 m_reseed_interval(reseed_interval)
60 m_entropy_sources(&entropy_sources),
61 m_reseed_interval(reseed_interval)
74 void initialize_with(
const uint8_t input[],
size_t length);
76 bool is_seeded() const override
final;
78 bool accepts_input() const override final {
return true; }
86 size_t poll_bits = BOTAN_RNG_RESEED_POLL_BITS) override
final;
92 void randomize_with_ts_input(uint8_t output[],
size_t output_len) override final;
100 size_t poll_bits = BOTAN_RNG_RESEED_POLL_BITS,
101 std::chrono::milliseconds poll_timeout = BOTAN_RNG_RESEED_DEFAULT_TIMEOUT) override;
106 virtual
size_t security_level() const = 0;
118 virtual
size_t max_number_of_bytes_per_request() const = 0;
120 size_t reseed_interval()
const {
return m_reseed_interval; }
122 void clear()
override;
140 const size_t m_reseed_interval;
141 uint32_t m_last_pid = 0;
148 size_t m_reseed_counter = 0;
int(* final)(unsigned char *, CTX *)
#define BOTAN_PUBLIC_API(maj, min)
Stateful_RNG(RandomNumberGenerator &rng, size_t reseed_interval)
Stateful_RNG(Entropy_Sources &entropy_sources, size_t reseed_interval)
void reset_reseed_counter()
Stateful_RNG(RandomNumberGenerator &rng, Entropy_Sources &entropy_sources, size_t reseed_interval)