Статус: Новичок
Группы: Участники
Зарегистрирован: 23.05.2013(UTC) Сообщений: 8 
|
доброе время суток delphi xe3 для доступа к cryptoapi используется библиотека jedi. получение списка считывателей происходит следующим образом: Цитата: function CheckTest: Boolean; var Prov: HCRYPTPROV; pbData: PBYTE; cbData: Cardinal; Flag: Cardinal; begin Result := false;
if CryptAcquireContext(Prov, nil, 'Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider', PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) then begin Flag := CRYPT_FIRST; if CryptGetProvParam(Prov, 114, nil, cbData, Flag) then begin GetMem(pbData, cbData); try while CryptGetProvParam(Prov, 114, pbData, cbData, Flag) do begin Flag := CRYPT_NEXT; ShowMessage(PChar(pbData)); end; finally FreeMem(pbData, cbData); end; end; CryptReleaseContext(Prov, 0); Result := true; end; end;
но при выводе вижу следующее:  что делаю не так? и как правильно получить список считывателей?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
Откуда "это" взято?
CryptGetProvParam(hProv, PP_ENUMCONTAINERS ... ) const PP_ENUMCONTAINERS = 2; |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
Цитата:CryptAcquireContext(Prov, nil, 'Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider', PROV_RSA_FULL, CRYPT_VERIFYCONTEXT) Иногда нужно кое-что читать Crypto-Pro GOST <> PROV_RSA_FULL |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
dwProvType = 75 для Crypto-Pro |
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
CryptGetProvParam(hProv, PP_ENUMCONTAINERS
перечисление контейнеров - выводится? |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 23.05.2013(UTC) Сообщений: 8 
|
изменил Цитата:CryptAcquireContext(Prov, nil, 'Crypto-Pro GOST R 34.10-2001 Cryptographic Service Provider', 75, CRYPT_VERIFYCONTEXT) и Цитата:CryptGetProvParam(Prov, PP_ENUMCONTAINERS , nil, cbData, Flag) выводит: 
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
CryptGetProvParam(Prov, PP_ENUMCONTAINERS, pbData, cbData, Flag) - так?
p.s. у меня отображаются контейнеры (после небольшой правки "CheckTest") |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 23.05.2013(UTC) Сообщений: 8 
|
именно так, но результат, к сожалению, тот же. скажите, пожалуйста, о вашей не большой правки.
|
|
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 14,190   Сказал «Спасибо»: 621 раз Поблагодарили: 2397 раз в 1886 постах
|
Автор: rudnik  именно так, но результат, к сожалению, тот же. скажите, пожалуйста, о вашей не большой правки. Т.к. "под рукой" нет обсуждаемого CSP, взял тот, что есть (имя и тип указал свои)
Код:function CheckTest: Boolean;
var
Prov: HCRYPTPROV;
pbData: PBYTE;
cbData: Cardinal;
Flag: Cardinal;
begin
Result := false;
if CryptAcquireContext(Prov, nil, 'Infotecs Cryptographic Service Provider', 2, CRYPT_VERIFYCONTEXT) then
begin
Flag := CRYPT_FIRST;
if CryptGetProvParam(Prov, PP_ENUMCONTAINERS, nil, cbData, Flag) then
begin
GetMem(pbData, cbData);
try
while CryptGetProvParam(Prov, PP_ENUMCONTAINERS, pbData, cbData, Flag) do
begin
Flag := CRYPT_NEXT;
ShowMessage(PChar(pbData));
end;
finally
FreeMem(pbData, cbData);
end;
end;
CryptReleaseContext(Prov, 0);
Result := true;
end;
end;
На выходе: сообщения с полным путем к контейнерам |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 23.05.2013(UTC) Сообщений: 8 
|
может дело не в CSP? если я правильно понял, то так выбирается провайдер по умолчанию (Microsoft Base Cryptographic Provider):
CryptAcquireContext(Prov, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT)
и даже в этом случае тот же вывод
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close