我有一个 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);
其中数据应该有证书数据!
为了从数据缓冲区重建 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 应该在哪里获取证书。这不能正常工作,有人可以给我一个很好的例子吗?
最佳答案
我已经用下面的代码完成了,
1 Load certificate to BIO using BIO_read_filename
2 convert it to x509 using PEM_read_bio_X509_AUX
3 convert it to unsigned char* using i2d_X509
4 reconstruct the x509 from unsigned char* using d2i_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;
}
关于c - C 中的 X509* 证书序列化和反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16447056/