### 10.2 Retrieving random numbers

Function: void gcry_randomize (unsigned char *buffer, size_t length, enum gcry_random_level level)

  Fill buffer with length random bytes using a random quality as defined by level.

Function: void * gcry_random_bytes (size_t nbytes, enum gcry_random_level level)

  Convenience function to allocate a memory block consisting of nbytes fresh random bytes using a random quality as defined by level.

Function: void * gcry_random_bytes_secure (size_t nbytes, enum gcry_random_level level)

  Convenience function to allocate a memory block consisting of nbytes fresh random bytes using a random quality as defined by level. This function differs from `gcry_random_bytes` in that the returned buffer is allocated in a “secure” area of the memory.

Function: void gcry_create_nonce (unsigned char *buffer, size_t length)

  Fill buffer with length unpredictable bytes. This is commonly called a nonce and may also be used for initialization vectors and padding. This is an extra function nearly independent of the other random function for 3 reasons: It better protects the regular random generator’s internal state, provides better performance and does not drain the precious entropy pool.