Коршунов Дмитрий Опубликовано 31 Октября 2016 Жалоба Поделиться Опубликовано 31 Октября 2016 Имеется контейнер ключей с установленным паролем. При работе через ViPNET CSP (csp_settings_app.exe), есть возможность через свойства контейнера посмотреть сертификат. При этом никаких запросов пароля не происходит! Подскажите, как программно выгрузить сертификат из контейнера без запроса пароля. Пытаюсь это сделать через CryptGetKeyParam c параметром KP_CERTIFICATE. Однако вызов этой функции требует декриптор ключа. Его получение через функцию CryptGetUserKey приводит к запросу пароля. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
cav Опубликовано 1 Ноября 2016 Жалоба Поделиться Опубликовано 1 Ноября 2016 Делаете все правильно: CryptAcquireContext() CryptGetUserKey(AT_SIGNTAURE) | CryptGetUserKey(AT_KEYEXCHNAGE) GetKeyParam(KP_CERTFICATE) С какого носителя забираете сертификат? Какой CSP установлен? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Коршунов Дмитрий Опубликовано 1 Ноября 2016 Автор Жалоба Поделиться Опубликовано 1 Ноября 2016 Версия VipNeT CSP - 4.2 (2.36190) Контейнер ключей расположен на USB "флешке" и зарегистрирован для CSP с помощью кнопки <Добавить контейнер>, При получении списка контейнеров виден как h:/infotecs/containers/abn_0cf8.key Функция CryptGetProvParam с параметром PP_CONTAINER возвращает пусто. Функция CryptGetProvParam с параметром PP_UNIQWUE_CONTAINER тоже возвращает пусто. Как я и писал, вызов функции CryptGetUserKey(AT_KEYEXCHNAGE) приводит к появлению окна запроса пароля (вложил картинку). Это наверное правильно - я получаю доступ к контейнеру ключей. Но как получить доступ без пароля к публичному ключу. Как это делает сам CSP, отображая сертификат? Вызов CryptExportPublicKeyInfo тоже приводит к запросу пароля. Если открыть контейнер с флагом CRYPT_SILENT получаю ошибку: Поставщик не смог выполнить действие, поскольку контекст был получен как "тихий". Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.