2012-02-28 321 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