生成 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);