Rng class¶
- class crsysapi.Rng¶
Random Number Generator to NIST SP800-90A.
- class Opts¶
RNG options.
- DEFAULT = 0¶
Default option
- NO_INTEL_DRNG = 524288¶
Turn off support for Intel(R) DRNG for the current session.
- SEED_BYTES = 128¶
Size in bytes of seed file (increased to 128 from 64 in [v6.22])
- class Strength¶
Required security strength for user-prompted entropy.
- BITS_112 = 0¶
112 bits of security (default)
- BITS_128 = 1¶
128 bits of security
- BITS_192 = 2¶
192 bits of security
- BITS_256 = 3¶
256 bits of security
- static bytes_with_prompt(n, strength=0, prompt='')¶
Generate an array of n random bytes with a prompt for user to enter random keystrokes.
- Parameters:
n (int) -- Required number of random bytes.
strength (Rng.Strength) -- Required security strength (default=112 bits).
prompt (str) -- Optional prompt for dialog.
- Returns:
Array of random bytes.
- Return type:
bytes
- static bytestring(n)¶
Generate an array of n random bytes.
- Parameters:
n (int) -- Required number of random bytes.
- Returns:
Array of random bytes.
- Return type:
bytes
- static initialize(seedfilename)¶
Initialize the RNG generator using a seed file.
Use a seed file to increase the entropy for the current session. Initialization is recommended but not mandatory. The seed file is automatically updated by this procedure.
- Parameters:
seedfilename (str) -- Full path name of seed file. If the seed file does not exist, it will be created.
- Returns:
Zero if successful.
- Return type:
int
- static initialize_ex(opts=0)¶
Query and initialize the RNG generator using Intel(R) DRNG, if available.
- Parameters:
opts (Rng.Opts) -- Specify Rng.Opts.NO_INTEL_DRNG to explicitly turn off support.
- Returns:
Support status for Intel(R) DRNG. If available, then returns a positive value (1,2,3); else a negative error code.
- Return type:
int
- static make_seedfile(seedfilename, strength=0, prompt='')¶
Create a new seed file suitable for use with Rng.initialize().
This uses a dialog window and expects the user to type in random keystrokes. Such a GUI interface may not be appropriate in all circumstances.
- Parameters:
seedfilename (str) -- Full path name of seed file to be created. Any existing file of the same name will be overwritten without warning.
strength (Rng.Strength) -- Required security strength (default=112 bits).
prompt (str) -- Optional prompt for dialog.
- Returns:
Zero if successful.
- Return type:
int
- static number(lower, upper)¶
Generate a random integer in a given range.
- Parameters:
lower (int) -- lower value of range
upper (int) -- upper value of range
- Returns:
Random integer x:
lower <= x <= upper
- Return type:
int
- static octet()¶
Generate a single random octet (byte).
- Returns:
Single byte value randomly chosen between 0 and 255
- Return type:
int
- static test_drbgvs(returnedBitsLen, entropyInput, nonce, personalizationString, additionalInput1, entropyReseed, additionalInputReseed, additionalInput2)¶
Test the random number generator for conformance to NIST SP 800-90A using the relevant test specified in the Deterministic Random Bit Generator Validation System (DRBGVS).
The test procedure, the input values and the expected output are described in the DRBGVS document. The relevant DRBG mechanism is HMAC_DRBG SHA-512 without prediction resistance. All input and output values are hexadecimal-encoded strings.
- Parameters:
returnedBitsLen (int) -- Number of bits to be returned from each call to the generate function in the test.
entropyInput (str) -- the EntropyInput value in hex format.
nonce (str) -- the Nonce value in hex format.
personalizationString (str) -- the PersonalizationString value in hex format.
additionalInput1 (str) -- the first AdditionalInput value in hex format.
entropyReseed (str) -- the EntropyReseed value in hex format.
additionalInputReseed (str) -- the AdditionalInputReseed value in hex format.
additionalInput2 (str) -- the second AdditionalInput value in hex format.
- Returns:
The ReturnedBits as a string in hexadecimal format.
- Return type:
str
- static update_seedfile(seedfilename)¶
Update the RNG seed file with more entropy.
- Parameters:
seedfilename (str) -- Full path name of seed file. If the seed file does not exist, it will be created.
- Returns:
Zero if successful.
- Return type:
int