|
Crypto++ 8.9
Free C++ class library of cryptographic schemes
|
Interface for NIST DRBGs from SP 800-90A. More...
#include <drbg.h>
Inheritance diagram for NIST_DRBG:Classes | |
| class | Err |
| Exception thrown when a NIST DRBG encounters an error. More... | |
Public Member Functions | |
| virtual bool | CanIncorporateEntropy () const |
| Determines if a generator can accept additional entropy. | |
| virtual void | IncorporateEntropy (const byte *input, size_t length)=0 |
| Update RNG state with additional unpredictable values. | |
| virtual void | IncorporateEntropy (const byte *entropy, size_t entropyLength, const byte *additional, size_t additionaLength)=0 |
| Update RNG state with additional unpredictable values. | |
| virtual void | GenerateBlock (byte *output, size_t size)=0 |
| Generate random array of bytes. | |
| virtual void | GenerateBlock (const byte *additional, size_t additionaLength, byte *output, size_t size)=0 |
| Generate random array of bytes. | |
| virtual unsigned int | SecurityStrength () const =0 |
| Provides the security strength. | |
| virtual unsigned int | SeedLength () const =0 |
| Provides the seed length. | |
| virtual unsigned int | MinEntropyLength () const =0 |
| Provides the minimum entropy size. | |
| virtual unsigned int | MaxEntropyLength () const =0 |
| Provides the maximum entropy size. | |
| virtual unsigned int | MinNonceLength () const =0 |
| Provides the minimum nonce size. | |
| virtual unsigned int | MaxNonceLength () const =0 |
| Provides the maximum nonce size. | |
| virtual unsigned int | MaxBytesPerRequest () const =0 |
| Provides the maximum size of a request to GenerateBlock. | |
| virtual unsigned int | MaxRequestBeforeReseed () const =0 |
| Provides the maximum number of requests before a reseed. | |
Public Member Functions inherited from RandomNumberGenerator | |
| virtual byte | GenerateByte () |
| Generate new random byte and return it. | |
| virtual unsigned int | GenerateBit () |
| Generate new random bit and return it. | |
| virtual word32 | GenerateWord32 (word32 min=0, word32 max=0xffffffffUL) |
| Generate a random 32 bit word in the range min to max, inclusive. | |
| virtual void | GenerateIntoBufferedTransformation (BufferedTransformation &target, const std::string &channel, lword length) |
| Generate random bytes into a BufferedTransformation. | |
| virtual void | DiscardBytes (size_t n) |
| Generate and discard n bytes. | |
| template<class IT > | |
| void | Shuffle (IT begin, IT end) |
| Randomly shuffle the specified array. | |
Public Member Functions inherited from Algorithm | |
| Algorithm (bool checkSelfTestStatus=true) | |
| Interface for all crypto algorithms. | |
| virtual std::string | AlgorithmName () const |
| Provides the name of this algorithm. | |
| virtual std::string | AlgorithmProvider () const |
| Retrieve the provider of this algorithm. | |
Public Member Functions inherited from Clonable | |
| virtual Clonable * | Clone () const |
| Copies this object. | |
Interface for NIST DRBGs from SP 800-90A.
NIST_DRBG is the base class interface for NIST DRBGs from SP 800-90A Rev 1 (June 2015)
You should reseed the generator after a fork() to avoid multiple generators with the same internal state.
|
inlinevirtual |
Determines if a generator can accept additional entropy.
All NIST_DRBG return true
Reimplemented from RandomNumberGenerator.
|
pure virtual |
Update RNG state with additional unpredictable values.
| input | the entropy to add to the generator |
| length | the size of the input buffer |
| NIST_DRBG::Err | if the generator is reseeded with insufficient entropy |
NIST instantiation and reseed requirements demand the generator is constructed with at least MINIMUM_ENTROPY entropy. The byte array for input must meet NIST SP 800-90B or SP 800-90C requirements.
Reimplemented from RandomNumberGenerator.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Update RNG state with additional unpredictable values.
| entropy | the entropy to add to the generator |
| entropyLength | the size of the input buffer |
| additional | additional input to add to the generator |
| additionaLength | the size of the additional input buffer |
| NIST_DRBG::Err | if the generator is reseeded with insufficient entropy |
IncorporateEntropy() is an overload provided to match NIST requirements. NIST instantiation and reseed requirements demand the generator is constructed with at least MINIMUM_ENTROPY entropy. The byte array for entropy must meet NIST SP 800-90B or SP 800-90C requirements.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Generate random array of bytes.
| output | the byte buffer |
| size | the length of the buffer, in bytes |
| NIST_DRBG::Err | if a reseed is required |
| NIST_DRBG::Err | if the size exceeds MAXIMUM_BYTES_PER_REQUEST |
Reimplemented from RandomNumberGenerator.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Generate random array of bytes.
| additional | additional input to add to the generator |
| additionaLength | the size of the additional input buffer |
| output | the byte buffer |
| size | the length of the buffer, in bytes |
| NIST_DRBG::Err | if a reseed is required |
| NIST_DRBG::Err | if the size exceeds MAXIMUM_BYTES_PER_REQUEST |
GenerateBlock() is an overload provided to match NIST requirements. The byte array for additional input is optional. If present the additional randomness is mixed before generating the output bytes.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the security strength.
The equivalent class constant is SECURITY_STRENGTH
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the seed length.
The equivalent class constant is SEED_LENGTH. The size is used to maintain internal state of V and C.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the minimum entropy size.
The equivalent class constant is MINIMUM_ENTROPY. All NIST DRBGs must be instaniated with at least MINIMUM_ENTROPY bytes of entropy. The bytes must meet NIST SP 800-90B or SP 800-90C requirements.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the maximum entropy size.
The equivalent class constant is MAXIMUM_ENTROPY. The bytes must meet NIST SP 800-90B or SP 800-90C requirements. MAXIMUM_ENTROPY has been reduced from 235 to INT_MAX to fit the underlying C++ datatype.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the minimum nonce size.
The equivalent class constant is MINIMUM_NONCE. If a nonce is not required then MINIMUM_NONCE is 0. Hash_DRBG does not require a nonce, while HMAC_DRBG and CTR_DRBG require a nonce.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the maximum nonce size.
The equivalent class constant is MAXIMUM_NONCE. MAXIMUM_NONCE has been reduced from 235 to INT_MAX to fit the underlying C++ datatype. If a nonce is not required then MINIMUM_NONCE is 0. Hash_DRBG does not require a nonce, while HMAC_DRBG and CTR_DRBG require a nonce.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the maximum size of a request to GenerateBlock.
The equivalent class constant is MAXIMUM_BYTES_PER_REQUEST
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.
|
pure virtual |
Provides the maximum number of requests before a reseed.
The equivalent class constant is MAXIMUM_REQUESTS_BEFORE_RESEED. MAXIMUM_REQUESTS_BEFORE_RESEED has been reduced from 248 to INT_MAX to fit the underlying C++ datatype.
Implemented in Hash_DRBG< HASH, STRENGTH, SEEDLENGTH >, and HMAC_DRBG< HASH, STRENGTH, SEEDLENGTH >.