【问题标题】:Convert DER encoded X509 certificate buffer to windows CERT_CONTEXT structure将 DER 编码的 X509 证书缓冲区转换为 windows CERT_CONTEXT 结构
【发布时间】:2016-06-21 15:35:41
【问题描述】:
我有一个 X509 证书,它是使用 OpenSSL 创建并使用 OpenSSL i2d_X509() 函数导出到 DER blob。
有没有办法将 DER 证书 blob 转换为 Windows CERT_CONTEXT 结构?
我知道,它可以使用临时文件、CertOpenStore(CERT_STORE_PROV_FILENAME) 和 CertEnumCertificatesInStore() 函数来完成。但是不使用临时文件找不到任何方法。
【问题讨论】:
标签:
c++
windows
openssl
cryptoapi
【解决方案1】:
知道了。
可以使用 ::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);