7#ifndef BOTAN_STATEFUL_RNG_H_
8#define BOTAN_STATEFUL_RNG_H_
10#include <botan/mutex.h>
38 m_underlying_rng(&rng), m_entropy_sources(&entropy_sources), m_reseed_interval(
reseed_interval) {}
59 m_entropy_sources(&entropy_sources), m_reseed_interval(
reseed_interval) {}
71 void initialize_with(std::span<const uint8_t> input);
85 bool is_seeded() const final;
153 virtual
void generate_output(std::span<uint8_t> output, std::span<const uint8_t> input) = 0;
159 virtual
void update(std::span<const uint8_t> input) = 0;
167 void generate_batched_output(std::span<uint8_t> output, std::span<const uint8_t> input);
169 void fill_bytes_with_input(std::span<uint8_t> output, std::span<const uint8_t> input) final;
171 void reset_reseed_counter();
181 const
size_t m_reseed_interval;
182 uint32_t m_last_pid = 0;
189 size_t m_reseed_counter = 0;
#define BOTAN_PUBLIC_API(maj, min)
RandomNumberGenerator()=default
static constexpr size_t DefaultPollBits
size_t reseed_interval() const
virtual size_t security_level() const =0
virtual void clear_state()=0
Stateful_RNG(RandomNumberGenerator &rng, size_t reseed_interval)
Stateful_RNG(RandomNumberGenerator &rng, Entropy_Sources &entropy_sources, size_t reseed_interval)
void initialize_with(const uint8_t input[], size_t length)
virtual void generate_output(std::span< uint8_t > output, std::span< const uint8_t > input)=0
Stateful_RNG(Entropy_Sources &entropy_sources, size_t reseed_interval)
bool accepts_input() const final
virtual size_t max_number_of_bytes_per_request() const =0
virtual void update(std::span< const uint8_t > input)=0
noop_mutex recursive_mutex_type