9#include <botan/exceptn.h>
10#include <botan/internal/loadstor.h>
12#if defined(BOTAN_HAS_ENTROPY_SOURCE)
13 #include <botan/entropy_src.h>
16#if defined(BOTAN_HAS_SYSTEM_RNG)
17 #include <botan/system_rng.h>
18#elif defined(BOTAN_HAS_OS_UTILS)
19 #include <botan/internal/os_utils.h>
28 std::array<uint8_t, 16> additional_input = {0};
30#if defined(BOTAN_HAS_SYSTEM_RNG)
33 constexpr size_t written = additional_input.size();
34#elif defined(BOTAN_HAS_OS_UTILS)
39 store_le(std::span{additional_input}.first<8>(), clock);
40 store_le(std::span{additional_input}.subspan<8, 4>(), pid);
41 const size_t written = 8 + (pid != 0) ? 4 : 0;
44 constexpr size_t written = 0;
55#if defined(BOTAN_HAS_ENTROPY_SOURCE)
56 return srcs.
poll(*
this, poll_bits);
71void Null_RNG::fill_bytes_with_input(std::span<uint8_t> output, std::span<const uint8_t> ) {
size_t poll(RandomNumberGenerator &rng, size_t bits, std::chrono::milliseconds timeout)
void randomize(std::span< uint8_t > output)
virtual bool accepts_input() const =0
RandomNumberGenerator()=default
void add_entropy(std::span< const uint8_t > input)
virtual size_t reseed_from_sources(Entropy_Sources &srcs, size_t poll_bits=RandomNumberGenerator::DefaultPollBits)
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
uint64_t BOTAN_TEST_API get_high_resolution_clock()
uint32_t BOTAN_TEST_API get_process_id()
RandomNumberGenerator & system_rng()
constexpr auto store_le(ParamTs &&... params)