, почему RSA_size () и EVP_PKEY_size () будут аварийно завершать работу после того, как я вызову EVP_PKEY_assign_RSA () или EVP_PKEY_set1_RSA () в моем коде?
версия openssl - 1.10.
Если я не вызываю EVP_RS() или EVP_PKEY_set1_RSA (), программа работает правильно.
Кроме того, я думаю, что обе эти функции используют обе для установки RSA_st из EVP_PKEY, у меня есть какое-то недопонимание этих двух функций?
void testfun(char **argc) {
OpenSSL_add_all_algorithms();
EVP_PKEY *prikey = nullptr, *pubkey = nullptr;
BIO *prifile = nullptr, *pubfile = nullptr;
RSA *pubrsa = nullptr, *prirsa = nullptr, *newra = nullptr;
prifile = BIO_new_file(argc[1], "r");
char passwd[] = "1111";
prikey = EVP_PKEY_new();
prikey = PEM_read_bio_PrivateKey(prifile, nullptr, 0, passwd);
prirsa = RSA_new();
/* all those code block combination will cause segmentation fault
* 1-3
* 1-4
* 2-3
* 2-4
* and output will be correct if i only use code block 3
* */
//1
//cout << EVP_PKEY_assign_RSA(prikey, prirsa) << endl;
//2
//cout << EVP_PKEY_set1_RSA(prikey, prirsa) << endl;
//3
//cout << EVP_PKEY_size(prikey) << endl;
//4
//cout << RSA_size(prirsa) << endl;
}