From 660300b28954f6120ca472940146556c11982307 Mon Sep 17 00:00:00 2001 From: Kyle K Date: Mon, 21 Feb 2011 14:47:20 -0600 Subject: few small changes --- crypt.cpp | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) (limited to 'crypt.cpp') diff --git a/crypt.cpp b/crypt.cpp index 5f0d01d..f59a704 100644 --- a/crypt.cpp +++ b/crypt.cpp @@ -17,25 +17,37 @@ extern char *outfname; struct rsakey_t { - long unsigned e, d, n; + unsigned long e, d, n; + bool valid_rsa_tag; }; /* parse pubkey xml file */ struct rsakey_t parse_key(FILE *file) { struct rsakey_t key = { 0, 0, 0}; + key.valid_rsa_tag = false; /* used for line reading */ size_t line_sz = 0; char *line = NULL; + bool rsa_opening_tag = false; + bool rsa_closing_tag = false; + while (getline(&line, &line_sz, file) != -1) { + if (strcmp(line, "\n") == 0) + rsa_opening_tag = true; sscanf(line, "\t%lu\n", &key.d); sscanf(line, "\t%lu\n", &key.e); sscanf(line, "\t%lu\n", &key.n); + if (strcmp(line, "\n") == 0) + rsa_closing_tag = true; } + if (rsa_opening_tag && rsa_closing_tag) + key.valid_rsa_tag = true; + if (line) free(line); @@ -74,7 +86,13 @@ int main(int argc, char **argv) int mode = -1; struct rsakey_t key = parse_key(keyfname_fl); - if (key.d == 0 && key.e && key.n) + if (!key.valid_rsa_tag) + { + fprintf(stderr, "invalid key or invalid xml\n"); + exit(EXIT_FAILURE); + } + + else if (key.d == 0 && key.e && key.n) { cout << "public key (" << key.e << ", " << key.n << ") detected, will perform encryption" << endl; -- cgit v1.2.3