2016-06-21 7 views
1

У меня есть сертификат X509, который был создан с использованием OpenSSL и экспортирован в DER blob с использованием функции OpenSSL i2d_X509().Преобразование DER закодированного буфера сертификата X509 в окна Структура CERT_CONTEXT

Есть ли способ конвертировать DER-сертификат blob в Windows CERT_CONTEXT?

Я знаю, что это можно сделать с помощью временного файла, функций CertOpenStore (CERT_STORE_PROV_FILENAME) и CertEnumCertificatesInStore(). Но не удалось найти способ без использования временного файла.

ответ

1

Got it. Это может быть сделано с помощью :: CertCreateCertificateContext функция:

std::vector<BYTE> certificate; 
// ... acquire DER encoded certificate using i2d_X509() 
// ... 
PCCERT_CONTEXT context = ::CertCreateCertificateContext(
    X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, 
    certificate.data(), 
    certificate.size()); 
// ... 
// ... 
::CertFreeCertificateContext(context);