wg: support getentropy(3)
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
d90e49599b
commit
0632c8af68
11
src/genkey.c
11
src/genkey.c
|
@ -13,6 +13,9 @@
|
|||
#ifdef __linux__
|
||||
#include <sys/syscall.h>
|
||||
#endif
|
||||
#ifdef __APPLE__
|
||||
#include <sys/random.h>
|
||||
#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;
|
||||
|
|
Reference in New Issue