diff options
| author | Garrett D'Amore <garrett@damore.org> | 2024-10-06 10:58:54 -0700 |
|---|---|---|
| committer | Garrett D'Amore <garrett@damore.org> | 2024-10-06 11:18:07 -0700 |
| commit | 773950e6e1344c435b66fd2a67baebfe4d41a44c (patch) | |
| tree | 7cc57cd64527f59dcc6e89206e95ba259214606f /src/platform/posix/CMakeLists.txt | |
| parent | 4ae376e827e777acb2acca5e656f6ba59c439200 (diff) | |
| download | nng-773950e6e1344c435b66fd2a67baebfe4d41a44c.tar.gz nng-773950e6e1344c435b66fd2a67baebfe4d41a44c.tar.bz2 nng-773950e6e1344c435b66fd2a67baebfe4d41a44c.zip | |
posix: add getentropy() based RNG
XPG8 defines getentropy() as the only good source for random numbers.
However, real world use a bit more nuanced. On BSD systems, we would
prefer to use arc4random as it avoids unnecessary system calls. On
Linux however, getentropy is implemented in terms of getrandom, and should
be used directly when available.
Diffstat (limited to 'src/platform/posix/CMakeLists.txt')
| -rw-r--r-- | src/platform/posix/CMakeLists.txt | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/platform/posix/CMakeLists.txt b/src/platform/posix/CMakeLists.txt index 2212c8c8..6f3dfcaf 100644 --- a/src/platform/posix/CMakeLists.txt +++ b/src/platform/posix/CMakeLists.txt @@ -26,6 +26,7 @@ if (NNG_PLATFORM_POSIX) nng_check_func(lockf NNG_HAVE_LOCKF) nng_check_func(flock NNG_HAVE_FLOCK) + nng_check_func(getentropy NNG_HAVE_GETENTROPY) nng_check_func(getrandom NNG_HAVE_GETRANDOM) nng_check_func(arc4random_buf NNG_HAVE_ARC4RANDOM) @@ -69,6 +70,7 @@ if (NNG_PLATFORM_POSIX) nng_check_sym(socketpair sys/socket.h NNG_HAVE_SOCKETPAIR) nng_check_sym(AF_INET6 netinet/in.h NNG_HAVE_INET6) nng_check_sym(timespec_get time.h NNG_HAVE_TIMESPEC_GET) + nng_check_sym(getentropy sys/random.h NNG_HAVE_SYS_RANDOM) nng_sources( posix_impl.h @@ -111,6 +113,8 @@ if (NNG_PLATFORM_POSIX) if (NNG_HAVE_ARC4RANDOM) nng_sources(posix_rand_arc4random.c) + elseif (NNG_HAVE_GETENTROPY) + nng_sources(posix_rand_getentropy.c) elseif (NNG_HAVE_GETRANDOM) nng_sources(posix_rand_getrandom.c) else () |
