Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход. Новые регистрации запрещены.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline linns  
#1 Оставлено : 3 ноября 2009 г. 17:56:39(UTC)
linns

Статус: Новичок

Группы: Участники
Зарегистрирован: 25.09.2009(UTC)
Сообщений: 7
Откуда: russia

Здравствуйте!

Нижеприведенный код (DELPHI) работает при использовании ключа, хранящегося на флешке или в реестре, но не работает с ключом, хранящимся на eToken.

Код:
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;

CryptSignHash возвращает False, при этом код ошибки 0, т.е. "Операция успешно завершена".
Где грабли?
Offline linns  
#2 Оставлено : 5 ноября 2009 г. 14:41:06(UTC)
linns

Статус: Новичок

Группы: Участники
Зарегистрирован: 25.09.2009(UTC)
Сообщений: 7
Откуда: russia

итак, грабли успешно найдены.
Ключ на etoken был создан как AT_KEYEXCHANGE, а не AT_SIGNATURE.
т.е. нужно обрабатывать оба типа ключей.
ответ нашел тут: http://sql.ru/forum/actualthread.aspx?tid=709068
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.