Статус: Новичок
Группы: Участники
Зарегистрирован: 19.12.2017(UTC) Сообщений: 5
Сказал(а) «Спасибо»: 1 раз
|
Добрый день,
Вопрос первый.
Есть сертификат с запароленным контейнером закрытого ключа. Хочу зашифровать/расшировать узел xml-документа с помощью сертификата (примерно как в примерах cryptopro sdk) но категорически не хочу окно ввода пин'а ибо сервер...
Проблема следующая: при расшифровке узла xml'я, и при _не задании_ пин кода случается окошко ввода этого самого пина. запрос пина вызывает вот этот метод: CPEncryptedXml.DecryptKeyClass
Например, при вычислении подписи, метод ComputeSignature имеет параметр silent, и при наличии пина на контейнер и не задании самого пина случается CryptographicException, что логично. Но аналогичного механизма при расшифровке xml'я (аналог параметра silent) я не нашел. Как быть?
Вопрос второй.
Если я устанавливаю пин-код на контейнер в коде:
((Gost3410CryptoServiceProvider)(certificate.PrivateKey)).SetContainerPassword("12345");
то как потом его сбросить (чтобы при последующем вызове без указания пин-кода случилось исключение/окно запроса пин-кода)?
Пробовал делать так:
certificate.PrivateKey.Dispose(); certificate.Reset();
но, после магии в CPEncryptedXml.DecryptKeyClass закрытый ключ все равно доступен без пина.
ps. CSP 4.0.9914 версия шарпея 1.0.6397.0
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
На сервере лучше бы использовать контейнер без пина. Для сброса пина видимо нужно использовать вызовы p\invoke CryptSetProvParam(PP_SIGNATURE_PIN, NULL)
В следующих версиях КриптоПро .NET должен работать этот вызов: ((Gost3410CryptoServiceProvider)(certificate.PrivateKey)).SetContainerPassword(null); |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.12.2017(UTC) Сообщений: 5
Сказал(а) «Спасибо»: 1 раз
|
Автор: Максим Коллегин На сервере лучше бы использовать контейнер без пина.
Этим я никак не могу управлять... Автор: Максим Коллегин В следующих версиях КриптоПро .NET должен работать этот вызов: ((Gost3410CryptoServiceProvider)(certificate.PrivateKey)).SetContainerPassword(null);
Во!Вот это будет прям очень супер... буду ждать. Спс.
|
|
|
|
Статус: Сотрудник
Группы: Администраторы
Зарегистрирован: 12.12.2007(UTC) Сообщений: 6,393 Откуда: КРИПТО-ПРО Сказал «Спасибо»: 37 раз Поблагодарили: 717 раз в 621 постах
|
Сделали. Выложил в директории 1.0.6675.0 Протестируйте и отпишите по возможности - выложу для всех. |
|
|
|
|
Статус: Новичок
Группы: Участники
Зарегистрирован: 19.12.2017(UTC) Сообщений: 5
Сказал(а) «Спасибо»: 1 раз
|
Автор: Максим Коллегин Протестируйте и отпишите по возможности - выложу для всех.
На первый взгляд, все работает как надо... По крайней мере, модульные тесты, которые раньше падали теперь работают... Спасибо за оперативность! Еще бы педаль для EncryptedXml, чтоб вместо запроса пина вываливался эксепшн - было бы вообще отлично.
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 23.12.2019(UTC) Сообщений: 12 Откуда: Минск
|
Автор: Максим Коллегин На сервере лучше бы использовать контейнер без пина. А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой. Отредактировано пользователем 23 декабря 2019 г. 17:58:55(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: a.shandov Автор: Максим Коллегин На сервере лучше бы использовать контейнер без пина. А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой. Сделать копию контейнера, при копировании будет запрос пароля, не указывать его. После этого привязать сертификат к этому контейнеру. Быстрый вариант: через консоль управления сертификатами - экспорт в pfx с закрытым ключом и установка из него. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 23.12.2019(UTC) Сообщений: 12 Откуда: Минск
|
Автор: Андрей Писарев Автор: a.shandov Автор: Максим Коллегин На сервере лучше бы использовать контейнер без пина. А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой. Сделать копию контейнера, при копировании будет запрос пароля, не указывать его. После этого привязать сертификат к этому контейнеру. Быстрый вариант: через консоль управления сертификатами - экспорт в pfx с закрытым ключом и установка из него. Я при создании не задаю пароль. Я работаю c SDK, поэтому ручные действия в CSP не подходят. И я использую подпись без сертификата, на закрытом и открытом ключах.
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 26.07.2011(UTC) Сообщений: 13,340 Сказал «Спасибо»: 550 раз Поблагодарили: 2212 раз в 1727 постах
|
Автор: a.shandov Автор: Андрей Писарев Автор: a.shandov Автор: Максим Коллегин На сервере лучше бы использовать контейнер без пина. А где можно посмотреть пример как задать контейнер без пина? Т.к. у меня такая же ошибка, но пин я не задаю, он остается пустой. Сделать копию контейнера, при копировании будет запрос пароля, не указывать его. После этого привязать сертификат к этому контейнеру. Быстрый вариант: через консоль управления сертификатами - экспорт в pfx с закрытым ключом и установка из него. Я при создании не задаю пароль. Я работаю c SDK, поэтому ручные действия в CSP не подходят. И я использую подпись без сертификата, на закрытом и открытом ключах. Так нужно сделать это один раз, через панель управления КриптоПро CSP. Скопировать контейнер и не указать пароль, тогда будет новый контейнер без пароля, что и требуется в исходном вопросе. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close