【发布时间】:2010-12-15 01:33:45
【问题描述】:
我正在将 .p7b 证书文件加载到内存中,然后对其调用 CertCreateCertificateContext,但它失败并出现错误“ASN1 bad tag value met.”。
调用如下所示:
m_hContext = CertCreateCertificateContext(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, pbCertEncoded, dwCertEncodedLen);
这将返回 NULL 并且 GetLastError() 返回上述错误。
我通过将证书拖出 IE 中的设置来创建证书文件,然后它会自动导出到文件。
我做错了什么?
谢谢!
【问题讨论】:
-
更新:如果我导出为 DER 编码二进制 X.509(cer 文件),则函数成功。但是,当使用 CertCreateCertificateContext 的返回值调用 AcquireCredentialsHandle 时,我得到了一个错误。错误是:指定的登录会话不存在。它可能已经被终止了。
-
请注意,安装证书后一切正常,我使用 CertFindCertificateInStore 通过系统证书存储打开它。我想要的是,不是在所有需要它的机器上安装证书,而是将它放在一个全局数据库中。然后我将从那里加载 BLOB 并使用 CertCreateCertificateContext。至少这是计划。
标签: c++ windows certificate