OpenSSL PEM_read_RSAPublicKey和PEM_read_RSA_PUBKEY使程序崩溃

时间:2016-12-11 22:25:05

标签: c++ c openssl

我有

形式的公钥
not safe
firebook
staff everyone localaccounts _appserverusr admin _appserveradm _lpadmin com.apple.sharepoint.group.1 _appstore _lpoperator _developer com.apple.access_ftp com.apple.access_screensharing com.apple.access_ssh-disabled
/usr/bin/pbcopy

failed

是使用OpenSSL创建的。我尝试将其加载到内存中,如下所示:

-----BEGIN PUBLIC KEY-----
MIIB...
-----END PUBLIC KEY-----

每当它到达RSA * rsa = ...行时程序崩溃。我已经看到了另一篇文章,并且(正如你所看到的)我已经尝试了解决方案而且它没有用。

我已尝试使用BIO版本,程序不会崩溃,但我确实收到错误"没有启动行"。

关于可能导致这种情况的任何想法?

1 个答案:

答案 0 :(得分:1)

DataFieldBase dataField = null;

第二个参数不能为NULL。这导致你的崩溃。另外,它是一个指针指向(双间接)。另请参阅PEM_read_RSA_PUBKEY man pages

也许你应该使用类似的东西:

RSA* rsa = PEM_read_RSA_PUBKEY(file, nullptr, nullptr, nullptr);

数据可能格式错误,可能导致意外崩溃。如果您提供真实数据,那么我们通常可以对其进行交叉检查。在缺乏真实数据的情况下,我们无法真正说出来。

您可能还想访问How to generate RSA private key using openssl?。它显示了几种RSA输出格式。它还向您展示了如何使用C ++管理OpenSSL资源。