【发布时间】:2013-05-08 17:47:51
【问题描述】:
我有一个 509* 格式的证书,我想将其序列化为一个字符缓冲区,然后再将其反序列化以再次恢复证书 509*。
我这样做是为了序列化:
int size_cert = 0;
unsigned char* data;
BIO* bio = BIO_new(BIO_s_mem());
PEM_write_bio_X509(bio,certificate);
size_cert = BIO_get_mem_data(bio, &data);
BIO_free(bio);
哪里 data 应该有证书数据!
要从数据缓冲区重建 X509* 证书,我正在这样做:
BIO* bio;
X509* cert;
bio = BIO_new(BIO_s_mem());
BIO_puts(bio, data);
cert = PEM_read_bio_X509(bio, NULL, NULL, NULL);
cert 应该在哪里获得证书。这不能正常工作,有人可以给我一个很好的例子吗?
【问题讨论】:
-
BIO_get_mem_data 不复制任何内存。一旦释放 BIO,数据就会丢失。
-
您对 DER 格式不满意吗?为什么不考虑 DER 格式?
-
这与您想要做的类似:How to get PEM encoded X509 certificate as C++ string using openssl?。不过,它使用 C++ 而不是 C。
-
@mmm,你解决了你的问题吗?
标签: c openssl certificate x509