diff options
Diffstat (limited to 'keygen_args.cpp')
-rw-r--r-- | keygen_args.cpp | 37 |
1 files changed, 24 insertions, 13 deletions
diff --git a/keygen_args.cpp b/keygen_args.cpp index 174227d..cc47447 100644 --- a/keygen_args.cpp +++ b/keygen_args.cpp @@ -8,6 +8,7 @@ */ #include "keygen_args.h" +#include "miller_rabin.h" char *pubkey; char *prikey; @@ -21,7 +22,6 @@ int keygen_args(int argc, char **argv) int primep_f = 0; int primeq_f = 0; int fname_f = 0; - int random_f = 0; int usage_f = 0; random_f = 0; int primep_args = 0; @@ -155,6 +155,7 @@ int keygen_args(int argc, char **argv) if (primep_f) { + /* if number was not specified or it's not a prime ask for the number */ if (primep_args == 0) { printf("please provide a value for prime p: "); @@ -166,18 +167,27 @@ int keygen_args(int argc, char **argv) args_parsed = sscanf(line_ptr, "%ld", &prime_p); if (args_parsed != 1) fprintf(stderr, "invalid input, please try again: "); - } while (args_parsed != 1); + if (!miller_rabin_16(prime_p)) + fprintf(stderr, "not a prime number, please try again: "); + } while (args_parsed != 1 || !miller_rabin_16(prime_p)); } else + { prime_p = atol(argv[primep_f+1]); - + if (!miller_rabin_16(prime_p)) + { + fprintf(stderr, "prime p on the command line is not prime\n"); + exit(EXIT_FAILURE); + } + } } if (primeq_f) { + /* if number was not specified or it's not a prime ask for the number */ if (primeq_args == 0) { - printf("please provide a value for prime p: "); + printf("please provide a value for prime q: "); do { @@ -186,20 +196,21 @@ int keygen_args(int argc, char **argv) args_parsed = sscanf(line_ptr, "%ld", &prime_q); if (args_parsed != 1) fprintf(stderr, "invalid input, please try again: "); - } while (args_parsed != 1); + if (!miller_rabin_16(prime_q)) + fprintf(stderr, "not a prime number, please try again: "); + } while (args_parsed != 1 || !miller_rabin_16(prime_q)); } else + { prime_q = atol(argv[primeq_f+1]); + if (!miller_rabin_16(prime_q)) + { + fprintf(stderr, "prime q on the command line is not prime\n"); + exit(EXIT_FAILURE); + } + } } -#ifdef DEBUG - fprintf(stdout, "debug: pubkey = \"%s\"\n" - " prikey = \"%s\"\n" - " primep = \"%ld\"\n" - " primeq = \"%ld\"\n", - pubkey, prikey, prime_p, prime_q); -#endif - return 0; } |