首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >X 509*C中的证书序列化和反序列化

X 509*C中的证书序列化和反序列化
EN

Stack Overflow用户
提问于 2013-05-08 17:47:51
回答 1查看 2.1K关注 0票数 3

我有509*格式的证书,我希望将它序列化为char缓冲区,然后反序列化它在其他格式,以恢复证书509*再次。

我这样做是为了序列化:

代码语言:javascript
复制
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);

哪里的数据应该有证书数据!

为了从数据缓冲区重新构建X 509*证书,我正在这样做:

代码语言:javascript
复制
    BIO* bio;
    X509* cert;

    bio = BIO_new(BIO_s_mem());
    BIO_puts(bio, data);
    cert = PEM_read_bio_X509(bio, NULL, NULL, NULL);    

证书应该在哪里得到证书。这是不正常的,有人能给我一个很好的例子吗?

EN

回答 1

Stack Overflow用户

发布于 2017-03-02 06:46:14

我用下面的代码做了,

使用文件名将证书加载到BIO 2使用x509将其转换为辅助 3使用X509将其转换为无符号字符* 4使用x509从无符号字符*重建X509

代码语言:javascript
复制
int main()
{   
    X509 *x509,*x509ser;    
    BIO *certBio = BIO_new(BIO_s_file());   
    char * path = "E:\\share\TempCert.pem"; // certificate path
    int len;
    unsigned char *buf;
    buf = NULL;

    BIO_read_filename(certBio, path); // reading certificate to bio
    x509 = PEM_read_bio_X509_AUX(certBio, NULL, 0, NULL);  //converting to x509  
    len = i2d_X509(x509, &buf);  // converting to unsigned char*
    x509ser = d2i_X509(NULL, &buf, len); // converting back to x509 from unsigned char*

    BIO_free_all(certBio); 
    return 0;
} 
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16447056

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档