aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/tools
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2016-07-03 20:39:47 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2016-07-03 20:45:48 +0200
commit5289df91e55740f8c1d24a4ffb1a55c3f46a7069 (patch)
tree36f38cc145dee911ed317baf7e042f46780837df /src/tools
parenttools: improve error reporting and detection (diff)
downloadwireguard-monolithic-historical-5289df91e55740f8c1d24a4ffb1a55c3f46a7069.tar.xz
wireguard-monolithic-historical-5289df91e55740f8c1d24a4ffb1a55c3f46a7069.zip
tools: always fallback to /dev/urandom
Diffstat (limited to 'src/tools')
-rw-r--r--src/tools/genkey.c18
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[])
{