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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline elirector  
#1 Оставлено : 5 февраля 2016 г. 18:06:27(UTC)
elirector

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

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

Сказал(а) «Спасибо»: 1 раз
Добрый день. Имеем считыватель смарт-карт, в который пользователи (которых будет много) будут вставлять свои персональные карты. При первой вставке новой карты, сертификат из контейнера импортируется в локальное хранилище, затем, даже если пользователь извлёк карту, сертификат легко открывается из хранилища, например, про отпечатку. Однако при любом обращении к приватному ключу, если карта была извлечена, выходит окно "Вставьте ключевой носитель". Это правильное поведение, конечно, но показывать стандартное окно КриптоПро CSP пользователю для нас неприемлимо. Можно ли как-то заменить это окно выкидыванием эксепшна или проверить перед обращением к приватному ключу, сможем ли мы его получить (вставлен ли ключевой носитель соответствующий сертификату) не считывая сам ключ, чтобы мы в своём интерфейсе могли выдать своё уведомление пользователю о том, что нужно вставить карту?
Offline Максим Коллегин  
#2 Оставлено : 5 февраля 2016 г. 18:16:52(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Используйте CRYPT_SILENT
Знания в базе знаний, поддержка в центре поддержки
Offline elirector  
#3 Оставлено : 8 февраля 2016 г. 11:11:19(UTC)
elirector

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: maxdm Перейти к цитате
Используйте CRYPT_SILENT


Не совсем понимаю, как это применять вместе с .net.
Вот мой код (C#, для простоты выкинул всю обработку ошибок и разбиение на методы):

Код:


  var store = new X509Store(StoreLocation.CurrentUser);
  store.Open(OpenFlags.OpenExistingOnly | OpenFlags.ReadOnly);
  X509Certificate2 certificate = store.Certificates.Find(X509FindType.FindByThumbprint, CertThumbprintValue, false)[0];
  var key = (Gost3410CryptoServiceProvider)certificate.PrivateKey;


последняя строка и выкидывает нежелательное окно. Если без p/invoke не обойтись, как это сделать "малой кровью"?
Offline Максим Коллегин  
#4 Оставлено : 8 февраля 2016 г. 11:16:38(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
А зачем это обращение к ключу?
Знания в базе знаний, поддержка в центре поддержки
Offline elirector  
#5 Оставлено : 8 февраля 2016 г. 11:26:23(UTC)
elirector

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

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

Сказал(а) «Спасибо»: 1 раз
Для передачи пинкода (который тоже должен в нашем интерфейсе вводиться):

Код:

var secString = new SecureString();
foreach (char c in PINCode)
{
  secString.AppendChar(c);
}
key.SetContainerPassword(secString);

Offline Максим Коллегин  
#6 Оставлено : 8 февраля 2016 г. 12:14:21(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Пока ничего лучше, чем получить CspParamterers из X509Certificate2 и создать новый объект Gost3410CryptoServiceProvider с флагом silent не придумал.
CspParamterers можно получить через рефлекшен с помощью
Код:
internal static bool GetPrivateKeyInfo(SafeCertContextHandle safeCertContext, ref CspParameters parameters)
Знания в базе знаний, поддержка в центре поддержки
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.