Загрузить сертификат 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?

0 ответов

Другие вопросы по тегам