Ключевое слово в защите информации
КЛЮЧЕВОЕ СЛОВО
в защите информации
Получить ГОСТ 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)
Сообщений: 147
Мужчина

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

Раз подпись должна включать сертификат подписанта, то, скорее всего, речь о 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)
Сообщений: 147
Мужчина

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