9#ifndef BOTAN_RANDOM_NUMBER_GENERATOR_H_ 
   10#define BOTAN_RANDOM_NUMBER_GENERATOR_H_ 
   12#include <botan/concepts.h> 
   13#include <botan/exceptn.h> 
   14#include <botan/secmem.h> 
  101      template <
typename T>
 
  102         requires std::is_standard_layout_v<T> && std::is_trivial_v<T>
 
  104         this->
add_entropy(
reinterpret_cast<const uint8_t*
>(&t), 
sizeof(T));
 
 
  145      void randomize_with_ts_input(std::span<uint8_t> output);
 
  154      virtual std::string 
name() 
const = 0;
 
  209      template <concepts::resizable_
byte_buffer T>
 
  223      template <concepts::resizable_
byte_buffer T = secure_vector<u
int8_t>>
 
  224         requires std::default_initializable<T>
 
  234      template <
size_t bytes>
 
  236         std::array<uint8_t, bytes> result{};
 
 
 
  311      std::string 
name()
 const override { 
return "Null_RNG"; }
 
  314      void fill_bytes_with_input(std::span<uint8_t> output, std::span<const uint8_t> ) 
override;
 
 
#define BOTAN_PUBLIC_API(maj, min)
 
bool accepts_input() const override
 
std::string name() const override
 
bool is_seeded() const override
 
void randomize(std::span< uint8_t > output)
 
RandomNumberGenerator & operator=(RandomNumberGenerator &&rng)=default
 
std::array< uint8_t, bytes > random_array()
 
virtual bool accepts_input() const =0
 
T random_vec(size_t bytes)
 
RandomNumberGenerator(RandomNumberGenerator &&rng)=default
 
virtual ~RandomNumberGenerator()=default
 
RandomNumberGenerator()=default
 
void add_entropy(std::span< const uint8_t > input)
 
void randomize(uint8_t output[], size_t length)
 
uint8_t next_nonzero_byte()
 
static constexpr size_t DefaultPollBits
 
void random_vec(T &v, size_t bytes)
 
RandomNumberGenerator & operator=(const RandomNumberGenerator &rng)=delete
 
static constexpr size_t DefaultReseedInterval
 
static constexpr auto DefaultPollTimeout
 
virtual bool is_seeded() const =0
 
void randomize_with_ts_input(uint8_t output[], size_t output_len)
 
virtual size_t reseed(Entropy_Sources &srcs, size_t poll_bits=RandomNumberGenerator::DefaultPollBits, std::chrono::milliseconds poll_timeout=RandomNumberGenerator::DefaultPollTimeout)
 
void add_entropy(const uint8_t input[], size_t length)
 
virtual std::string name() const =0
 
virtual void reseed_from_rng(RandomNumberGenerator &rng, size_t poll_bits=RandomNumberGenerator::DefaultPollBits)
 
void randomize_with_ts_input(std::span< uint8_t > output)
 
void random_vec(std::span< uint8_t > v)
 
virtual void fill_bytes_with_input(std::span< uint8_t > output, std::span< const uint8_t > input)=0
 
void randomize_with_input(std::span< uint8_t > output, std::span< const uint8_t > input)
 
RandomNumberGenerator(const RandomNumberGenerator &rng)=delete
 
void add_entropy_T(const T &t)
 
void randomize_with_input(uint8_t output[], size_t output_len, const uint8_t input[], size_t input_len)
 
RandomNumberGenerator RNG