aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/tools/genkey.c
diff options
context:
space:
mode:
authorJason A. Donenfeld <Jason@zx2c4.com>2016-07-03 20:06:33 +0200
committerJason A. Donenfeld <Jason@zx2c4.com>2016-07-03 20:45:48 +0200
commit62cc3a9c5af2fd7cc8847a577b6b911c79e110e7 (patch)
treeb11d05c7cd25c86aeb7cf8b3315e6f09f407a0f8 /src/tools/genkey.c
parenttai64n: don't forget to add 2^62, to be in spec (diff)
downloadwireguard-monolithic-historical-62cc3a9c5af2fd7cc8847a577b6b911c79e110e7.tar.xz
wireguard-monolithic-historical-62cc3a9c5af2fd7cc8847a577b6b911c79e110e7.zip
tools: improve error reporting and detection
Diffstat (limited to 'src/tools/genkey.c')
-rw-r--r--src/tools/genkey.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/tools/genkey.c b/src/tools/genkey.c
index 1602ae1..8e63108 100644
--- a/src/tools/genkey.c
+++ b/src/tools/genkey.c
@@ -11,6 +11,7 @@
#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)
@@ -37,6 +38,11 @@ int genkey_main(int argc, char *argv[])
char private_key_base64[b64_len(CURVE25519_POINT_SIZE)];
struct stat stat;
+ if (argc != 1) {
+ fprintf(stderr, "Usage: %s %s\n", PROG_NAME, argv[0]);
+ return 1;
+ }
+
if (!fstat(STDOUT_FILENO, &stat) && S_ISREG(stat.st_mode) && stat.st_mode & S_IRWXO)
fputs("Warning: writing to world accessible file.\nConsider setting the umask to 077 and trying again.\n", stderr);
@@ -47,9 +53,8 @@ int genkey_main(int argc, char *argv[])
if (argc && !strcmp(argv[0], "genkey"))
curve25519_normalize_secret(private_key);
- if (b64_ntop(private_key, sizeof(private_key), private_key_base64, sizeof(private_key_base64)) < 0) {
- errno = EINVAL;
- perror("b64");
+ if (b64_ntop(private_key, sizeof(private_key), private_key_base64, sizeof(private_key_base64)) != sizeof(private_key_base64) - 1) {
+ fprintf(stderr, "%s: Could not convert key to base64\n", PROG_NAME);
return 1;
}