2012-02-28 2 views
0

У меня есть файл pkcs # 7 с включенным сертификатом подписчиков, сертификатом CA, CRL. Теперь, чтобы проверить подпись из этого файла, я получаю от него сертификат. Я пытаюсь сделать:Как получить сертификат из файла 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 или его файлы в других формах (code будет таким же, как here).

+0

Спасибо! Я попробую. Теперь я использую такие функции, как CryptMsgUpdate, CryptMsgGetParam и т. Д. – forik