我有509*格式的证书,我希望将它序列化为char缓冲区,然后反序列化它在其他格式,以恢复证书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);哪里的数据应该有证书数据!
为了从数据缓冲区重新构建X 509*证书,我正在这样做:
BIO* bio;
X509* cert;
bio = BIO_new(BIO_s_mem());
BIO_puts(bio, data);
cert = PEM_read_bio_X509(bio, NULL, NULL, NULL); 证书应该在哪里得到证书。这是不正常的,有人能给我一个很好的例子吗?
发布于 2017-03-02 06:46:14
我用下面的代码做了,
使用文件名将证书加载到BIO 2使用x509将其转换为辅助 3使用X509将其转换为无符号字符* 4使用x509从无符号字符*重建X509
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;
} https://stackoverflow.com/questions/16447056
复制相似问题