将 DER 编码的 X509 证书缓冲区转换为 windows CERT_CONTEXT 结构

Convert DER encoded X509 certificate buffer to windows CERT_CONTEXT structure

我有一个 X509 证书,它是使用 OpenSSL 创建并使用 OpenSSL i2d_X509() 函数导出到 DER blob。

有没有办法将 DER 证书 blob 转换成 Windows CERT_CONTEXT 结构?

我知道,可以使用临时文件、CertOpenStore(CERT_STORE_PROV_FILENAME) 和 CertEnumCertificatesInStore() 函数来完成。但是不使用临时文件找不到任何方法。

知道了。 可以使用 ::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);