Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.05.2012(UTC) Сообщений: 171 Откуда: Екатеринбург
Сказал(а) «Спасибо»: 46 раз Поблагодарили: 23 раз в 19 постах
|
Добрый день. Проблема в следующем: При генерации ключа происходит вызов биологического ДСЧ (при отсутствии хардверного), и запрос пин-кода контейнера. Контейнер создается на смарт-карте. Если пользователь вводит неверный пин, то CryptGenKey возвращает 0x8010006b (SCARD_W_WRONG_CHV) Приходится заново вызывать CryptGenKey, снова био ДСЧ, и.т.д. Выход из ситуации видится такой: создать свой диалог ввода пин-кода, его неким образом верифицировать (как вариант логиниться на токен через PKCS11 или APDU), а затем уже вызывать CryptAcquireContext с CRYPT_NEWKEYSET|CRYPT_SILENT. Вопрос: возможно, я усложняю все, и есть вариант проще?
Код: if(!CryptAcquireContext(&cryptoProvider,container,provider_string,provider_id,CRYPT_NEWKEYSET)) { dwError=GetLastError(); } ... int pin_retries=3; bool genkey_done=false; do { if(!CryptGenKey(cryptoProvider,AT_KEYEXCHANGE,exportable?CRYPT_EXPORTABLE:0,&hKey)) { dwError=GetLastError(); #ifdef _DEBUG showErrorMessage(NULL,L"CryptGenKey failed, error 0x%08x",dwError); #endif if(dwError==0x8010006b) { // wrong pin pin_retries--; if(!pin_retries) break; } else break; } else genkey_done=true; } while(!genkey_done);
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Если CSP достаточно свежий, то вызов CryptSetProvParam(PP_KEYSET_SEC_DESCR) приведет к запросу пина. |
|
1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 03.05.2012(UTC) Сообщений: 171 Откуда: Екатеринбург
Сказал(а) «Спасибо»: 46 раз Поблагодарили: 23 раз в 19 постах
|
Подниму тему. Вызов CryptSetProvParam(provider, PP_KEYSET_SEC_DESCR, 0, 0) в некоторых случаях возвращает NTE_BAD_TYPE (0x8009000a) Условия: CryptoPro CSP 3.6.7777, Win7 SP1 32/64, носитель Rutoken Lite Зависимость установить не удалось, с eToken проблема отсутствует. Наличие/отсутствие драйверов от Актива на проблему не влияет. Переустановка КриптоПро/драйверов/модуля рутокена для КриптоПро ничего не дает. CryptGenKey и все остальное работает как положено. Чем можно попробовать диагностировать проблему? UPD: Разобрался, это происходит при включенной службе хранения ключей и использовании биологического ДСЧ. Отредактировано пользователем 24 июля 2015 г. 12:25:45(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close