From 99d0eda9cab0ee07166dc856ad31cac7ef30eb7d Mon Sep 17 00:00:00 2001 From: "Jason A. Donenfeld" Date: Fri, 8 Jun 2018 03:18:28 +0200 Subject: tools: support getentropy(3) --- src/tools/genkey.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/tools/genkey.c b/src/tools/genkey.c index 5971528..04de2ba 100644 --- a/src/tools/genkey.c +++ b/src/tools/genkey.c @@ -13,6 +13,9 @@ #ifdef __linux__ #include #endif +#ifdef __APPLE__ +#include +#endif #include "curve25519.h" #include "encoding.h" @@ -22,11 +25,19 @@ static inline ssize_t get_random_bytes(uint8_t *out, size_t len) { ssize_t ret; int fd; + +#if defined(__OpenBSD__) || defined(__APPLE__) || (defined(__GLIBC__) && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 25))) + ret = getentropy(out, len); + if (!ret) + return len; +#endif + #if defined(__NR_getrandom) && defined(__linux__) ret = syscall(__NR_getrandom, out, len, 0); if (ret >= 0) return ret; #endif + fd = open("/dev/urandom", O_RDONLY); if (fd < 0) return fd; -- cgit v1.2.3-59-g8ed1b