Загрузить сертификат X509 с MySQL BLOB
Я сохранил сертификат x509 как BLOB в MySQL. Теперь я хочу импортировать этот сертификат в C++, используя openssl lib.
я решил использовать эту функцию
X509 *parsedCert = d2i_X509_bio(bio_in, 0);
Проблема в том, что мне нужен указатель на структуру BIO. Поскольку я не сохранил сертификат в файл, я могу использовать только
BIO* BIO_new_mem_buf( void* buf, int length);
получить мой БИО Указатель. Поскольку MySQL дает мне сохраненный BLOB-сертификат как istream, я попытался
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 является нулевым указателем. Я получаю следующие ошибки SSL:
SSL ERROR: error:0D06B08E:asn1 encoding routines:func(107):reason(142)
Мой вопрос: есть ли способ напрямую загрузить сертификат x509 из istream в структуру OpenSSL X509?