c++ - 如何从 pkcs7 文件中获取证书

标签 c++ cryptoapi pkcs#7

我有一个包含签名者证书、CA 证书、CRL 的 pkcs#7 文件。现在,为了验证此文件的签名,我从中获取了证书。我尝试这样做:

HANDLE hFile; 
if(!(hFile = CreateFile(L"c:\\users\\timur\\desktop\\sign_pkcs7.sig",
                            GENERIC_READ,
                            0,
                            NULL,
                            OPEN_EXISTING,
                            FILE_ATTRIBUTE_NORMAL,
                            NULL)))
{
    printf("Error opening file %d\n", GetLastError());
}

HCERTSTORE hPkcsStore = 0;
if(!(hPkcsStore = CertOpenStore(
                    CERT_STORE_PROV_PKCS7,
                    MY_TYPE,
                    NULL,
                    CERT_STORE_OPEN_EXISTING_FLAG,
                    hFile)))
{
    printf("Cert not found in pkcs7 store error %d.\n",GetLastError());
}

但是在调用 CertOpenStore 程序时失败,访问冲突读取位置 0x0000001c。

最佳答案

您可以使用 CryptQueryObject打开 P7B 文件或许多其他格式的文件(代码将与 here 相同)。

关于c++ - 如何从 pkcs7 文件中获取证书,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9478164/

相关文章:

c# - 如何使用 .Net Core 创建 PKCS#7 分离签名?

使用默认参数的 C++ 函数模板

c++ - SFINAE 不适用于自动生成的特殊成员函数?

c++ - 嵌套的 if-else 语句只执行一个条件 (C++)

java - AES key 长度无效 :39bytes

windows - 需要帮助使用 CertFindCertificateInStore() 按主题名称(X500 格式,CERT_X500_NAME_STR)查找证书?

c# - 如何瞥见 mscorlib?

php - 使用 PHP 为 Apple Wallet passes 创建 PKCS #7 分离签名

c++ - &= 是否保证表现得像假设的 &&= 运算符?

python - 在 Google App Engine 中编码 PKCS7(python,存折)