目前我的私钥保存在一个文件private.key中,我使用以下函数加载它:
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);
Run Code Online (Sandbox Code Playgroud)