| OLD | NEW |
| 1 /* ==================================================================== | 1 /* ==================================================================== |
| 2 * Copyright (c) 2004 The OpenSSL Project. All rights reserved. | 2 * Copyright (c) 2004 The OpenSSL Project. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
| 6 * are met: | 6 * are met: |
| 7 * | 7 * |
| 8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * | 10 * |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 55 | 55 |
| 56 #undef PROG | 56 #undef PROG |
| 57 #define PROG prime_main | 57 #define PROG prime_main |
| 58 | 58 |
| 59 int MAIN(int, char **); | 59 int MAIN(int, char **); |
| 60 | 60 |
| 61 int MAIN(int argc, char **argv) | 61 int MAIN(int argc, char **argv) |
| 62 { | 62 { |
| 63 int hex=0; | 63 int hex=0; |
| 64 int checks=20; | 64 int checks=20; |
| 65 int generate=0; |
| 66 int bits=0; |
| 67 int safe=0; |
| 65 BIGNUM *bn=NULL; | 68 BIGNUM *bn=NULL; |
| 66 BIO *bio_out; | 69 BIO *bio_out; |
| 67 | 70 |
| 68 apps_startup(); | 71 apps_startup(); |
| 69 | 72 |
| 70 if (bio_err == NULL) | 73 if (bio_err == NULL) |
| 71 if ((bio_err=BIO_new(BIO_s_file())) != NULL) | 74 if ((bio_err=BIO_new(BIO_s_file())) != NULL) |
| 72 BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); | 75 BIO_set_fp(bio_err,stderr,BIO_NOCLOSE|BIO_FP_TEXT); |
| 73 | 76 |
| 74 --argc; | 77 --argc; |
| 75 ++argv; | 78 ++argv; |
| 76 while (argc >= 1 && **argv == '-') | 79 while (argc >= 1 && **argv == '-') |
| 77 { | 80 { |
| 78 if(!strcmp(*argv,"-hex")) | 81 if(!strcmp(*argv,"-hex")) |
| 79 hex=1; | 82 hex=1; |
| 83 else if(!strcmp(*argv,"-generate")) |
| 84 generate=1; |
| 85 else if(!strcmp(*argv,"-bits")) |
| 86 if(--argc < 1) |
| 87 goto bad; |
| 88 else |
| 89 bits=atoi(*++argv); |
| 90 else if(!strcmp(*argv,"-safe")) |
| 91 safe=1; |
| 80 else if(!strcmp(*argv,"-checks")) | 92 else if(!strcmp(*argv,"-checks")) |
| 81 if(--argc < 1) | 93 if(--argc < 1) |
| 82 goto bad; | 94 goto bad; |
| 83 else | 95 else |
| 84 checks=atoi(*++argv); | 96 checks=atoi(*++argv); |
| 85 else | 97 else |
| 86 { | 98 { |
| 87 BIO_printf(bio_err,"Unknown option '%s'\n",*argv); | 99 BIO_printf(bio_err,"Unknown option '%s'\n",*argv); |
| 88 goto bad; | 100 goto bad; |
| 89 } | 101 } |
| 90 --argc; | 102 --argc; |
| 91 ++argv; | 103 ++argv; |
| 92 } | 104 } |
| 93 | 105 |
| 94 if (argv[0] == NULL) | 106 if (argv[0] == NULL && !generate) |
| 95 { | 107 { |
| 96 BIO_printf(bio_err,"No prime specified\n"); | 108 BIO_printf(bio_err,"No prime specified\n"); |
| 97 goto bad; | 109 goto bad; |
| 98 } | 110 } |
| 99 | 111 |
| 100 if ((bio_out=BIO_new(BIO_s_file())) != NULL) | 112 if ((bio_out=BIO_new(BIO_s_file())) != NULL) |
| 101 { | 113 { |
| 102 BIO_set_fp(bio_out,stdout,BIO_NOCLOSE); | 114 BIO_set_fp(bio_out,stdout,BIO_NOCLOSE); |
| 103 #ifdef OPENSSL_SYS_VMS | 115 #ifdef OPENSSL_SYS_VMS |
| 104 { | 116 { |
| 105 BIO *tmpbio = BIO_new(BIO_f_linebuffer()); | 117 BIO *tmpbio = BIO_new(BIO_f_linebuffer()); |
| 106 bio_out = BIO_push(tmpbio, bio_out); | 118 bio_out = BIO_push(tmpbio, bio_out); |
| 107 } | 119 } |
| 108 #endif | 120 #endif |
| 109 } | 121 } |
| 110 | 122 |
| 111 if(hex) | 123 if(generate) |
| 112 » BN_hex2bn(&bn,argv[0]); | 124 » { |
| 125 » char *s; |
| 126 |
| 127 » if(!bits) |
| 128 » { |
| 129 » BIO_printf(bio_err,"Specifiy the number of bits.\n"); |
| 130 » return 1; |
| 131 » } |
| 132 » bn=BN_new(); |
| 133 » BN_generate_prime_ex(bn,bits,safe,NULL,NULL,NULL); |
| 134 » s=hex ? BN_bn2hex(bn) : BN_bn2dec(bn); |
| 135 » BIO_printf(bio_out,"%s\n",s); |
| 136 » OPENSSL_free(s); |
| 137 » } |
| 113 else | 138 else |
| 114 » BN_dec2bn(&bn,argv[0]); | 139 » { |
| 140 » if(hex) |
| 141 » BN_hex2bn(&bn,argv[0]); |
| 142 » else |
| 143 » BN_dec2bn(&bn,argv[0]); |
| 115 | 144 |
| 116 BN_print(bio_out,bn); | 145 » BN_print(bio_out,bn); |
| 117 BIO_printf(bio_out," is %sprime\n", | 146 » BIO_printf(bio_out," is %sprime\n", |
| 118 » BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not "); | 147 » » BN_is_prime_ex(bn,checks,NULL,NULL) ? "" : "not "); |
| 148 » } |
| 119 | 149 |
| 120 BN_free(bn); | 150 BN_free(bn); |
| 121 BIO_free_all(bio_out); | 151 BIO_free_all(bio_out); |
| 122 | 152 |
| 123 return 0; | 153 return 0; |
| 124 | 154 |
| 125 bad: | 155 bad: |
| 126 BIO_printf(bio_err,"options are\n"); | 156 BIO_printf(bio_err,"options are\n"); |
| 127 BIO_printf(bio_err,"%-14s hex\n","-hex"); | 157 BIO_printf(bio_err,"%-14s hex\n","-hex"); |
| 128 BIO_printf(bio_err,"%-14s number of checks\n","-checks <n>"); | 158 BIO_printf(bio_err,"%-14s number of checks\n","-checks <n>"); |
| 129 return 1; | 159 return 1; |
| 130 } | 160 } |
| OLD | NEW |