Почему произошел сбой RSA_size? - PullRequest
2 голосов
/ 16 мая 2011

Я пытаюсь использовать крипто-библиотеку OpenSSL, и она вылетает при вызове, который является основным в каждом примере, который я видел. Вот как это настроено:

BIO* bp = BIO_new_mem_buf(_publicKey, -1); // Create a new memory buffer BIO.
RSA* pubKey = PEM_read_bio_RSA_PUBKEY(bp, 0, 0, 0); // And read the RSA key from it.

unsigned char encryptedRandKey[RSA_size(pubKey)];
BIO_free(bp);

_publicKey - символьная строка с нулевым символом в конце, содержащая ключ RSA в формате PEM (с -----BEGIN XXX----- и т. Д.). Вылетает с плохим доступом в RSA_size.

Неважно, если я уберу BIO_free.

Есть идеи? Спасибо!

Ответы [ 2 ]

3 голосов
/ 16 мая 2011

Вам необходимо проверить возвращаемое значение PEM_read_bio_RSA_PUBKEY(), чтобы убедиться, что оно не равно нулю.Скорее всего, содержимое _publicKey не совсем правильно отформатированный ключ и, как следствие, pubKey равно NULL.

1 голос
/ 28 августа 2012

Попробуйте PEM_read_bio_RSAPublicKey вместо PEM_read_bio_RSA_PUBKEY.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...