Name

drng_chacha20_get — Obtain random numbers

Synopsis

DSO_PUBLIC int drng_chacha20_get (struct chacha20_drng * drng,
 uint8_t * outbuf,
 uint32_t outbuflen);
 

Arguments

drng

[in] allocated ChaCha20 cipher handle

outbuf

[out] allocated buffer that is to be filled with random numbers

outbuflen

[in] length of outbuf indicating the size of the random number byte string to be generated

Description

Generate random numbers and fill the buffer provided by the caller.

Before each request of random numbers, a high-resolution time stamp is mixed into the random number generator state.

If the last (re)seeding operation is longer than 600 seconds ago or more than 1GB of random numbers were generated, an automated reseed is performed.

After the generation of random numbers, the internal state of the ChaCha20 DRNG is completely re-created using ChaCha20 to provide enhanced backtracking resistance. I.e. if the state of the DRNG becomes known after generation of random numbers, an attacker cannot deduce the already generated random numbers.

return 0 upon success; < 0 on error