Шифрование RSA с использованием открытого ключа из файла .pem

Я использую функцию RSA_public_encrypt для отправки зашифрованных данных в сокет. Я читаю открытый ключ из файла .PEM, используя «pkey = PEM_read_PUBKEY (f, NULL, NULL, NULL);» функция. 'pkey', полученный из функции выше, имеет тип EVP_PKEY *, который я не могу использовать в функции RSA_public_encrypt. (RSA_public_encrypt использует ключ типа RSA *)

Как преобразовать EVP_PKEY * pkey в RSA * rsa?


person Andrew    schedule 28.04.2013    source источник
comment
какой язык вы используете ???   -  person wandos    schedule 29.04.2013
comment
Я делаю это на языке C   -  person Andrew    schedule 29.04.2013


Ответы (1)


Используйте RSA *EVP_PKEY_get1_RSA(EVP_PKEY *pkey), чтобы получить ключ типа RSA из EVP_PKEY.

Пример:

EVP_PKEY    *evp;
RSA         *pubkey

evp = ...; /* some way to get the public key */
pubkey = EVP_PKEY_get1_RSA(evp);
if (pubkey == NULL) {
    /* error handling */
}
person Paul Yang    schedule 15.10.2014
comment
Не забудьте освободить RSA* с помощью callint RSA_free! - person Sebastian Wagner; 29.06.2015