我有一个包含签名者证书、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/