如何使用OpenSSL C库将RSA密钥从二进制数据加载到RSA结构?
问题描述:
目前,我有我的私钥保存在一个文件中,private.key,我用下面的函数来加载:如何使用OpenSSL C库将RSA密钥从二进制数据加载到RSA结构?
RSA * R = PEM_read_RSAPrivateKey( “private.key”,NULL,NULL,NULL);
这工作完美,但我不满意基于文件的格式;我想在一个char*
变量中将我的密钥保存为纯二进制格式(即没有base64或类似的格式),并从/加载/保存密钥。这样我有更多的自由:我可以直接将密钥存储到应用程序const char key[] { 0x01, 0x02, ... };
,通过网络套接字等发送。
不幸的是,虽然我还没有找到办法做到这一点。保存和加载我知道的密钥的唯一方法是直接读取/保存到文件中。
答
使用d2i_RSAPrivateKey
直接从包含二进制DER格式的缓冲器加载:
const unsigned char *p = key;
RSA *r = d2i_RSAPrivateKey(NULL, &p, keylen);