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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Чапаев  
#1 Оставлено : 1 ноября 2021 г. 13:06:21(UTC)
Чапаев

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

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

Сказал(а) «Спасибо»: 1 раз
для формирования client_secret в ЕСИА по ГОСТ Р 34.10-2012 использую вот такую функцию

Код:
static void sign_exampe(string message)
        {
            ASCIIEncoding ByteConverter = new ASCIIEncoding();
            byte[] data = ByteConverter.GetBytes(message);

            
            var gost = new Gost3410_2012_256CryptoServiceProvider();
            
            Gost3411_2012_256CryptoServiceProvider alg = new Gost3411_2012_256CryptoServiceProvider();
            alg.ComputeHash(data);
            alg.Clear();
            gost.SignData(data, alg);
        }

получаю Недопустимое значение на gost.SignData(data, alg);
в чем может быть дело?
Offline Санчир Момолдаев  
#2 Оставлено : 1 ноября 2021 г. 13:44:18(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
Добрый день!
для получения сырой (raw) подписи см пример тут
Техническую поддержку оказываем тут
Наша база знаний
Offline Чапаев  
#3 Оставлено : 1 ноября 2021 г. 13:54:04(UTC)
Чапаев

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

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

Сказал(а) «Спасибо»: 1 раз
Автор: Санчир Момолдаев Перейти к цитате
Добрый день!
для получения сырой (raw) подписи см пример тут


спасибо за ответ, но мне нужно не подписать, а зашифровать строку текста
и валиться на сроке
gost.SignData(data, alg);
что в чем недопустимо?
Online Андрей *  
#4 Оставлено : 1 ноября 2021 г. 14:06:41(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2034 раз в 1578 постах
Автор: Чапаев Перейти к цитате
Автор: Санчир Момолдаев Перейти к цитате
Добрый день!
для получения сырой (raw) подписи см пример тут


спасибо за ответ, но мне нужно не подписать, а зашифровать строку текста
и валиться на сроке
gost.SignData(data, alg);
что в чем недопустимо?



Тогда используйте шифрование, а не подписание.

p.s.
в ЕСИА требуется подписать, а не зашифровать.

Техническую поддержку оказываем тут
Наша база знаний
thanks 1 пользователь поблагодарил Андрей * за этот пост.
Чапаев оставлено 01.11.2021(UTC)
Offline Чапаев  
#5 Оставлено : 1 ноября 2021 г. 14:57:50(UTC)
Чапаев

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

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

Сказал(а) «Спасибо»: 1 раз
спасибо за исправление моей ошибки - надо действительно подписывать.
но вот такой вопрос по поводу вашего пример
поставил корневой сертификат из вашего тестового УЦ "Тестовый УЦ ООО "КРИПТО-ПРО"
алгоритм подписи GOST R 34.11-2012/34.10-2012 256 bit

сгенерировал себе сертификат
алгоритм подписи GOST R 34.11-2012/34.10-2012 256 bit тот же

и на втором способе у вас на строку
Код:
var cert_key = signerCert.PrivateKey as Gost3410_2012_256CryptoServiceProvider;

получаю ошибку "Алгоритм ключа сертификата не поддерживается."
кажется ведь все совпадает?
опять что то не учел ?

и вопрос про ваш пример - в первом способе подпись вы переворачиваете
Код:
 File.WriteAllBytes(sigFileName1,sign.Reverse().ToArray());

а во втором нет
Код:
 File.WriteAllBytes(sigFileName2, sign);

это не заметили ошибку или так надо?
Offline Санчир Момолдаев  
#6 Оставлено : 1 ноября 2021 г. 19:01:11(UTC)
Санчир Момолдаев

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

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

Сказал(а) «Спасибо»: 88 раз
Поблагодарили: 223 раз в 211 постах
надо смотреть не алгоритм подписи (алгоритм УЦ) а алгоритм открытого ключа (алгоритм вашего ключа)

там по ссылке есть:
Цитата:
пойбайтово надо переворачивать (.Reverse().ToArray()) для совместимости с CSP.

в CSP (С) один порядок байт, в C# и Java другой.
читайте про Big-Endian и Little-Endian

Отредактировано пользователем 1 ноября 2021 г. 19:01:56(UTC)  | Причина: Не указана

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