| 
	Статус: Участник
 Группы: Участники
Зарегистрирован: 13.12.2011(UTC)
 Сообщений: 22
 
 | 
            
		      
                Андрей * написал:PROV_RSA_FULL - если ты явно указал...  Цитата: номер провайдера всегда возвращается одно и то же.. а в итоговом приложении - тоже будешь "по контейнеру" искать? p.s. может... начнешь с сертификатов? Список личных, информация о каждом и т.п., путь к контейнеру, криптопровайдер и наличие закрытого ключа....   В общем, дело такое: Для тестов создал на Крипто Про сертификат с секретным ключом. Для точности даю ссылку, где делал сертификат: http://www.cryptopro.ru/certsrv/ обменялись сертификатами со второй стороной. Они говорят, что нужно Гостовский алгоритм подписи ЭЦП. Установил я программу Крипто Апи 2.0, далее через панель управления зашел в крипто Про 2.0, там создал реестр и экспортнул туда сертификат. Теперь из этого реестра надо выхватывать сертификат. Никак не получается... как это делать? Вот нашел код один: Код:
Function GetSignSignature(ASignText: String): String;
var
  Prov: HCRYPTPROV;
  Hash: HCRYPTHASH;
  BufLen: DWORD;
  AContainerName: string;
begin
  AContainerName := DoChooseContainer;
  // Подключаемся к провайдеру
  CryptAcquireContext(@Prov, PChar(AContainerName), PChar(CP_GR3410_2001_PROV_A),   PROV_GOST_2001_DH, 0);
  // Создаем ХЭШ объект
  CryptCreateHash(Prov, 32798, 0, 0, @Hash);
  // Считаем ХЭШ
  CryptHashData(Hash, PByte(ASignText), Length(ASignText), 0);
  // Определяем длину
  BufLen:=0;
  if not CryptSignHash(Hash, AT_SIGNATURE, nil, 0, nil, @BufLen)
  then
  begin
    ShowMessage(SysErrorMessage(GetLastError));
  end;
  // Забираем
  if BufLen>0 then begin
    SetLength(Result, BufLen);
    CryptSignHash(Hash, AT_SIGNATURE, nil, 0, PByte(Result), @BufLen)
  end;
  CryptDestroyHash(Hash);
  CryptReleaseContext(Prov,0);
End;
 Только у меня не определяются константы CP_GR3410_2001_PROV_A,   PROV_GOST_2001_DH - где их брать? А вообще я проверял ошибки с помощью Win32Check - говорит, что не найдет пары ключей... Вот и получается, что не цепляет он контейнер(реестр) |