2010-03-19 82 views
2

目前,我有我的私钥保存在一个文件中,private.key,我用下面的函数来加载:如何使用OpenSSL C库将RSA密钥从二进制数据加载到RSA结构?

RSA * R = PEM_read_RSAPrivateKey( “private.key”,NULL,NULL,NULL);

这工作完美,但我不满意基于文件的格式;我想在一个char*变量中将我的密钥保存为纯二进制格式(即没有base64或类似的格式),并从/加载/保存密钥。这样我有更多的自由:我可以直接将密钥存储到应用程序const char key[] { 0x01, 0x02, ... };,通过网络套接字等发送。

不幸的是,虽然我还没有找到办法做到这一点。保存和加载我知道的密钥的唯一方法是直接读取/保存到文件中。

回答

6

使用d2i_RSAPrivateKey直接从包含二进制DER格式的缓冲器加载:

const unsigned char *p = key; 
RSA *r = d2i_RSAPrivateKey(NULL, &p, keylen);