RSA_GENERATE_KEY(3ssl) OpenSSL RSA_GENERATE_KEY(3ssl) EVP_RSA_gen, RSA_generate_key_ex, RSA_generate_key, RSA_generate_multi_prime_key - RSA #include EVP_PKEY *EVP_RSA_gen(unsigned int bits); OpenSSL 3.0 OPENSSL_API_COMPAT openssl_user_macros(7): int RSA_generate_key_ex(RSA *rsa, int bits, BIGNUM *e, BN_GENCB *cb); int RSA_generate_multi_prime_key(RSA *rsa, int bits, int primes, BIGNUM *e, BN_GENCB *cb); OpenSSL 0.9.8 OPENSSL_API_COMPAT openssl_user_macros(7): RSA *RSA_generate_key(int bits, unsigned long e, void (*callback)(int, int, void *), void *cb_arg); EVP_RSA_gen() RSA bits. . EVP_RSA_gen() EVP_PKEY_Q_keygen(3) EVP_PKEY_keygen_init(3) EVP_PKEY_keygen(3) . RSA_generate_key_ex() RSA RSA rsa. RSA_generate_multi_prime_key() RSA RSA rsa. primes. CSPRNG OpenSSL ( RAND(7)) . bits primes e. num < 1024 . 3 17 65537. primes : <1024 | >=1024 | >=4096 | >=8192 ------+--------+--------+------- 2 | 3 | 4 | 5 . cb NULL BN_GENCB_call() BN_generate_prime(3). RSA_generate_key() RSA_generate_key_ex() BN_generate_prime(3) . o BN_generate_prime(3). o n BN_GENCB_call(cb, 2, n). o p p-1 e BN_GENCB_call(cb, 3, 0). q ( ) BN_GENCB_call(cb, 3, i) i i. EVP_RSA_gen() EVP_PKEY NULL . RSA_generate_multi_prime_key() 1 0 . RSA_generate_key_ex() 1 0 . ERR_get_error(3). RSA_generate_key() RSA NULL . BN_GENCB_call(cb, 2, x) . EVP_PKEY_Q_keygen(3) BN_generate_prime(3), ERR_get_error(3), RAND_bytes(3), RAND(7) EVP_RSA_gen() OpenSSL 3.0. OpenSSL 3.0. EVP_PKEY-RSA(7). 2000-2021 OpenSSL. . Apache 2.0 ( ""). . LICENSE . 3 . . : . 3.6.2 7 2026 RSA_GENERATE_KEY(3ssl)