OpenSSL - конвертируйте X509 * x509 в файл BIO * через память - PullRequest
0 голосов
/ 18 января 2019

Я работаю с файлом сертификата ".cer", и моя задача - поместить его в стек STACK_OF(X509_INFO) *sk;

Я преобразовал ".cer" в X509* ptr, и теперь проблема, с которой я сталкиваюсь, заключается в как преобразовать X509* ptr в BIO* stackbio, так как метод, который я использую, нуждается BIO* в качестве параметра для отправки в стек.

sk = PEM_X509_INFO_read_bio(BIO* stackbio, sk, NULL, NULL);

1 Ответ

0 голосов
/ 18 января 2019

Возможно, первым шагом будет преобразование X509* в BIO*. Функция для этого: int i2d_X509_bio(BIO *bp, X509 *x);. По документам https://linux.die.net/man/3/d2i_x509:

i2d_X509_bio () похож на i2d_X509 () за исключением того, что записывает кодировку структуры х в BIO BP, и он возвращает 1 для успеха и 0 для отказ.

Как только вы получите BIO*, содержащий закодированный сертификат, вы сможете просто поместить его в стек https://wiki.openssl.org/index.php/STACK_API:

/* add value */
#define sk_BIO_insert(st, val, i)       SKM_sk_insert(BIO, (st), (val), (i))
...