Botan  1.11.11
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_DRBG Botan::HMAC_RNG Botan::Null_RNG Botan::Serialized_RNG

Public Member Functions

virtual void add_entropy (const byte in[], size_t length)=0
 
virtual void clear ()=0
 
virtual bool is_seeded () const =0
 
virtual std::string name () const =0
 
byte next_byte ()
 
RandomNumberGeneratoroperator= (const RandomNumberGenerator &rng)=delete
 
virtual secure_vector< byterandom_vec (size_t bytes)
 
virtual void randomize (byte output[], size_t length)=0
 
 RandomNumberGenerator (const RandomNumberGenerator &rng)=delete
 
 RandomNumberGenerator ()
 
virtual void reseed (size_t bits_to_collect)=0
 
virtual ~RandomNumberGenerator ()
 

Static Public Member Functions

static RandomNumberGeneratormake_rng ()
 
static std::unique_ptr
< RandomNumberGenerator
make_rng (class Algorithm_Factory &af)
 

Detailed Description

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

Definition at line 21 of file rng.h.

Constructor & Destructor Documentation

Botan::RandomNumberGenerator::RandomNumberGenerator ( const RandomNumberGenerator rng)
delete
Botan::RandomNumberGenerator::RandomNumberGenerator ( )
inline

Definition at line 102 of file rng.h.

102 {}
virtual Botan::RandomNumberGenerator::~RandomNumberGenerator ( )
inlinevirtual

Definition at line 103 of file rng.h.

103 {}

Member Function Documentation

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::Serialized_RNG, Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::HMAC_DRBG, and Botan::ANSI_X931_RNG.

Referenced by Botan::NR_Signature_Operation::sign(), Botan::RW_Signature_Operation::sign(), Botan::DSA_Signature_Operation::sign(), and Botan::RSA_Private_Operation::sign().

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

Clear all internally held values of this RNG.

Implemented in Botan::Serialized_RNG, Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::HMAC_DRBG, and Botan::ANSI_X931_RNG.

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

Check whether this RNG is seeded.

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

Implemented in Botan::Serialized_RNG, Botan::Null_RNG, Botan::HMAC_RNG, Botan::HMAC_DRBG, Botan::ANSI_X931_RNG, and Botan::AutoSeeded_RNG.

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

Create a seeded and active RNG object for general application use Added in 1.8.0

Definition at line 14 of file rng.cpp.

References Botan::Global_State_Management::global_state().

15  {
16  return make_rng(global_state().algorithm_factory()).release();
17  }
static RandomNumberGenerator * make_rng()
Definition: rng.cpp:14
Library_State & global_state()
std::unique_ptr< RandomNumberGenerator > Botan::RandomNumberGenerator::make_rng ( class Algorithm_Factory af)
static

Create a seeded and active RNG object for general application use Added in 1.11.5

Definition at line 22 of file rng.cpp.

References Botan::Algorithm_Factory::make_mac().

23  {
24  std::unique_ptr<RandomNumberGenerator> rng(
25  new HMAC_RNG(af.make_mac("HMAC(SHA-512)"),
26  af.make_mac("HMAC(SHA-256)"))
27  );
28 
29  rng->reseed(256);
30 
31  return rng;
32  }
virtual std::string Botan::RandomNumberGenerator::name ( ) const
pure virtual
byte Botan::RandomNumberGenerator::next_byte ( )
inline

Return a random byte

Returns
random byte

Definition at line 59 of file rng.h.

Referenced by Botan::random_prime().

60  {
61  byte out;
62  this->randomize(&out, 1);
63  return out;
64  }
virtual void randomize(byte output[], size_t length)=0
uint8_t byte
Definition: types.h:30
RandomNumberGenerator& Botan::RandomNumberGenerator::operator= ( const RandomNumberGenerator rng)
delete
virtual secure_vector<byte> Botan::RandomNumberGenerator::random_vec ( size_t  bytes)
inlinevirtual

Return a random vector

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

Definition at line 48 of file rng.h.

Referenced by Botan::TLS::Client_Key_Exchange::Client_Key_Exchange(), Botan::CryptoBox::encrypt(), Botan::KeyPair::encryption_consistency_check(), Botan::generate_bcrypt(), Botan::OctetString::OctetString(), Botan::pbes2_encrypt(), Botan::BigInt::randomize(), Botan::TLS::Session_Manager_SQL::Session_Manager_SQL(), and Botan::KeyPair::signature_consistency_check().

49  {
50  secure_vector<byte> output(bytes);
51  randomize(&output[0], output.size());
52  return output;
53  }
virtual void randomize(byte output[], size_t length)=0
virtual void Botan::RandomNumberGenerator::randomize ( byte  output[],
size_t  length 
)
pure virtual
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::Serialized_RNG, Botan::Null_RNG, Botan::HMAC_RNG, Botan::AutoSeeded_RNG, Botan::HMAC_DRBG, and Botan::ANSI_X931_RNG.


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