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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline IrinaUgryumova  
#1 Оставлено : 26 ноября 2015 г. 9:21:02(UTC)
IrinaUgryumova

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

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

Добрый день! Вопрос по реализации шифрования на закрытом ключе Тестового УЦ. Сейчас этим бьюсь, никак не получается.
Помогите пожалуйста, кто знает, поделитесь хоть какой-нибудь информацией.
Реализую аутентификацию на сайте (asp) через ЕСИА. Из минкомсвязи прислали тестовые учётки с сертификатами для тестирования.
В документации написано необходимо сформировать запрос с определенным набором параметров. Все параметры понятны, кроме одного <client-secret> - подпись.
Делаю как написано в примерах для SDK.NET, ищу сертификат, с помощью него пытаюсь подписать, каждый раз вылетает исключение:

Цитата:
Ошибка исполнения функции.
Описание: Необработанное исключение при выполнении текущего веб-запроса. Изучите трассировку стека для получения дополнительных сведений о данной ошибке и о вызвавшем ее фрагменте кода.
Сведения об исключении: System.Security.Cryptography.CryptographicException: Ошибка исполнения функции.
Ошибка источника:
Строка 36: CmsSigner cmsSigner = new CmsSigner(certificate);
Строка 37: cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;
Строка 38: signedCms.ComputeSignature(cmsSigner, false);
Строка 39: byte[] pk = signedCms.Encode();
Строка 40: return pk;



Вот код. Подскажите пожалуйста, что делаю не так?

Код:
public static byte[] SignMessage(byte[] data)
        {
            X509Store store = new X509Store(StoreLocation.CurrentUser);
            store.Open(OpenFlags.ReadOnly);
            X509Certificate2 certificate = null;
            //manually chose the certificate in the store
            X509Certificate2Collection sel = X509Certificate2UI.SelectFromCollection(store.Certificates, null, null, X509SelectionFlag.SingleSelection);

            if (sel.Count > 0)
            {
                certificate = sel[0];

                if (data == null)
                    throw new ArgumentNullException("data");
                if (certificate == null)
                    throw new ArgumentNullException("certificate");

                // Вычисляем подпись
                ContentInfo contentInfo = new ContentInfo(data);
                SignedCms signedCms = new SignedCms(contentInfo, true);
                CmsSigner cmsSigner = new CmsSigner(certificate);
                cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;
                signedCms.ComputeSignature(cmsSigner, false);
                byte[] pk = signedCms.Encode();
                return pk;
            }
            return null;
        }
Offline Максим Коллегин  
#2 Оставлено : 26 ноября 2015 г. 9:36:47(UTC)
Максим Коллегин

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

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

Сказал «Спасибо»: 38 раз
Поблагодарили: 737 раз в 634 постах
Этот же код в консольном приложении работает?
Знания в базе знаний, поддержка в центре поддержки
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.