36 m_underlying_rng(&rng), m_entropy_sources(&entropy_sources), m_reseed_interval(reseed_interval) {}
45 m_underlying_rng(&rng), m_reseed_interval(reseed_interval) {}
53 m_entropy_sources(&entropy_sources), m_reseed_interval(reseed_interval) {}
65 void initialize_with(std::span<const uint8_t> input);
69 bool is_seeded() const
final;
71 bool accepts_input() const
final {
return true; }
78 void reseed_from_rng(
RandomNumberGenerator& rng,
size_t poll_bits = RandomNumberGenerator::DefaultPollBits)
final;
86 size_t poll_bits = RandomNumberGenerator::DefaultPollBits,
87 std::chrono::milliseconds poll_timeout = RandomNumberGenerator::DefaultPollTimeout)
override;
113 virtual
void generate_output(std::span<uint8_t> output, std::span<const uint8_t> input) = 0;
115 virtual
void update(std::span<const uint8_t> input) = 0;
117 virtual
void clear_state() = 0;
120 void generate_batched_output(std::span<uint8_t> output, std::span<const uint8_t> input);
122 void fill_bytes_with_input(std::span<uint8_t> output, std::span<const uint8_t> input)
final;
124 void reset_reseed_counter();
134 const
size_t m_reseed_interval;
135 uint32_t m_last_pid = 0;
142 size_t m_reseed_counter = 0;