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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline ip.nightly  
#1 Оставлено : 30 марта 2018 г. 8:06:05(UTC)
ip.nightly

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

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

Добрый день всем.
Совсем недавно пришлось столкнуться с ЭЦП и шифрованием, поэтому вопрос может и глупый, но у меня не получается его решить.

Есть задача:
Подписать строку (для примера, "d2538e55-bacc-4f24-a22c-818f445845f0") по ГОСТ 34.10.
Подпись должна содержать сертификат подписанта.
Требования к ЭЦП:
Алгоритм подписи (OID) 1.2.643.7.1.1.3.3 (или более старый 1.2.643.7.1.1.3.2)
Дайджест (OID) 1.2.643.7.1.1.2.3 (или более старый 1.2.643.7.1.1.2.3)
Публичный ключ (OID) 1.2.643.7.1.1.1.2 (или более старый 1.2.643.7.1.1.1.2)

Делаю так:
Код:
/// <summary>
            /// 
            /// </summary>
            /// <param name="_cert">Сертификат</param>
            /// <param name="_data">Массив байт шифруемой строки</param>
            /// <returns></returns>
static public byte[] GetDetachedSignatureBase64(X509Certificate2 _cert, byte[] _data)
        {
            Gost3410CryptoServiceProvider gost = (Gost3410CryptoServiceProvider)_cert.PrivateKey;
            Gost3411CryptoServiceProvider gostHash = new Gost3411CryptoServiceProvider();

            byte[] signedValue = gost.SignData(_data, gostHash);
            return signedValue;
        }


Подскажите, как включить сертификат подписанта в подпись?
Offline Георгий Садофьев  
#2 Оставлено : 30 марта 2018 г. 8:09:49(UTC)
Георгий Садофьев

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

Группы: Участники
Зарегистрирован: 14.10.2011(UTC)
Сообщений: 130
Мужчина

Поблагодарили: 26 раз в 25 постах
Добрый день!

Раз подпись должна включать сертификат подписанта, то, скорее всего, речь о PKCS7 (CMS) формате.
Воспользуйтесь классом SignedCms.
Техническую поддержку оказываем тут
Наша база знаний
Offline ip.nightly  
#3 Оставлено : 30 марта 2018 г. 8:39:08(UTC)
ip.nightly

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

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

Автор: Yoda Перейти к цитате
Воспользуйтесь классом SignedCms


Как я понял, случае с классом SignedCms подпись будет сформирована по алгоритму, указанному в сертификате открытого ключа. В где мне указывать OID дайджеста, алгоритма и публичного ключа?
Offline Георгий Садофьев  
#4 Оставлено : 30 марта 2018 г. 8:45:48(UTC)
Георгий Садофьев

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

Группы: Участники
Зарегистрирован: 14.10.2011(UTC)
Сообщений: 130
Мужчина

Поблагодарили: 26 раз в 25 постах
Да, достаточно указать сертификат подписанта.
В КриптоПро .NET SDK есть соответствующие примеры.
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.