2012-02-28 307 views
0

我有一个包含签名者证书,CA证书,CRL的pkcs#7文件。现在,为了验证来自这个文件的签名,我从它获得了证书。我尝试做:如何从pkcs7文件获取证书

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

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

+0

谢谢!我会试试看。现在我使用CryptMsgUpdate,CryptMsgGetParam等函数。 – forik 2012-03-05 13:06:55