09.06.2005 14:12:38Проблема с сохранением пароля Ответов: 3
Иван
Здравствуйте, разработчики CRYPTO PRO.

Мы приобрели у вас версию Крипто-Про CSP 3.0. У нас возникли следующие проблемы:
1. При вводе трижды неправильного пароля а затем правильного пароля, следующий раз при постановке ЭЦП пароль почему-то не опрашивается (экран в левом верхнем углу не появляется), а документ подписывается.

Наша последовательность вызова API-функций ( DELPHI ) для простановки ЭЦП:

CryptAcquireContext(@hProv, cont, nil, 75, 0)
alg := CALG_GR3411;
CryptCreateHash(hProv, alg, 0, 0, @hash)
CryptHashData(hash, @buf, buf_len, 0)
CryptSignHash(hash, AT_SIGNATURE, nil, 0, nil, @size) // определение длины
CryptSignHash(hash, AT_SIGNATURE, nil, 0, signature, @size)
CryptDestroyHash(hash)
CryptReleaseContext(hProv, 0)

Подскажите, пожалуйста, что неверно.

2. Есть ли возможность заблокировать "флажок" Сохранить пароль?
 
Ответы:
10.06.2005 17:22:59Василий
Пароль может не спрашиваться в случаях:
1) при вводе пароля установили флажок "Сохранить пароль"
2) используется CSP 3.0 KC2 и включено кеширование ключей
3) не закрыт контекст контейнера
Соответственно, пароль не потребуется до:
1) Очистки запомненных паролей
2) Перезапуска службы или загрузки в кеш достаточного числа других ключей
3) закрытия контекста контейнера

Запретить возможность запоминания пароля можно, например, если запретить пользователю права на запись в HKEY_LOCAL_MACHINE\SOFTWARE\Crypto Pro\Settings\USERS\<Sid пользователя>\KeyDevices\passwords\<имя считывателя>
где <имя считывателя> - REGISTRY, FAT12 и т.д.
13.06.2005 12:10:40Иван
Здравствуйте.

Возникают следующие вопросы:
1. Какой API-функцией можно очистить запомненные пароли ?
2. Разве CryptReleaseContext(hProv,0) не закрывает контекст контейнера ?
14.06.2005 10:41:32Василий
1) Для каждого контнейнера: CryptSetProvParam(...PP_KEYEXCHANGE_PIN...) с NULL.
Или почистить в реестре.

по поводу 2 - закрывает, конечно. Я просто описывал общий случай.