生成 RSA 密钥
为了生成 RSA 密钥,必须首先使用 EVP_PKEY_new
分配 EVP_PKEY
:
EVP_PKEY *pkey;
pkey = EVP_PKEY_new();
还需要密钥的指数,这将需要使用 BN_new
分配 BIGNUM
然后使用 BN_set_word
进行分配 :
BIGNUM *bn;
bn = BN_new();
BN_set_word(bn, RSA_F4);
要生成密钥,请使用 RSA_new
创建一个新的 RSA
并调用 RSA_generate_key_ex
:
RSA *rsa;
rsa = RSA_new();
RSA_generate_key_ex(
rsa, /* pointer to the RSA structure */
2048, /* number of bits for the key - 2048 is a good value */
bn, /* exponent allocated earlier */
NULL, /* callback - can be NULL if progress isn't needed */
);
要将新生成的密钥分配给 EVP_PKEY
结构,请调用 EVP_PKEY_assign_RSA
:
EVP_PKEY_assign_RSA(pkey, rsa);
当释放 EVP_PKEY
结构时,RSA
结构将自动释放。这是通过 EVP_PKEY_free
完成的 :
EVP_PKEY_free(pkey);