Crypto++
8.3
Free C++ class library of cryptographic schemes
|
Interface for random number generators. More...
Public Member Functions | |
virtual void | IncorporateEntropy (const byte *input, size_t length) |
Update RNG state with additional unpredictable values. More... | |
virtual bool | CanIncorporateEntropy () const |
Determines if a generator can accept additional entropy. More... | |
virtual byte | GenerateByte () |
Generate new random byte and return it. More... | |
virtual unsigned int | GenerateBit () |
Generate new random bit and return it. More... | |
virtual word32 | GenerateWord32 (word32 min=0, word32 max=0xffffffffUL) |
Generate a random 32 bit word in the range min to max, inclusive. More... | |
virtual void | GenerateBlock (byte *output, size_t size) |
Generate random array of bytes. More... | |
virtual void | GenerateIntoBufferedTransformation (BufferedTransformation &target, const std::string &channel, lword length) |
Generate random bytes into a BufferedTransformation. More... | |
virtual void | DiscardBytes (size_t n) |
Generate and discard n bytes. More... | |
template<class IT > | |
void | Shuffle (IT begin, IT end) |
Randomly shuffle the specified array. More... | |
![]() | |
Algorithm (bool checkSelfTestStatus=true) | |
Interface for all crypto algorithms. More... | |
virtual std::string | AlgorithmName () const |
Provides the name of this algorithm. More... | |
virtual std::string | AlgorithmProvider () const |
Retrieve the provider of this algorithm. More... | |
![]() | |
virtual Clonable * | Clone () const |
Copies this object. More... | |
Interface for random number generators.
The library provides a number of random number generators, from software based to hardware based generators. All generated values are uniformly distributed over the range specified.
Definition at line 1413 of file cryptlib.h.
|
inlinevirtual |
Update RNG state with additional unpredictable values.
input | the entropy to add to the generator |
length | the size of the input buffer |
NotImplemented | A generator may or may not accept additional entropy. Call CanIncorporateEntropy() to test for the ability to use additional entropy. If a derived class does not override IncorporateEntropy(), then the base class throws NotImplemented. |
Reimplemented in NIST_DRBG, RDSEED, RDRAND, OldRandomPool, RandomPool, PadlockRNG, AutoSeededX917RNG< BLOCK_CIPHER >, MersenneTwister< K, M, N, F, S >, MersenneTwister< 0x9908B0DF, 397, 624, 0x10DCD, 4537 >, MersenneTwister< 0x9908B0DF, 397, 624, 0x6C078965, 5489 >, HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >, Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, DARN, and ClassNullRNG.
Definition at line 1426 of file cryptlib.h.
|
inlinevirtual |
Determines if a generator can accept additional entropy.
Reimplemented in OldRandomPool, RandomPool, AutoSeededX917RNG< BLOCK_CIPHER >, MersenneTwister< K, M, N, F, S >, NIST_DRBG, and ClassNullRNG.
Definition at line 1434 of file cryptlib.h.
|
virtual |
Generate new random byte and return it.
Reimplemented in OldRandomPool, ClassNullRNG, and PublicBlumBlumShub.
Definition at line 276 of file cryptlib.cpp.
|
virtual |
Generate new random bit and return it.
Reimplemented in ClassNullRNG, and PublicBlumBlumShub.
Definition at line 271 of file cryptlib.cpp.
|
virtual |
Generate a random 32 bit word in the range min to max, inclusive.
min | the lower bound of the range |
max | the upper bound of the range |
Reimplemented in MersenneTwister< K, M, N, F, S >, MersenneTwister< 0x9908B0DF, 397, 624, 0x10DCD, 4537 >, MersenneTwister< 0x9908B0DF, 397, 624, 0x6C078965, 5489 >, and ClassNullRNG.
Definition at line 283 of file cryptlib.cpp.
|
virtual |
Generate random array of bytes.
output | the byte buffer |
size | the length of the buffer, in bytes All generated values are uniformly distributed over the range specified within the the constraints of a particular generator. |
Reimplemented in NIST_DRBG, AdditiveCipherTemplate< BASE >, AdditiveCipherTemplate<>, AdditiveCipherTemplate< AbstractPolicyHolder< AdditiveCipherAbstractPolicy, CTR_ModePolicy > >, LC_RNG, RDSEED, RDRAND, OldRandomPool, PadlockRNG, BlockingRng, NonblockingRng, MersenneTwister< K, M, N, F, S >, MersenneTwister< 0x9908B0DF, 397, 624, 0x10DCD, 4537 >, MersenneTwister< 0x9908B0DF, 397, 624, 0x6C078965, 5489 >, KDF2_RNG, HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >, Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, DARN, ClassNullRNG, PublicBlumBlumShub, and Weak::ARC4_Base.
Definition at line 311 of file cryptlib.cpp.
|
virtual |
Generate random bytes into a BufferedTransformation.
target | the BufferedTransformation object which receives the bytes |
channel | the channel on which the bytes should be pumped |
length | the number of bytes to generate The default implementation calls GenerateBlock() and pumps the result into the DEFAULT_CHANNEL of the target. All generated values are uniformly distributed over the range specified within the the constraints of a particular generator. |
Reimplemented in X917RNG, OldRandomPool, RandomPool, AutoSeededX917RNG< BLOCK_CIPHER >, and ClassNullRNG.
Definition at line 324 of file cryptlib.cpp.
|
virtual |
Generate and discard n bytes.
n | the number of bytes to generate and discard |
Reimplemented in RDSEED, RDRAND, PadlockRNG, MersenneTwister< K, M, N, F, S >, MersenneTwister< 0x9908B0DF, 397, 624, 0x10DCD, 4537 >, MersenneTwister< 0x9908B0DF, 397, 624, 0x6C078965, 5489 >, DARN, ClassNullRNG, and Weak::ARC4_Base.
Definition at line 319 of file cryptlib.cpp.
|
inline |
Randomly shuffle the specified array.
begin | an iterator to the first element in the array |
end | an iterator beyond the last element in the array The resulting permutation is uniformly distributed. |
Definition at line 1489 of file cryptlib.h.