Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2015, 21:53   #1
trish145
Пользователь
 
Регистрация: 15.03.2013
Сообщений: 19
По умолчанию Работа с ЭЦП в C#

Всем доброго времени суток!!

Крипто провайдер Крипто-Про CSP

Подскажите пожалуйста или киньте свой проект, в котором есть пример чтения информации из сертификата, но чтение производиться только при наличии закрытой части сертификата, если закрытая часть отсутствует, то появляется окно программы крипто про и просит вставить ключевой носитель.

Помогите пожалуйста!!
trish145 вне форума Ответить с цитированием
Старый 20.07.2015, 10:36   #2
Akeloya
Форумчанин
 
Регистрация: 27.01.2014
Сообщений: 115
По умолчанию

Вот так можно прочитать установленные сертификаты. В данном случае хранилище текущего пользователя, личное.
Код:
using System.Security.Cryptography.X509Certificates;

private void CertLoad()
        {
            var store = new X509Store(StoreName.My,StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly);
            foreach (var c in store.Certificates)
            {
                if (c.SubjectName.Name == null) continue;
                var sIndex = c.SubjectName.Name.IndexOf("CN=", 0, StringComparison.InvariantCulture);
                if (sIndex == -1)
                    continue;
                sIndex += 3;
                var fIndex = c.SubjectName.Name.IndexOf(",", sIndex, StringComparison.InvariantCulture);
                if (fIndex == -1)
                    fIndex = c.SubjectName.Name.Length;
                CbCert.Items.Add(new ComboBoxItem
                {
                    Content = c.SubjectName.Name.Substring(sIndex, fIndex - sIndex) + " (" + c.Thumbprint + ")",
                    Uid = c.Thumbprint
                });
            }
            store.Close();
        }
Хотите использовать API Крипто-Про, качайте SDK http://www.cryptopro.ru/products/net/downloads
Там же хелп есть.

А вообще, вопрос задан некорректно.
Что конкретно вы хотите сделать?
У ЭЦП есть открытая часть - публичный сертификат, который читается без наличия закрытой части. Есть закрытая часть, которая как раз таки без открытой и не работает. Если вы хотите прочитать сертификат, вам закрытая часть не нужна. Если вы хотите что-то подписать - вам нужна закрытая часть.

Соответственно, чтобы посмотреть сертификат - вам нужно его, например установить в локальное хранилище в меню "сервис" крипто-про. Если вы хотите подписывать документы - вам нужно через тот же "сервис" крипто-про установить ЭЦП в локальное хранилище. По умолчанию оно может быть не доступно для выбора, этот момент нужно в том же крипто-про настраивать. И именно в этом варианте вам необходимо использовать API крипто-про, т.к. к этому контейрену вы только через него получите доступ.

Последний раз редактировалось Stilet; 20.07.2015 в 11:07.
Akeloya вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ЭЦП NataFlowe C++ Builder 8 11.08.2014 05:11
Внутренняя ЭЦП ЛесенОК Безопасность, Шифрование 4 22.03.2013 14:13
Аналог ЭЦП. F1(a,b,c) = x; F2(b,x) = c; Lime Помощь студентам 1 19.12.2012 00:39
Поможите с ЭЦП! Александр Портнов Безопасность, Шифрование 0 09.07.2012 10:49
ЭЦП NoParanoya Операционные системы общие вопросы 0 25.03.2012 21:22