diff options
| author | djm <> | 2008-09-06 12:17:54 +0000 |
|---|---|---|
| committer | djm <> | 2008-09-06 12:17:54 +0000 |
| commit | 38ce604e3cc97706b876b0525ddff0121115456d (patch) | |
| tree | 7ccc28afe1789ea3dbedf72365f955d5b8e105b5 /src/lib/libssl/src/apps/genrsa.c | |
| parent | 12867252827c8efaa8ddd1fa3b3d6e321e2bcdef (diff) | |
| download | openbsd-38ce604e3cc97706b876b0525ddff0121115456d.tar.gz openbsd-38ce604e3cc97706b876b0525ddff0121115456d.tar.bz2 openbsd-38ce604e3cc97706b876b0525ddff0121115456d.zip | |
resolve conflicts
Diffstat (limited to 'src/lib/libssl/src/apps/genrsa.c')
| -rw-r--r-- | src/lib/libssl/src/apps/genrsa.c | 77 |
1 files changed, 44 insertions, 33 deletions
diff --git a/src/lib/libssl/src/apps/genrsa.c b/src/lib/libssl/src/apps/genrsa.c index 7dbd0923b6..1599bb7a69 100644 --- a/src/lib/libssl/src/apps/genrsa.c +++ b/src/lib/libssl/src/apps/genrsa.c | |||
| @@ -56,6 +56,13 @@ | |||
| 56 | * [including the GNU Public Licence.] | 56 | * [including the GNU Public Licence.] |
| 57 | */ | 57 | */ |
| 58 | 58 | ||
| 59 | #include <openssl/opensslconf.h> | ||
| 60 | /* Until the key-gen callbacks are modified to use newer prototypes, we allow | ||
| 61 | * deprecated functions for openssl-internal code */ | ||
| 62 | #ifdef OPENSSL_NO_DEPRECATED | ||
| 63 | #undef OPENSSL_NO_DEPRECATED | ||
| 64 | #endif | ||
| 65 | |||
| 59 | #ifndef OPENSSL_NO_RSA | 66 | #ifndef OPENSSL_NO_RSA |
| 60 | #include <stdio.h> | 67 | #include <stdio.h> |
| 61 | #include <string.h> | 68 | #include <string.h> |
| @@ -75,22 +82,19 @@ | |||
| 75 | #undef PROG | 82 | #undef PROG |
| 76 | #define PROG genrsa_main | 83 | #define PROG genrsa_main |
| 77 | 84 | ||
| 78 | static void MS_CALLBACK genrsa_cb(int p, int n, void *arg); | 85 | static int MS_CALLBACK genrsa_cb(int p, int n, BN_GENCB *cb); |
| 79 | 86 | ||
| 80 | int MAIN(int, char **); | 87 | int MAIN(int, char **); |
| 81 | 88 | ||
| 82 | int MAIN(int argc, char **argv) | 89 | int MAIN(int argc, char **argv) |
| 83 | { | 90 | { |
| 91 | BN_GENCB cb; | ||
| 84 | #ifndef OPENSSL_NO_ENGINE | 92 | #ifndef OPENSSL_NO_ENGINE |
| 85 | ENGINE *e = NULL; | 93 | ENGINE *e = NULL; |
| 86 | #endif | 94 | #endif |
| 87 | int ret=1; | 95 | int ret=1; |
| 88 | RSA *rsa=NULL; | ||
| 89 | int i,num=DEFBITS; | 96 | int i,num=DEFBITS; |
| 90 | long l; | 97 | long l; |
| 91 | #ifdef OPENSSL_FIPS | ||
| 92 | int use_x931 = 0; | ||
| 93 | #endif | ||
| 94 | const EVP_CIPHER *enc=NULL; | 98 | const EVP_CIPHER *enc=NULL; |
| 95 | unsigned long f4=RSA_F4; | 99 | unsigned long f4=RSA_F4; |
| 96 | char *outfile=NULL; | 100 | char *outfile=NULL; |
| @@ -100,8 +104,13 @@ int MAIN(int argc, char **argv) | |||
| 100 | #endif | 104 | #endif |
| 101 | char *inrand=NULL; | 105 | char *inrand=NULL; |
| 102 | BIO *out=NULL; | 106 | BIO *out=NULL; |
| 107 | BIGNUM *bn = BN_new(); | ||
| 108 | RSA *rsa = RSA_new(); | ||
| 109 | |||
| 110 | if(!bn || !rsa) goto err; | ||
| 103 | 111 | ||
| 104 | apps_startup(); | 112 | apps_startup(); |
| 113 | BN_GENCB_set(&cb, genrsa_cb, bio_err); | ||
| 105 | 114 | ||
| 106 | if (bio_err == NULL) | 115 | if (bio_err == NULL) |
| 107 | if ((bio_err=BIO_new(BIO_s_file())) != NULL) | 116 | if ((bio_err=BIO_new(BIO_s_file())) != NULL) |
| @@ -129,10 +138,6 @@ int MAIN(int argc, char **argv) | |||
| 129 | f4=3; | 138 | f4=3; |
| 130 | else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0) | 139 | else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0) |
| 131 | f4=RSA_F4; | 140 | f4=RSA_F4; |
| 132 | #ifdef OPENSSL_FIPS | ||
| 133 | else if (strcmp(*argv,"-x931") == 0) | ||
| 134 | use_x931 = 1; | ||
| 135 | #endif | ||
| 136 | #ifndef OPENSSL_NO_ENGINE | 141 | #ifndef OPENSSL_NO_ENGINE |
| 137 | else if (strcmp(*argv,"-engine") == 0) | 142 | else if (strcmp(*argv,"-engine") == 0) |
| 138 | { | 143 | { |
| @@ -155,6 +160,10 @@ int MAIN(int argc, char **argv) | |||
| 155 | else if (strcmp(*argv,"-idea") == 0) | 160 | else if (strcmp(*argv,"-idea") == 0) |
| 156 | enc=EVP_idea_cbc(); | 161 | enc=EVP_idea_cbc(); |
| 157 | #endif | 162 | #endif |
| 163 | #ifndef OPENSSL_NO_SEED | ||
| 164 | else if (strcmp(*argv,"-seed") == 0) | ||
| 165 | enc=EVP_seed_cbc(); | ||
| 166 | #endif | ||
| 158 | #ifndef OPENSSL_NO_AES | 167 | #ifndef OPENSSL_NO_AES |
| 159 | else if (strcmp(*argv,"-aes128") == 0) | 168 | else if (strcmp(*argv,"-aes128") == 0) |
| 160 | enc=EVP_aes_128_cbc(); | 169 | enc=EVP_aes_128_cbc(); |
| @@ -163,6 +172,14 @@ int MAIN(int argc, char **argv) | |||
| 163 | else if (strcmp(*argv,"-aes256") == 0) | 172 | else if (strcmp(*argv,"-aes256") == 0) |
| 164 | enc=EVP_aes_256_cbc(); | 173 | enc=EVP_aes_256_cbc(); |
| 165 | #endif | 174 | #endif |
| 175 | #ifndef OPENSSL_NO_CAMELLIA | ||
| 176 | else if (strcmp(*argv,"-camellia128") == 0) | ||
| 177 | enc=EVP_camellia_128_cbc(); | ||
| 178 | else if (strcmp(*argv,"-camellia192") == 0) | ||
| 179 | enc=EVP_camellia_192_cbc(); | ||
| 180 | else if (strcmp(*argv,"-camellia256") == 0) | ||
| 181 | enc=EVP_camellia_256_cbc(); | ||
| 182 | #endif | ||
| 166 | else if (strcmp(*argv,"-passout") == 0) | 183 | else if (strcmp(*argv,"-passout") == 0) |
| 167 | { | 184 | { |
| 168 | if (--argc < 1) goto bad; | 185 | if (--argc < 1) goto bad; |
| @@ -182,10 +199,18 @@ bad: | |||
| 182 | #ifndef OPENSSL_NO_IDEA | 199 | #ifndef OPENSSL_NO_IDEA |
| 183 | BIO_printf(bio_err," -idea encrypt the generated key with IDEA in cbc mode\n"); | 200 | BIO_printf(bio_err," -idea encrypt the generated key with IDEA in cbc mode\n"); |
| 184 | #endif | 201 | #endif |
| 202 | #ifndef OPENSSL_NO_SEED | ||
| 203 | BIO_printf(bio_err," -seed\n"); | ||
| 204 | BIO_printf(bio_err," encrypt PEM output with cbc seed\n"); | ||
| 205 | #endif | ||
| 185 | #ifndef OPENSSL_NO_AES | 206 | #ifndef OPENSSL_NO_AES |
| 186 | BIO_printf(bio_err," -aes128, -aes192, -aes256\n"); | 207 | BIO_printf(bio_err," -aes128, -aes192, -aes256\n"); |
| 187 | BIO_printf(bio_err," encrypt PEM output with cbc aes\n"); | 208 | BIO_printf(bio_err," encrypt PEM output with cbc aes\n"); |
| 188 | #endif | 209 | #endif |
| 210 | #ifndef OPENSSL_NO_CAMELLIA | ||
| 211 | BIO_printf(bio_err," -camellia128, -camellia192, -camellia256\n"); | ||
| 212 | BIO_printf(bio_err," encrypt PEM output with cbc camellia\n"); | ||
| 213 | #endif | ||
| 189 | BIO_printf(bio_err," -out file output the key to 'file\n"); | 214 | BIO_printf(bio_err," -out file output the key to 'file\n"); |
| 190 | BIO_printf(bio_err," -passout arg output file pass phrase source\n"); | 215 | BIO_printf(bio_err," -passout arg output file pass phrase source\n"); |
| 191 | BIO_printf(bio_err," -f4 use F4 (0x10001) for the E value\n"); | 216 | BIO_printf(bio_err," -f4 use F4 (0x10001) for the E value\n"); |
| @@ -240,28 +265,12 @@ bad: | |||
| 240 | 265 | ||
| 241 | BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n", | 266 | BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n", |
| 242 | num); | 267 | num); |
| 243 | #ifdef OPENSSL_FIPS | 268 | |
| 244 | if (use_x931) | 269 | if(!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb)) |
| 245 | { | 270 | goto err; |
| 246 | BIGNUM *pubexp; | ||
| 247 | pubexp = BN_new(); | ||
| 248 | BN_set_word(pubexp, f4); | ||
| 249 | rsa = RSA_X931_generate_key(num, pubexp, genrsa_cb, bio_err); | ||
| 250 | BN_free(pubexp); | ||
| 251 | } | ||
| 252 | else | ||
| 253 | #endif | ||
| 254 | rsa=RSA_generate_key(num,f4,genrsa_cb,bio_err); | ||
| 255 | 271 | ||
| 256 | app_RAND_write_file(NULL, bio_err); | 272 | app_RAND_write_file(NULL, bio_err); |
| 257 | 273 | ||
| 258 | if (rsa == NULL) | ||
| 259 | { | ||
| 260 | BIO_printf(bio_err, "Key Generation error\n"); | ||
| 261 | |||
| 262 | goto err; | ||
| 263 | } | ||
| 264 | |||
| 265 | /* We need to do the following for when the base number size is < | 274 | /* We need to do the following for when the base number size is < |
| 266 | * long, esp windows 3.1 :-(. */ | 275 | * long, esp windows 3.1 :-(. */ |
| 267 | l=0L; | 276 | l=0L; |
| @@ -285,8 +294,9 @@ bad: | |||
| 285 | 294 | ||
| 286 | ret=0; | 295 | ret=0; |
| 287 | err: | 296 | err: |
| 288 | if (rsa != NULL) RSA_free(rsa); | 297 | if (bn) BN_free(bn); |
| 289 | if (out != NULL) BIO_free_all(out); | 298 | if (rsa) RSA_free(rsa); |
| 299 | if (out) BIO_free_all(out); | ||
| 290 | if(passout) OPENSSL_free(passout); | 300 | if(passout) OPENSSL_free(passout); |
| 291 | if (ret != 0) | 301 | if (ret != 0) |
| 292 | ERR_print_errors(bio_err); | 302 | ERR_print_errors(bio_err); |
| @@ -294,7 +304,7 @@ err: | |||
| 294 | OPENSSL_EXIT(ret); | 304 | OPENSSL_EXIT(ret); |
| 295 | } | 305 | } |
| 296 | 306 | ||
| 297 | static void MS_CALLBACK genrsa_cb(int p, int n, void *arg) | 307 | static int MS_CALLBACK genrsa_cb(int p, int n, BN_GENCB *cb) |
| 298 | { | 308 | { |
| 299 | char c='*'; | 309 | char c='*'; |
| 300 | 310 | ||
| @@ -302,11 +312,12 @@ static void MS_CALLBACK genrsa_cb(int p, int n, void *arg) | |||
| 302 | if (p == 1) c='+'; | 312 | if (p == 1) c='+'; |
| 303 | if (p == 2) c='*'; | 313 | if (p == 2) c='*'; |
| 304 | if (p == 3) c='\n'; | 314 | if (p == 3) c='\n'; |
| 305 | BIO_write((BIO *)arg,&c,1); | 315 | BIO_write(cb->arg,&c,1); |
| 306 | (void)BIO_flush((BIO *)arg); | 316 | (void)BIO_flush(cb->arg); |
| 307 | #ifdef LINT | 317 | #ifdef LINT |
| 308 | p=n; | 318 | p=n; |
| 309 | #endif | 319 | #endif |
| 320 | return 1; | ||
| 310 | } | 321 | } |
| 311 | #else /* !OPENSSL_NO_RSA */ | 322 | #else /* !OPENSSL_NO_RSA */ |
| 312 | 323 | ||
