getrandom
---------

Documentation:

  * Generating Unpredictable Bytes (libc),

  * man getrandom.

Gnulib module: getrandom

Portability problems fixed by Gnulib:

  * This function is missing on some platforms: glibc 2.24, macOS 14, FreeBSD 11.0, NetBSD 9.3, OpenBSD 7.5, Minix 3.3, AIX 7.1, HP-UX 11.31, Solaris 11.0, Cygwin 1.7.x, mingw, MSVC 14, Android 8.1.

  * This function has a different return type on some platforms: Solaris 11.4.

Portability problems not fixed by Gnulib:

  * The GRND_INSECURE flag is missing on some platforms: glibc 2.34, macOS 10.15, GNU/kFreeBSD, FreeBSD 12.0, OpenBSD 7.5, Minix 3.3, Haiku.

  * The GRND_RANDOM flag has different effects on different platforms. Some platforms ignore the flag, or yield data that can fail to be random in some cases.

Although this function is intended to produce random data, the data's security properties may not be appropriate for your application. For example, identical ``random'' data streams might be produced by rebooted virtual machines.  If this is of concern you may need to use additional techniques such as hedging. (Ristenpart T, Yilek S. When good randomness goes bad: virtual machine vulnerabilities and hedging deployed cryptography (https://pages.cs.wisc.edu/~rist/papers/sslhedge.pdf). NDSS 2010.)

Related modules include getentropy, which has a simpler but more-limited API, and crypto/gc-random, which is likely a better match for code already using the other crypto APIs.