05.07.2005 18:53:15CryptQueryObject и Сертификат любого файла Ответов: 0
Денис
Очень нужен совет. Проблема с работой 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(&rsquo;Unexpected content type&rsquo;);
...