Закрытый ключ экспорта C ++ OpenSSL

Я пока успешно использую SSL, но наткнулся на запутанное препятствие. Я генерирую пару ключей RSA и ранее использовал PEM_write_bio_RSAPrivateKey (...) для их экспорта. Однако страницы руководства утверждают, что формат устарел (и действительно выглядит иначе, чем обычный формат PEM). Вместо этого он рекомендует PEM_write_bio_PKCS8PrivateKey (...).

Однако PEM_write_bio_PKCS8PrivateKey принимает объект EVP_PKEY. Как я могу преобразовать мою пару ключей RSA * в структуру EVP_PKEY * для использования в этой функции?

EVP_PKEY* evpkey = EVP_PKEY_new();
if (!EVP_PKEY_assign_RSA(evpkey, keypair))
    throw ReadError();
int ret = PEM_write_bio_PKCS8PrivateKey(bio, evpkey, EVP_aes_256_cbc(),
                                        pass_char_str, pass_len, NULL, NULL);

ret всегда равен 0. Использование более старого PEM_write_bio_RSAPrivateKey мне подходит. Я хочу экспортировать свои ключи, чтобы они выглядели так:

-----BEGIN RSA PRIVATE KEY-----
MIICXQIBAAKBgQCvdbGZes3N/v3EqbbwYHW4rr4Wgav9eD36kVD7Hn5LIKwhfAqd
...
-----END RSA PRIVATE KEY-----

Спасибо.

6
задан caf 21 March 2011 в 11:17
поделиться