Статус: Активный участник
Группы: Участники
Зарегистрирован: 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)
| Причина: Не указана
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
Диалог выбора контейнера можно позвать статическим методом у Gost3410CryptoServiceProvider SelectContainer. Сертификат всегда "экспортируемый" Получение отсоединенной подписи смотрите в примере: \Samples\Simple\CMS\cs\DetachedSignature.cs Отредактировано пользователем 25 августа 2015 г. 9:15:42(UTC)
| Причина: Не указана |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.08.2013(UTC) Сообщений: 67  Откуда: Новосибирск Сказал(а) «Спасибо»: 2 раз Поблагодарили: 2 раз в 2 постах
|
Автор: maxdm  Диалог выбора контейнера можно позвать статическим методом у Gost3410CryptoServiceProvider SelectContainer. Сертификат всегда "экспортируемый" Получение отсоединенной подписи смотрите в примере: \Samples\Simple\CMS\cs\DetachedSignature.cs Странно что ответ пропал. Вроде оставлял. Спасибо, помогло. А есть более дружественный диалог выбора контейнера?
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
|
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.08.2013(UTC) Сообщений: 67  Откуда: Новосибирск Сказал(а) «Спасибо»: 2 раз Поблагодарили: 2 раз в 2 постах
|
Автор: maxdm  Это да, но я же использую Код:var containerName = Gost3410CryptoServiceProvider.SelectContainer(false, false, IntPtr.Zero);
т.к. сертификат на eTokene
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
Более дружественный мы пока только делаем. Можете нарисовать свой. |
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 05.08.2013(UTC) Сообщений: 67  Откуда: Новосибирск Сказал(а) «Спасибо»: 2 раз Поблагодарили: 2 раз в 2 постах
|
Автор: maxdm  Более дружественный мы пока только делаем. Можете нарисовать свой. Долго еще делать? Мы лучше подождём :)
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
Не меньше полгода, это для новой версии CSP. |
|
|
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 01.12.2015(UTC) Сообщений: 9  Откуда: Москва Сказал(а) «Спасибо»: 4 раз
|
А можно ли выдрать через Crypto.NET список наименований ключевых контейнеров? Для создания "дружественного диалога"
Стоит Crypto Pro CSP 3.6.7777
|
|
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,433  Откуда: КРИПТО-ПРО Сказал «Спасибо»: 38 раз Поблагодарили: 737 раз в 634 постах
|
Нет, только через P\Invoke CryptGetProvParam PP_ENUMCONTAINERS Обратите внимание на самый первый результат из Google Отредактировано пользователем 10 декабря 2015 г. 14:47:57(UTC)
| Причина: Не указана |
|
 1 пользователь поблагодарил Максим Коллегин за этот пост.
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close