Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.07.2014(UTC) Сообщений: 84 Откуда: Тольятти Сказал(а) «Спасибо»: 1 раз
|
Добрый день.
Пытаюсь организовать свой запрос пароля к контейнеру. При вызове все равно выдает запрос на пароль стандартное.
memset(&decryptParams, 0, sizeof(CRYPT_DECRYPT_MESSAGE_PARA)); decryptParams.cbSize = sizeof(CRYPT_DECRYPT_MESSAGE_PARA); decryptParams.dwMsgAndCertEncodingType = MY_ENCODING_TYPE; decryptParams.cCertStore = 1; decryptParams.rghCertStore = &hStoreHandle; decryptParams.dwFlags =CRYPT_MESSAGE_SILENT_KEYSET_FLAG; DWORD size; if(!CryptDecryptMessage(&decryptParams,mem_input,mem_len,mem_output,&size,NULL))
Данный флаг должен работать?
Или каким образом можно его убрать или проверить валидность пароля к контейнеру без стандартного окна CSP?
Пароль устанавливается нормально. CryptSetProvParam(hProv,PP_KEYEXCHANGE_PIN ,pass,0)
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.07.2014(UTC) Сообщений: 84 Откуда: Тольятти Сказал(а) «Спасибо»: 1 раз
|
if(!CryptAcquireContext(&hCryptProv,0,NULL,PROV_GOST_2001_DH, CRYPT_SILENT)) CRYPT_SILENT соответственно тоже стоит
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
а куда вы передаете hCryptProv? Нужно использовать более низкоуровневое api (cryptmsgopentodecode) или открыть нужный контейнер предварительно и задать пин. |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 09.07.2014(UTC) Сообщений: 84 Откуда: Тольятти Сказал(а) «Спасибо»: 1 раз
|
Ну да Вы правы, hCryptProv учасвует только в вызове хранилища: hStoreHandle = CertOpenSystemStore(hCryptProv, "MY");
А флаг CRYPT_MESSAGE_SILENT_KEYSET_FLAG не должна слушать CryptDecryptMessage?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,377 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 32 раз Поблагодарили: 706 раз в 614 постах
|
Должна, но возможно у нас не поддерживается. Разберемся. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 17.08.2017(UTC) Сообщений: 1
|
Автор: maxdm или открыть нужный контейнер предварительно и задать пин Возникла похожая проблема... Цитата:HCERTSTORE store = CertOpenStore(CERT_STORE_PROV_SYSTEM_A, 0, 0, CERT_STORE_OPEN_EXISTING_FLAG | CERT_STORE_READONLY_FLAG | CERT_SYSTEM_STORE_CURRENT_USER, "MY"); //... CRYPT_DECRYPT_MESSAGE_PARA decryptParams; memset(&decryptParams, 0, sizeof(CRYPT_DECRYPT_MESSAGE_PARA)); decryptParams.cbSize = sizeof(CRYPT_DECRYPT_MESSAGE_PARA); decryptParams.dwMsgAndCertEncodingType = PKCS_7_ASN_ENCODING | X509_ASN_ENCODING; decryptParams.cCertStore = 1; decryptParams.rghCertStore = &store; decryptParams.dwFlags = CRYPT_MESSAGE_SILENT_KEYSET_FLAG; // ... result = CryptDecryptMessage(&decryptParams, cryptData, cryptDataLength, realData, &realDataLength, NULL); В итоге получаю ошибку 0x8010006B (неверный пин), если убираю флаг: Цитата:decryptParams.dwFlags = CRYPT_MESSAGE_SILENT_KEYSET_FLAG; то происходит запрос пин-кода, ввожу и все нормально, но вопрос, как можно открыть контейнер с предустановленным pin, информации по этому вопросу что-то я не нашел.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close