- if (!BN_set_word(bn, f4)
- || !RSA_generate_multi_prime_key(rsa, num, primes, bn, cb))
+ EVP_PKEY_CTX_set_cb(ctx, genrsa_cb);
+ EVP_PKEY_CTX_set_app_data(ctx, bio_err);
+
+ if (EVP_PKEY_CTX_set_rsa_keygen_bits(ctx, num) <= 0) {
+ BIO_printf(bio_err, "Error setting RSA length\n");
+ goto end;
+ }
+ if (!BN_set_word(bn, f4)) {
+ BIO_printf(bio_err, "Error allocating RSA public exponent\n");
+ goto end;
+ }
+ if (EVP_PKEY_CTX_set_rsa_keygen_pubexp(ctx, bn) <= 0) {
+ BIO_printf(bio_err, "Error setting RSA public exponent\n");
+ goto end;
+ }
+ if (EVP_PKEY_CTX_set_rsa_keygen_primes(ctx, primes) <= 0) {
+ BIO_printf(bio_err, "Error setting number of primes\n");