summaryrefslogtreecommitdiff
path: root/src/lib/libssl/src/apps/genrsa.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libssl/src/apps/genrsa.c')
-rw-r--r--src/lib/libssl/src/apps/genrsa.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/src/lib/libssl/src/apps/genrsa.c b/src/lib/libssl/src/apps/genrsa.c
index 63be873b7b..7dbd0923b6 100644
--- a/src/lib/libssl/src/apps/genrsa.c
+++ b/src/lib/libssl/src/apps/genrsa.c
@@ -88,6 +88,9 @@ int MAIN(int argc, char **argv)
88 RSA *rsa=NULL; 88 RSA *rsa=NULL;
89 int i,num=DEFBITS; 89 int i,num=DEFBITS;
90 long l; 90 long l;
91#ifdef OPENSSL_FIPS
92 int use_x931 = 0;
93#endif
91 const EVP_CIPHER *enc=NULL; 94 const EVP_CIPHER *enc=NULL;
92 unsigned long f4=RSA_F4; 95 unsigned long f4=RSA_F4;
93 char *outfile=NULL; 96 char *outfile=NULL;
@@ -126,6 +129,10 @@ int MAIN(int argc, char **argv)
126 f4=3; 129 f4=3;
127 else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0) 130 else if (strcmp(*argv,"-F4") == 0 || strcmp(*argv,"-f4") == 0)
128 f4=RSA_F4; 131 f4=RSA_F4;
132#ifdef OPENSSL_FIPS
133 else if (strcmp(*argv,"-x931") == 0)
134 use_x931 = 1;
135#endif
129#ifndef OPENSSL_NO_ENGINE 136#ifndef OPENSSL_NO_ENGINE
130 else if (strcmp(*argv,"-engine") == 0) 137 else if (strcmp(*argv,"-engine") == 0)
131 { 138 {
@@ -233,11 +240,27 @@ bad:
233 240
234 BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n", 241 BIO_printf(bio_err,"Generating RSA private key, %d bit long modulus\n",
235 num); 242 num);
236 rsa=RSA_generate_key(num,f4,genrsa_cb,bio_err); 243#ifdef OPENSSL_FIPS
244 if (use_x931)
245 {
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);
237 255
238 app_RAND_write_file(NULL, bio_err); 256 app_RAND_write_file(NULL, bio_err);
239 257
240 if (rsa == NULL) goto err; 258 if (rsa == NULL)
259 {
260 BIO_printf(bio_err, "Key Generation error\n");
261
262 goto err;
263 }
241 264
242 /* We need to do the following for when the base number size is < 265 /* We need to do the following for when the base number size is <
243 * long, esp windows 3.1 :-(. */ 266 * long, esp windows 3.1 :-(. */