从MySQL BLOB加载X509证书

时间:2014-01-04 22:36:01

标签: c++ import openssl x509

我在MySQL中将x509证书存储为BLOB。我想使用openssl lib将该证书导入c ++。

我想要使用这个功能

X509 *parsedCert = d2i_X509_bio(bio_in, 0);

问题是我需要一个指向BIO结构的指针。因为我没有将证书存储到文件中,所以我只能使用

BIO* BIO_new_mem_buf( void* buf, int length);

检索我的BIO指针。因为MySQL给我作为istream的BLOB存储证书,我试过

istream* cert = res->getBlob("cert");
string certs = streamToString(*cert);
BIO *bio_in = BIO_new_mem_buf( const_cast<char*>(certs.c_str()), -1 );
X509 *parsedCert = d2i_X509_bio(bio_in, 0);

不幸的是,parsedCert是一个Nullpointer。我收到以下SSL错误:

SSL ERROR: error:0D06B08E:asn1 encoding routines:func(107):reason(142)

我的问题是:有没有办法直接从istream加载x509证书到OpenSSL X509结构?

0 个答案:

没有答案