From e8c696ab548854e2fe2368f476acf9cbc5fb68be Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Thu, 12 Nov 2020 19:52:42 -0500 Subject: add flags for reading and generating key --- deonebook.c | 41 ++++++++++++++++++++++++++++++++--------- 1 file changed, 32 insertions(+), 9 deletions(-) diff --git a/deonebook.c b/deonebook.c index cd8bb75..075f505 100644 --- a/deonebook.c +++ b/deonebook.c @@ -1,16 +1,25 @@ #define _XOPEN_SOURCE 700 #include #include +#include "deonebook.h" int main(int argc, char *argv[]) { - char *serial = NULL; + enum { DECRYPT, GENERATE, READ } mode = DECRYPT; int c; - while ((c = getopt(argc, argv, "s:")) != -1) { + while ((c = getopt(argc, argv, "RGk:")) != -1) { switch (c) { - case 's': - serial = optarg; + case 'R': + mode = READ; + break; + + case 'G': + mode = GENERATE; + break; + + case 'k': + /* keyfile = optarg; */ break; default: @@ -18,10 +27,24 @@ int main(int argc, char *argv[]) } } - if (serial == NULL) { - fprintf(stderr, "%s: missing serial number (provide via -s)\n", - argv[0]); - return 1; + if (mode != DECRYPT) { + unsigned char *key = NULL; + if (mode == READ) { + key = readkey("./.shm"); + } else { + char *device = "mmcblk0"; + if (optind < argc) { + device = argv[optind]; + } + key = genkey(device); + } + + if (key == NULL) { + return 1; + } + + fwrite(key, 16, 1, stdout); + return 0; } if (optind >= argc) { @@ -30,6 +53,6 @@ int main(int argc, char *argv[]) } do { - printf("decrypting %s [%s]\n", argv[optind], serial); + printf("decrypting %s\n", argv[optind]); } while (++optind < argc); } -- cgit v1.2.1