为什么RSA_size会崩溃?

时间:2011-05-16 09:34:10

标签: c openssl cryptography

我正在尝试使用OpenSSL加密lib,它在一个调用中崩溃,这是我见过的每个例子中的主要内容。以下是它的设置方式:

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是一个以空值终止的字符串,包含PEM格式的RSA密钥(带有-----BEGIN XXX-----等等)。它在RSA_size中以糟糕的访问方式崩溃。

如果删除BIO_free

,则无关紧要

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:3)

您需要检查PEM_read_bio_RSA_PUBKEY()的返回值,以确保它为非null。很可能_publicKey的内容不是格式正确的密钥,因此pubKey为NULL。

答案 1 :(得分:1)

尝试使用PEM_read_bio_RSAPublicKey代替PEM_read_bio_RSA_PUBKEY