Crypto++
8.6
Free C++ class library of cryptographic schemes
|
Hardware generated random numbers using DARN instruction. More...
Public Member Functions | |
DARN () | |
Construct a DARN generator. More... | |
virtual void | GenerateBlock (byte *output, size_t size) |
Generate random array of bytes. More... | |
virtual void | DiscardBytes (size_t n) |
Generate and discard n bytes. More... | |
virtual void | IncorporateEntropy (const byte *input, size_t length) |
Update RNG state with additional unpredictable values. More... | |
std::string | AlgorithmProvider () const |
Retrieve the provider of this algorithm. 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 | GenerateIntoBufferedTransformation (BufferedTransformation &target, const std::string &channel, lword length) |
Generate random bytes into a BufferedTransformation. 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 Clonable * | Clone () const |
Copies this object. More... | |
Static Public Member Functions | |
static const char * | StaticAlgorithmName () |
Hardware generated random numbers using DARN instruction.
DARN() provides access to Power9's random number generator. The Crypto++ implementation provides conditioned random numbers from the generator as opposed to raw random numbers. According to Power ISA 3.0B manual, a conditioned random number has been processed by hardware to reduce bias. A raw random number is unconditioned noise source output. According to Power ISA 3.0B manual, the random number generator provided by the darn
instruction is NIST SP800-90B and SP800-90C compliant to the extent possible given the completeness of the standards at the time the hardware is designed. The random number generator provides a minimum of 0.5 bits of entropy per bit.
DARN::DARN | ( | ) |
|
virtual |
Generate random array of bytes.
output | the byte buffer |
size | the length of the buffer, in bytes |
Reimplemented from RandomNumberGenerator.
|
virtual |
Generate and discard n bytes.
n | the number of bytes to generate and discard the RDSEED generator discards words, not bytes. If n is not a multiple of a machine word, then it is rounded up to that size. |
Reimplemented from RandomNumberGenerator.
|
inlinevirtual |
Update RNG state with additional unpredictable values.
input | unused |
length | unused The operation is a nop for this generator. |
Reimplemented from RandomNumberGenerator.
|
inlinevirtual |
Retrieve the provider of this algorithm.
AES/GCM
returns "AESNI" rather than "CLMUL" or "AES+SSE4.1" or "AES+CLMUL" or "AES+SSE4.1+CLMUL". Reimplemented from Algorithm.