目前我将私钥保存在private.key文件中,并使用以下函数加载它:
RSA * r = PEM_read_RSAPrivateKey(“private.key”,NULL,NULL,NULL);
这很好用,但我对基于文件的格式不满意;我想在char*
变量中以纯二进制形式(即,没有base64或类似形式)保存我的密钥,并从中加载/保存密钥。这样我就有了更大的自由:我可以将密钥直接存储到应用程序const char key[] { 0x01, 0x02, ... };
中,通过网络套接字发送等等。
不幸的是,虽然我还没有办法做到这一点。保存和加载我知道的密钥的唯一方法是将其直接读取/保存到文件中。
答案 0 :(得分:6)
使用d2i_RSAPrivateKey
直接从包含二进制DER格式的缓冲区加载:
const unsigned char *p = key;
RSA *r = d2i_RSAPrivateKey(NULL, &p, keylen);