繁体   English   中英

OpenSSL,从CString中读取公共RSA密钥

[英]OpenSSL, reading public RSA key from CString

我正在尝试从CString读取RSA公钥。 在通过文件进行操作之前,很简单,我在使用:

RSA *PEM_read_RSA_PUBKEY(FILE *fp, RSA **x, pem_password_cb *cb, void *u);

但是现在我不能使用这种方法。 这就是为什么我考虑使用:

RSA *PEM_read_bio_RSA_PUBKEY(BIO *bp, RSA **x, pem_password_cb *cb, void *u);

但是我不明白BIO *bp参数以及如何将CString传递给它!

bio(3)文档中

BIO是I / O抽象,它对应用程序隐藏了许多底层I / O详细信息。 如果应用程序将BIO用作其I / O,则它可以透明地处理SSL连接,未加密的网络连接和文件I / O。

对于您的情况,我想BIO_s_mem(3)是正确的类型

内存BIO是将内存用于其I / O的源/接收BIO。

BIO * BIO_new_mem_buf(void * buf,int len);
...
BIO_new_mem_buf()使用buf处的len数据字节创建内存BIO,如果len为-1,则buf假定为空终止,并且其长度由strlen确定。 BIO设置为只读状态,因此无法写入。

因此,对于C字符串,我会说这导致

char rsa_key[1024];
...
BIO *bp = BIO_new_mem_buf(rsa_key, -1);
RSA *rsa = PEM_read_bio_RSA_PUBKEY(bp, ...);

OpenSSL中的BIO类似于文件句柄。 就像使用两个插座一样,您可以使用一对安全地彼此通信。

这里有一些示例代码的详细说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM