Botan  1.10.16
Public Member Functions | Static Public Member Functions | List of all members
Botan::RandomNumberGenerator Class Referenceabstract

#include <rng.h>

Inheritance diagram for Botan::RandomNumberGenerator:
Botan::ANSI_X931_RNG Botan::AutoSeeded_RNG Botan::HMAC_RNG Botan::Null_RNG Botan::Randpool

Public Member Functions

virtual void add_entropy (const byte in[], size_t length)=0
 
virtual void add_entropy_source (EntropySource *source)=0
 
virtual void clear ()=0
 
virtual bool is_seeded () const
 
virtual std::string name () const =0
 
byte next_byte ()
 
SecureVector< byterandom_vec (size_t bytes)
 
virtual void randomize (byte output[], size_t length)=0
 
 RandomNumberGenerator ()
 
virtual void reseed (size_t bits_to_collect)=0
 
virtual ~RandomNumberGenerator ()
 

Static Public Member Functions

static RandomNumberGeneratormake_rng ()
 

Detailed Description

This class represents a random number (RNG) generator object.

Definition at line 20 of file rng.h.

Constructor & Destructor Documentation

◆ RandomNumberGenerator()

Botan::RandomNumberGenerator::RandomNumberGenerator ( )
inline

Definition at line 89 of file rng.h.

89 {}

◆ ~RandomNumberGenerator()

virtual Botan::RandomNumberGenerator::~RandomNumberGenerator ( )
inlinevirtual

Definition at line 90 of file rng.h.

90 {}

Member Function Documentation

◆ add_entropy()

virtual void Botan::RandomNumberGenerator::add_entropy ( const byte  in[],
size_t  length 
)
pure virtual

Add entropy to this RNG.

Parameters
ina byte array containg the entropy to be added
lengththe length of the byte array in

Implemented in Botan::Null_RNG, Botan::AutoSeeded_RNG, Botan::HMAC_RNG, Botan::Randpool, and Botan::ANSI_X931_RNG.

Referenced by Botan::ANSI_X931_RNG::add_entropy(), and Botan::TLS_Server::close().

◆ add_entropy_source()

virtual void Botan::RandomNumberGenerator::add_entropy_source ( EntropySource source)
pure virtual

Add this entropy source to the RNG object

Parameters
sourcethe entropy source which will be retained and used by RNG

Implemented in Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::Randpool, and Botan::ANSI_X931_RNG.

Referenced by Botan::ANSI_X931_RNG::add_entropy_source().

◆ clear()

virtual void Botan::RandomNumberGenerator::clear ( )
pure virtual

Clear all internally held values of this RNG.

Implemented in Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::Randpool, and Botan::ANSI_X931_RNG.

Referenced by Botan::ANSI_X931_RNG::clear().

◆ is_seeded()

virtual bool Botan::RandomNumberGenerator::is_seeded ( ) const
inlinevirtual

Check whether this RNG is seeded.

Returns
true if this RNG was already seeded, false otherwise.

Reimplemented in Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::Randpool, and Botan::ANSI_X931_RNG.

Definition at line 57 of file rng.h.

Referenced by Botan::ANSI_X931_RNG::randomize().

57 { return true; }

◆ make_rng()

RandomNumberGenerator * Botan::RandomNumberGenerator::make_rng ( )
static

Create a seeded and active RNG object for general application use

Definition at line 29 of file rng.cpp.

30  {
31 #if defined(BOTAN_HAS_AUTO_SEEDING_RNG)
32  return new AutoSeeded_RNG;
33 #endif
34 
35  throw Algorithm_Not_Found("RandomNumberGenerator::make_rng - no RNG found");
36  }

◆ name()

virtual std::string Botan::RandomNumberGenerator::name ( ) const
pure virtual

Return the name of this object

Implemented in Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::Randpool, and Botan::ANSI_X931_RNG.

◆ next_byte()

byte Botan::RandomNumberGenerator::next_byte ( )

Return a random byte

Returns
random byte

Definition at line 19 of file rng.cpp.

References randomize().

20  {
21  byte out;
22  this->randomize(&out, 1);
23  return out;
24  }
virtual void randomize(byte output[], size_t length)=0
unsigned char byte
Definition: types.h:22

◆ random_vec()

SecureVector<byte> Botan::RandomNumberGenerator::random_vec ( size_t  bytes)
inline

Return a random vector

Parameters
bytesnumber of bytes in the result
Returns
randomized vector of length bytes

Definition at line 40 of file rng.h.

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

Referenced by Botan::ANSI_X931_RNG::randomize().

41  {
42  SecureVector<byte> output(bytes);
43  randomize(&output[0], output.size());
44  return output;
45  }
virtual void randomize(byte output[], size_t length)=0

◆ randomize()

virtual void Botan::RandomNumberGenerator::randomize ( byte  output[],
size_t  length 
)
pure virtual

Randomize a byte array.

Parameters
outputthe byte array to hold the random output.
lengththe length of the byte array output.

Implemented in Botan::Null_RNG, Botan::HMAC_RNG, Botan::Randpool, Botan::AutoSeeded_RNG, and Botan::ANSI_X931_RNG.

Referenced by next_byte(), and Botan::ANSI_X931_RNG::randomize().

◆ reseed()

virtual void Botan::RandomNumberGenerator::reseed ( size_t  bits_to_collect)
pure virtual

Seed this RNG using the entropy sources it contains.

Parameters
bits_to_collectis the number of bits of entropy to attempt to gather from the entropy sources

Implemented in Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::Randpool, and Botan::ANSI_X931_RNG.

Referenced by Botan::ANSI_X931_RNG::reseed().


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