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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline galitsky  
#1 Оставлено : 27 ноября 2013 г. 16:47:40(UTC)
galitsky

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

Группы: Участники
Зарегистрирован: 27.11.2013(UTC)
Сообщений: 1
Российская Федерация
Откуда: Мск

добрый день. пишу утилиту для создания ЭЦП для файлов. файлов может быть много, утилита вызывается из другого приложения для каждого файла отдельно, пин-код токена передаётся утилите этим приложением через командную строку.

подписываемые файлы могут быть довольно объемными, поэтому используется CryptMsgUpdate. т.е. схема примерно такая:
CryptAcquireContextA(&tmpProv, containerName, NULL, PROV_GOST_2001_DH, 0);
CryptSetProvParam(tmpProv,PP_SIGNATURE_PIN,(BYTE *)pinCode,0);
CryptGetUserKey(tmpProv, AT_SIGNATURE, &hKey);

...
while(!feof(hFile))
{
cbRead = (DWORD)fread(buffer, 1, BUFSIZE, hFile);
CryptMsgUpdate(hMsg, buffer, cbRead, feof(hFile));
}
...

имеется следующая проблема, - если пользователь промазал по клавише и ввёл неверный пин, то CryptMsgUpdate автоматом вызывает стандартный диалог ввода пин-кода.

вопрос, - как отловить неправильный пин, т.е. вместо вызова диалога, например, вернуть вызывающему приложению код ошибки?

Отредактировано пользователем 27 ноября 2013 г. 17:41:51(UTC)  | Причина: Не указана

Offline Al_25  
#2 Оставлено : 16 января 2014 г. 7:00:19(UTC)
Al_25

Статус: Активный участник

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

Сказал(а) «Спасибо»: 4 раз
Автор: galitsky Перейти к цитате
добрый день. пишу утилиту для создания ЭЦП для файлов. файлов может быть много, утилита вызывается из другого приложения для каждого файла отдельно, пин-код токена передаётся утилите этим приложением через командную строку.

подписываемые файлы могут быть довольно объемными, поэтому используется CryptMsgUpdate. т.е. схема примерно такая:
CryptAcquireContextA(&tmpProv, containerName, NULL, PROV_GOST_2001_DH, 0);
CryptSetProvParam(tmpProv,PP_SIGNATURE_PIN,(BYTE *)pinCode,0);
CryptGetUserKey(tmpProv, AT_SIGNATURE, &hKey);

...
while(!feof(hFile))
{
cbRead = (DWORD)fread(buffer, 1, BUFSIZE, hFile);
CryptMsgUpdate(hMsg, buffer, cbRead, feof(hFile));
}
...

имеется следующая проблема, - если пользователь промазал по клавише и ввёл неверный пин, то CryptMsgUpdate автоматом вызывает стандартный диалог ввода пин-кода.

вопрос, - как отловить неправильный пин, т.е. вместо вызова диалога, например, вернуть вызывающему приложению код ошибки?


Может у Вас из 3х первых функций, где то false возвращает при неправильном пин-коде. и это можно отловить

Отредактировано пользователем 16 января 2014 г. 7:00:59(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#3 Оставлено : 16 января 2014 г. 7:10:27(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,457
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 39 раз
Поблагодарили: 750 раз в 645 постах
Открыть контекст в сайлент режиме и ловить ошибки.
Знания в базе знаний, поддержка в центре поддержки
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.