diff -up openssl-1.0.2a/apps/genrsa.c.x931 openssl-1.0.2a/apps/genrsa.c --- openssl-1.0.2a/apps/genrsa.c.x931 2015-04-09 18:18:24.132107287 +0200 +++ openssl-1.0.2a/apps/genrsa.c 2015-04-09 18:18:18.852985339 +0200 @@ -97,6 +97,7 @@ int MAIN(int argc, char **argv) int ret = 1; int i, num = DEFBITS; long l; + int use_x931 = 0; const EVP_CIPHER *enc = NULL; unsigned long f4 = RSA_F4; char *outfile = NULL; @@ -139,6 +140,8 @@ int MAIN(int argc, char **argv) f4 = 3; else if (strcmp(*argv, "-F4") == 0 || strcmp(*argv, "-f4") == 0) f4 = RSA_F4; + else if (strcmp(*argv, "-x931") == 0) + use_x931 = 1; # ifndef OPENSSL_NO_ENGINE else if (strcmp(*argv, "-engine") == 0) { if (--argc < 1) @@ -278,7 +281,13 @@ int MAIN(int argc, char **argv) if (!rsa) goto err; - if (!BN_set_word(bn, f4) || !RSA_generate_key_ex(rsa, num, bn, &cb)) + if (use_x931) { + if (!BN_set_word(bn, f4)) + goto err; + if (!RSA_X931_generate_key_ex(rsa, num, bn, &cb)) + goto err; + } else if (!BN_set_word(bn, f4) + || !RSA_generate_key_ex(rsa, num, bn, &cb)) goto err; app_RAND_write_file(NULL, bio_err);