08.07.2005 10:45:41 | Программное задание пароля | | Ответов: 7 |
|
Alex | | |
|
Доброе время суток.
Использую функцию CryptSetProvParam(HCRYPTPROV hProv,DWORD dwParam,BYTE* pbData,DWORD dwFlags) с dwParam равным PP_KEYEXCHANGE_PIN для программного задания пароля.Непонятно следущее при первом вызове функции при неправильно заданном пароле она возвращает True при правильном тоже True.После того как пароль задан правильно при последующих вызовах с неправильным паролем возвращается False. Чем объясняется такое неодназначное поведение? И как можно одназначно определить по возвращаемому значение верно или неверно задан пароль? |
|
Ответы:
|
|
Никак нельзя определить по возвращаемому значению правильный пин или нет. Но при вызове фукций для работы с секретным ключом при неправильном пине вернется ошибка. |
|
|
А какую функцию можно использовать для получения это ошибки, чтобы при этом не вызывался стандартный UI(окошечка с сообщением о неправильном пароле и полем ввода) так как в коде осуществляется подмена стандартного UI собственным интерфейсом? |
|
|
Чтобы не было окон, поставить CRYPT_SILENT в AquireContext.
CryptExportKey(), CryptSignHash() |
|
|
Ставля в CryptAcquireContext флаг CRYPT_SILENT а при вызове CryptSignMessage все равно вываливается окно с запросм пароля.
Операционка XP вроде поддержка этого флага есть |
|
08.07.2005 14:54:25 | Василий |
|
CryptSignMessage сама вызывает CryptAcquireContext для доступа к секретному ключу, соответствующему сертификату. |
|
|
А как нибудь задать параметры для этого автоматического вызова CryptAcquireContext можно?(в частности флаг CRYPT_SILENT :-)) |
|
08.07.2005 17:24:31 | Василий |
|
параметр dwFlags структуры CRYPT_SIGN_MESSAGE_PARA задать в CRYPT_MESSAGE_SILENT_KEYSET_FLAG
Но!
Windows 2000/NT and Windows Me/98/95: CRYPT_MESSAGE_SILENT_KEYSET_FLAG flag is not supported |
|