diff options
author | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-07-03 20:39:47 +0200 |
---|---|---|
committer | Jason A. Donenfeld <Jason@zx2c4.com> | 2016-07-03 20:45:48 +0200 |
commit | 5289df91e55740f8c1d24a4ffb1a55c3f46a7069 (patch) | |
tree | 36f38cc145dee911ed317baf7e042f46780837df /src | |
parent | tools: improve error reporting and detection (diff) | |
download | wireguard-monolithic-historical-5289df91e55740f8c1d24a4ffb1a55c3f46a7069.tar.xz wireguard-monolithic-historical-5289df91e55740f8c1d24a4ffb1a55c3f46a7069.zip |
tools: always fallback to /dev/urandom
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/genkey.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/src/tools/genkey.c b/src/tools/genkey.c index 8e63108..a312b46 100644 --- a/src/tools/genkey.c +++ b/src/tools/genkey.c @@ -6,31 +6,29 @@ #include <sys/types.h> #include <sys/stat.h> #include <syscall.h> -#include <unistd.h> #include <string.h> +#include <fcntl.h> #include "curve25519.h" #include "base64.h" #include "subcommands.h" -#ifdef __NR_getrandom -static inline ssize_t get_random_bytes(uint8_t *out, size_t len) -{ - return syscall(__NR_getrandom, out, len, 0); -} -#else -#include <fcntl.h> static inline ssize_t get_random_bytes(uint8_t *out, size_t len) { ssize_t ret; - int fd = open("/dev/urandom", O_RDONLY); + int fd; +#ifdef __NR_getrandom + ret = syscall(__NR_getrandom, out, len, 0); + if (ret >= 0) + return ret; +#endif + fd = open("/dev/urandom", O_RDONLY); if (fd < 0) return fd; ret = read(fd, out, len); close(fd); return ret; } -#endif int genkey_main(int argc, char *argv[]) { |