GETENTROPY(2) | System Calls Manual | GETENTROPY(2) |
getentropy
— get
entropy
#include
<sys/random.h>
int
getentropy
(void
*buf, size_t
buflen);
getentropy
()
fills a buffer with random data, which can be used as input for
process-context pseudorandom generators like
arc4random(3).
The maximum buffer size permitted is 256 bytes. If
buflen exceeds this, an error of
EIO
will be indicated.
getentropy
()
should be used as a replacement for
random(4) when random data derived
directly from the kernel random byte generator is required. Unlike the
random(4) pseudo-devices, it is not
vulnerable to file descriptor exhaustion attacks and is available when
sandboxed or in a chroot, making it more reliable for security-critical
applications.
However, it should be noted that
getentropy
()
is primarily intended for use in the construction and seeding of userspace
PRNGs like arc4random(3) or
CC_crypto(3). Clients who simply
require random data should use
arc4random(3),
CCRandomGenerateBytes
()
from CC_crypto(3), or
SecRandomCopyBytes
()
from the Security framework instead of getentropy
()
or random(4)
Upon successful completion, the value 0 is returned; otherwise the value -1 is returned and the global variable errno is set to indicate the error.
getentropy
() will succeed unless:
The getentropy
() function appeared in OSX
10.12
October 2 2015 | macOS 15.0 |