Ключевое слово в защите информации
ключевое слово
в защите информации
Получить ГОСТ TLS-сертификат для домена (SSL-сертификат)
Добро пожаловать, Гость! Чтобы использовать все возможности Вход или Регистрация.

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ShurikEv  
#1 Оставлено : 25 августа 2015 г. 5:53:08(UTC)
ShurikEv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.08.2013(UTC)
Сообщений: 67
Российская Федерация
Откуда: Новосибирск

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 2 раз в 2 постах
Добрый день, коллеги.
Может кто подскажет как быть?
На eToken есть контейнер закрытого ключа. Для подписывания использую пример:
http://cpdn.cryptopro.ru...ryptoServiceProvider.htm

Пытается найти закрытый ключ в каком-то рандомном контейнере. Задаю контейнер явно:
Код:
CspParameters cspParameters = new CspParameters(75);
cspParameters.KeyContainerName = "MCPUEpOv";


Подпись проходит отлично.
Вопрос: как показать пользователю окно выбора контейнера? Чтобы значение cspParameters.KeyContainerName в коде не прописывать.

Обычный метод не подходит (да и не должен):
Код:
X509Store store = new X509Store("MY", StoreLocation.CurrentUser);
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly);

X509Certificate2Collection collection = store.Certificates;
X509Certificate2Collection fcollection = collection.Find(X509FindType.FindByTimeValid, DateTime.Now, false);
X509Certificate2Collection scollection = X509Certificate2UI.SelectFromCollection(fcollection, "Выбор сертификата", "Выберете сертификат из списка, чтобы подписать сообщение", X509SelectionFlag.SingleSelection);


А вообще цель - это получение отсоединенной электронной подписи документа. Это реально сделать?
В принципе сертификат достать можно так:

Код:

// Открываем контейнер.
CspParameters cspParameters = new CspParameters(75);
cspParameters.KeyContainerName = args[0];
Gost3410CryptoServiceProvider prov = new Gost3410CryptoServiceProvider(cspParameters);
// Достаем из него сертификат
X509Certificate2 cert = prov.ContainerCertificate;

Тогда можно получить отсоединенную ЭП без проблем. А как быть если сертификат закрытого ключа не экспортируемый?

Отредактировано пользователем 25 августа 2015 г. 6:02:24(UTC)  | Причина: Не указана

Offline Максим Коллегин  
#2 Оставлено : 25 августа 2015 г. 9:14:22(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Диалог выбора контейнера можно позвать статическим методом у Gost3410CryptoServiceProvider SelectContainer.
Сертификат всегда "экспортируемый"
Получение отсоединенной подписи смотрите в примере: \Samples\Simple\CMS\cs\DetachedSignature.cs

Отредактировано пользователем 25 августа 2015 г. 9:15:42(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в центре поддержки
Offline ShurikEv  
#3 Оставлено : 3 сентября 2015 г. 6:35:06(UTC)
ShurikEv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.08.2013(UTC)
Сообщений: 67
Российская Федерация
Откуда: Новосибирск

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 2 раз в 2 постах
Автор: maxdm Перейти к цитате
Диалог выбора контейнера можно позвать статическим методом у Gost3410CryptoServiceProvider SelectContainer.
Сертификат всегда "экспортируемый"
Получение отсоединенной подписи смотрите в примере: \Samples\Simple\CMS\cs\DetachedSignature.cs


Странно что ответ пропал. Вроде оставлял.

Спасибо, помогло. А есть более дружественный диалог выбора контейнера?
Offline Максим Коллегин  
#4 Оставлено : 3 сентября 2015 г. 8:04:24(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
В соседней теме.
Знания в базе знаний, поддержка в центре поддержки
Offline ShurikEv  
#5 Оставлено : 3 сентября 2015 г. 10:04:48(UTC)
ShurikEv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.08.2013(UTC)
Сообщений: 67
Российская Федерация
Откуда: Новосибирск

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 2 раз в 2 постах
Автор: maxdm Перейти к цитате
В соседней теме.
Это да, но я же использую
Код:
var containerName = Gost3410CryptoServiceProvider.SelectContainer(false, false, IntPtr.Zero);

т.к. сертификат на eTokene

Offline Максим Коллегин  
#6 Оставлено : 3 сентября 2015 г. 10:27:17(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Более дружественный мы пока только делаем. Можете нарисовать свой.
Знания в базе знаний, поддержка в центре поддержки
Offline ShurikEv  
#7 Оставлено : 3 сентября 2015 г. 10:29:00(UTC)
ShurikEv

Статус: Активный участник

Группы: Участники
Зарегистрирован: 05.08.2013(UTC)
Сообщений: 67
Российская Федерация
Откуда: Новосибирск

Сказал(а) «Спасибо»: 2 раз
Поблагодарили: 2 раз в 2 постах
Автор: maxdm Перейти к цитате
Более дружественный мы пока только делаем. Можете нарисовать свой.
Долго еще делать? Мы лучше подождём :)

Offline Максим Коллегин  
#8 Оставлено : 3 сентября 2015 г. 10:43:58(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Не меньше полгода, это для новой версии CSP.
Знания в базе знаний, поддержка в центре поддержки
Offline shadow927  
#9 Оставлено : 10 декабря 2015 г. 13:30:51(UTC)
shadow927

Статус: Новичок

Группы: Участники
Зарегистрирован: 01.12.2015(UTC)
Сообщений: 9
Российская Федерация
Откуда: Москва

Сказал(а) «Спасибо»: 4 раз
А можно ли выдрать через Crypto.NET список наименований ключевых контейнеров? Для создания "дружественного диалога"

Стоит Crypto Pro CSP 3.6.7777
Offline Максим Коллегин  
#10 Оставлено : 10 декабря 2015 г. 14:46:54(UTC)
Максим Коллегин

Статус: Сотрудник

Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC)
Сообщений: 6,433
Мужчина
Откуда: КРИПТО-ПРО

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Нет, только через P\Invoke CryptGetProvParam PP_ENUMCONTAINERS
Обратите внимание на самый первый результат из Google

Отредактировано пользователем 10 декабря 2015 г. 14:47:57(UTC)  | Причина: Не указана

Знания в базе знаний, поддержка в центре поддержки
thanks 1 пользователь поблагодарил Максим Коллегин за этот пост.
shadow927 оставлено 10.12.2015(UTC)
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.