Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.05.2009(UTC) Сообщений: 42
|
Добрый день! Подскажите, пожалуйста, существует ли способ выполнить перечисление контейнеров ключевых пар определенного криптопровайдера. Если конкретно, то меня интересует КриптоПро. Я пишу на C#. Замысел такой. Хочется сделать более удобным интерфейс настроек для пользователя. Если перечислить все контейнеры так, чтоб пользователь видел их имена, а я получал бы их полные имена. Тогда пользователь мог бы выбрать по имени контейнер с ключами, а я бы привязал его к "процессу".
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Простого способа нет. Вариантов обхода несколько. 1. Вариант, который ближе к Microsoft - отталкиваться от сертификатов, а не от контейнеров. Выдавать окно не с именами контейнеров, а с именами сертификатов из хранилища MY. А если необходим секретный ключ, то добираться к нему через X509Certificate2.PrivateKey. Если же есть необходимость добраться до имени контейнера, то действовать как-то так: Код:AsymmetricAlgorithm asym = x509.PrivateKey;
ICspAsymmetricAlgorithm iasym = asym as ICspAsymmetricAlgorithm;
CspKeyContainerInfo info = iasym.CspKeyContainerInfo;
Console.WriteLine("Имя контейнера:"+info.KeyContainerName);
Отсеивать же сертификаты КриптоПро можно по алгоритму ключа x509.GetKeyAlgorithm() == 1.2.643.2.2.19 2. Действовать через P/Invoke, через CryptGetProvParam( PP_ENUMCONTAINERS ) |
С уважением, Александр. |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.05.2009(UTC) Сообщений: 42
|
Спасибо за совет. Второй способ попробую. А вот насчет первого. Подскажите, я наверное что-то недопонимаю. Я генерирую ключевую пару на считывателе, запрашиваю сертификат, получаю его (ЦС от Microsoft). Все это отдаю на клиентскую машину. (Физически переношу считыватель и сертификат) и у клиента пытаюсь связать сертификат с ключами. Для этого мне надо выбрать контейнер( вот здесь я и хочу список всех сонтейнеров привести), а дальше получаю AsymmetricAlgorithm из него и присваиваю его x509.PrivateKey. Может есть более удобный путь?
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Все правильно, только небольшое дополнение к "...из него и присваиваю его x509.PrivateKey." и сохраняете в хранилище MY. Все описанное Вами обычно проделывается один раз при переносе на другую машину (обычно раз в год) и это можно сделать при помощи контрольной панели КриптоПро CSP (есть и другие способы...). В дальнейшем (после установки сертификата в хранилище со связкой с секретным ключем) можно выдавать уже только окно выбора сертификата и от него плясать на секретный ключ.
Если же речь именно об установки сертификата из контейнера в хранилище MY, то только P/Invoke. А интересно именно перечисление контейнеров или окно выбора контейнера (такое как в контрольной панели на кнопке Browse)? |
С уважением, Александр. |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.05.2009(UTC) Сообщений: 42
|
Челпанов А. написал: А интересно именно перечисление контейнеров или окно выбора контейнера (такое как в контрольной панели на кнопке Browse)?
Окно выбора - отличная вещь. А есть такая возможность его вызывать и получать из него выбор?
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Убедили... Gost3410CryptoServiceProvider.SelectContainer(...) - выдает окно выбора контейнера Gost3410CryptoServiceProvider.ContainerCertificate{ get; set } - получение/установка из/в контейнер simple.zip\Certificate\InstallMy.cs - пример установки сертификата из контейнера с установкой ссылки на секретный ключ. --- Версию выложим на следующей неделе. |
С уважением, Александр. |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Новая версия 1.0.3484.0, выложена и содержит описанные выше изменения. Пример в SDK включен. Вопрос исчерпан, тема закрыта. |
С уважением, Александр. |
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 24.12.2007(UTC) Сообщений: 390 Откуда: КриптоПро Поблагодарили: 2 раз в 2 постах
|
Функция SelectContainer при fqcn=true имеет особенность при функционировании с CSP 2.0 и CSP 3.0 см тему на форуме |
С уважением, Александр. |
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close