Botan 1.10.17
Botan::Entropy_Accumulator Class Referenceabstract

#include <entropy_src.h>

Inheritance diagram for Botan::Entropy_Accumulator:
Botan::Entropy_Accumulator_BufferedComputation

Public Member Functions

template<typename T>
void add (const T &v, double entropy_bits_per_byte)
void add (const void *bytes, size_t length, double entropy_bits_per_byte)
size_t bits_collected () const
size_t desired_remaining_bits () const
 Entropy_Accumulator (size_t goal)
MemoryRegion< byte > & get_io_buffer (size_t size)
bool polling_goal_achieved () const
virtual ~Entropy_Accumulator ()

Detailed Description

Class used to accumulate the poll results of EntropySources

Definition at line 19 of file entropy_src.h.

Constructor & Destructor Documentation

◆ Entropy_Accumulator()

Botan::Entropy_Accumulator::Entropy_Accumulator ( size_t goal)
inline

Initialize an Entropy_Accumulator

Parameters
goalis how many bits we would like to collect

Definition at line 26 of file entropy_src.h.

26 :
27 entropy_goal(goal), collected_bits(0) {}

Referenced by Botan::Entropy_Accumulator_BufferedComputation::Entropy_Accumulator_BufferedComputation().

◆ ~Entropy_Accumulator()

virtual Botan::Entropy_Accumulator::~Entropy_Accumulator ( )
inlinevirtual

Definition at line 29 of file entropy_src.h.

29{}

Member Function Documentation

◆ add() [1/2]

template<typename T>
void Botan::Entropy_Accumulator::add ( const T & v,
double entropy_bits_per_byte )
inline

Add entropy to the accumulator

Parameters
vis some value
entropy_bits_per_byteis a best guess at how much entropy per byte is in this input

Definition at line 83 of file entropy_src.h.

84 {
85 add(&v, sizeof(T), entropy_bits_per_byte);
86 }
void add(const void *bytes, size_t length, double entropy_bits_per_byte)
Definition entropy_src.h:70

References add().

◆ add() [2/2]

void Botan::Entropy_Accumulator::add ( const void * bytes,
size_t length,
double entropy_bits_per_byte )
inline

Add entropy to the accumulator

Parameters
bytesthe input bytes
lengthspecifies how many bytes the input is
entropy_bits_per_byteis a best guess at how much entropy per byte is in this input

Definition at line 70 of file entropy_src.h.

71 {
72 add_bytes(reinterpret_cast<const byte*>(bytes), length);
73 collected_bits += entropy_bits_per_byte * length;
74 }

Referenced by add(), Botan::Device_EntropySource::poll(), Botan::EGD_EntropySource::poll(), Botan::FTW_EntropySource::poll(), Botan::High_Resolution_Timestamp::poll(), Botan::Intel_Rdrand::poll(), Botan::Unix_EntropySource::poll(), Botan::Win32_CAPI_EntropySource::poll(), and Botan::Win32_EntropySource::poll().

◆ bits_collected()

size_t Botan::Entropy_Accumulator::bits_collected ( ) const
inline
Returns
number of bits collected so far

Definition at line 44 of file entropy_src.h.

45 { return static_cast<size_t>(collected_bits); }

Referenced by Botan::HMAC_RNG::reseed(), and Botan::Randpool::reseed().

◆ desired_remaining_bits()

size_t Botan::Entropy_Accumulator::desired_remaining_bits ( ) const
inline
Returns
how many bits we need to reach our polling goal

Definition at line 56 of file entropy_src.h.

57 {
58 if(collected_bits >= entropy_goal)
59 return 0;
60 return static_cast<size_t>(entropy_goal - collected_bits);
61 }

Referenced by Botan::Device_EntropySource::poll(), and Botan::EGD_EntropySource::poll().

◆ get_io_buffer()

MemoryRegion< byte > & Botan::Entropy_Accumulator::get_io_buffer ( size_t size)
inline

Get a cached I/O buffer (purely for minimizing allocation overhead to polls)

Parameters
sizerequested size for the I/O buffer
Returns
cached I/O buffer for repeated polls

Definition at line 38 of file entropy_src.h.

39 { io_buffer.resize(size); return io_buffer; }

References Botan::MemoryRegion< T >::resize().

Referenced by Botan::Device_EntropySource::poll(), Botan::EGD_EntropySource::poll(), Botan::FTW_EntropySource::poll(), Botan::Unix_EntropySource::poll(), and Botan::Win32_CAPI_EntropySource::poll().

◆ polling_goal_achieved()

bool Botan::Entropy_Accumulator::polling_goal_achieved ( ) const
inline
Returns
if our polling goal has been achieved

Definition at line 50 of file entropy_src.h.

51 { return (collected_bits >= entropy_goal); }

Referenced by Botan::FTW_EntropySource::poll(), Botan::Unix_EntropySource::poll(), Botan::Win32_EntropySource::poll(), Botan::HMAC_RNG::reseed(), and Botan::Randpool::reseed().


The documentation for this class was generated from the following file: