manpagez: man pages & more
man getentropy(2)
Home | html | info | man

getentropy(2)               BSD System Calls Manual              getentropy(2)


NAME

     getentropy -- get entropy


SYNOPSIS

     #include <sys/random.h>

     int
     getentropy(void *buf, size_t buflen);


DESCRIPTION

     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)


RETURN VALUES

     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.


ERRORS

     getentropy() will succeed unless:

     [EINVAL]           The buf parameter points to an invalid address.

     [EIO]              Too many bytes requested, or some other fatal error
                        occurred.


SEE ALSO

     arc4random(3) CC_crypto(3) random(4)


HISTORY

     The getentropy() function appeared in OSX 10.12

BSD                             October 2 2015                             BSD

Mac OS X 10.12.3 - Generated Sun Feb 5 06:15:43 CST 2017
© manpagez.com 2000-2024
Individual documents may contain additional copyright information.