| ||||
| ||||
Очень нужен совет. Проблема с работой CryptQueryObject для всех файлов. Т.е. для некоторых библиотек функция выполняется для некоторых - нет. В коде я меняю провайдера - думал поможет. Не помогло: var ContentType: DWORD; Store: HCERTSTORE; Msg: HCRYPTMSG; DataSize: Cardinal; SignerInfo: PCmsgSignerInfo; CertInfo: TCertInfo; sProvName: String; pdwProvType: DWORD; begin ContentType:= 0; DataSize:= 0; Result:= nil; iCurrentProvider:= 0; try while GetProvider(sProvName, pdwProvType) do begin if CryptSetProvider(@sProvName[1], pdwProvType) then if not CryptQueryObject(CERT_QUERY_OBJECT_FILE, @FileName[1], CERT_QUERY_CONTENT_FLAG_ALL, CERT_QUERY_FORMAT_FLAG_ALL, 0, nil, @ContentType, nil, @Store, @Msg, nil) then begin inc(iCurrentProvider); //ShowMessage(IntToHex(GetlastError, 8)); //Exit; end else Break else begin ShowMessage(’Can`t set provider.’); Exit; end; end; try if ContentType <> CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED then raise Exception.Create(’Unexpected content type’); ... |