The 'Initialize' operation steps for the [SP 800-90A] AES-256 DRBG for TRNG configuration with BC_DF are as follows:
- Make sure the engine is idle by writing zeroes to the
register twice.
- Write all configuration values in the
and
registers, write zeroes to the
and
registers.
- Enable all FROs in the
register (note that this can only be done after clearing the
register).
- Start the actual engine by setting the [10] ENABLE_TRNG and [12] DRBG_EN register bits. Set all
required _MASK interrupt mask bits in the
register.
- Wait until the [10] RESEED_AI register bit indicates a '1'.
- Mandatory: Write a 384 bits (48 Bytes) concatenation of a
'Personalization String' and 'Nonce' in the
through
registers. The first byte of the 'Nonce' must be written to bits [31:24] of
register, while the last byte of the 'Personalization String' must be written to
bits [7:0] of
register. Using a 'Personalization String' is not a hard requirement. If it is
not used, then the 'Nonce' must be 48 Bytes long to fill these registers. All of
the 48 bytes must be used as they are fed through the BC_DF function (and
contribute to the 'L' length value used in that algorithm).
After this, the engine is ready to handle the
first 'Generate' request using the [16]
REQUEST_DATA register bit (see Section 7.4.4.6.1.2.4, SP 800-90A DRBG 'Generate' Operation). The first output for these
requests will take a while, as the Noise Source must first generate seed entropy for
the DRBG.