Коршунов Дмитрий Posted October 31, 2016 Report Share Posted October 31, 2016 Имеется контейнер ключей с установленным паролем. При работе через ViPNET CSP (csp_settings_app.exe), есть возможность через свойства контейнера посмотреть сертификат. При этом никаких запросов пароля не происходит! Подскажите, как программно выгрузить сертификат из контейнера без запроса пароля. Пытаюсь это сделать через CryptGetKeyParam c параметром KP_CERTIFICATE. Однако вызов этой функции требует декриптор ключа. Его получение через функцию CryptGetUserKey приводит к запросу пароля. Quote Link to comment Share on other sites More sharing options...
cav Posted November 1, 2016 Report Share Posted November 1, 2016 Делаете все правильно: CryptAcquireContext() CryptGetUserKey(AT_SIGNTAURE) | CryptGetUserKey(AT_KEYEXCHNAGE) GetKeyParam(KP_CERTFICATE) С какого носителя забираете сертификат? Какой CSP установлен? Quote Link to comment Share on other sites More sharing options...
Коршунов Дмитрий Posted November 1, 2016 Author Report Share Posted November 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 получаю ошибку: Поставщик не смог выполнить действие, поскольку контекст был получен как "тихий". Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.