如何从pkcs7文件获取证书

时间:2012-02-28 07:46:52

标签: 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失败。

1 个答案:

答案 0 :(得分:1)

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

相关问题