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

Уведомление

Icon
Error

2 Страницы12>
Опции
К последнему сообщению К первому непрочитанному
Offline festvtteam  
#1 Оставлено : 22 июля 2026 г. 12:58:13(UTC)
festvtteam

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

Группы: Участники
Дата регистрации:: 03.12.2022(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
Добрый день! формирую sig для больших файлов (2+Гб). Подписываю их хэши. Но при проверке КриптоАрм получаю что подпись не действительна.

Код:

var cert = InstanceTemplate.Invoke("ChooseSertificate", null) as X509Certificate2;
if (cert == null)
    return null;

//------------------------

//считаем хэш файла
byte[] hashValue;
using (var gostHashAlg = CryptoPro.Sharpei.Gost3411_2012_256.Create())
using (var fs = new FileStream(filePath, FileMode.Open, FileAccess.Read))
    hashValue = gostHashAlg.ComputeHash(fs);

//------------------------

//формируем ASN строку
var res = new byte[2 + hashValue.Length];
res[0] = 0x04;
res[1] = (byte)hashValue.Length;
Buffer.BlockCopy(hashValue, 0, res, 2, hashValue.Length);

//Создаем подпись
var contentInfo = new ContentInfo(new Oid("1.2.840.113549.1.7.1"), res);
var signer = new SignedCms(contentInfo, true);

var cmsSigner = new CmsSigner(SubjectIdentifierType.IssuerAndSerialNumber, cert)
{
    IncludeOption = X509IncludeOption.WholeChain,
    DigestAlgorithm = new Oid("1.2.643.7.1.1.2.2")
};

//Добавляем Digest
var messageDigestOID = new Oid("1.2.840.113549.1.9.4");
var asnHashData = new AsnEncodedData(messageDigestOID, res);

var asnCollection = new AsnEncodedDataCollection();
asnCollection.Add(asnHashData);

var messageDigestAttr = new CryptographicAttributeObject(messageDigestOID, asnCollection);
cmsSigner.SignedAttributes.Add(messageDigestAttr);

//------------------------

//Установка времени
var signedDate = DateTime.Now;
var pkcs9_time = new Pkcs9SigningTime(signedDate);
cmsSigner.SignedAttributes.Add(pkcs9_time);

signer.ComputeSignature(cmsSigner, true);
var signedCmsEncode = signer.Encode();
File.WriteAllBytes(filePath + ".sig", signedCmsEncode);


Подскажите что не так?

Отредактировано пользователем 24 июля 2026 г. 8:06:00(UTC)  | Причина: Поправил DigesrAlgorithm, потому что в сертификате 1.2.643.7.1.1.1.1 (https://tc26.ru/about/protsedu

Offline festvtteam  
#2 Оставлено : 22 июля 2026 г. 21:29:33(UTC)
festvtteam

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

Группы: Участники
Дата регистрации:: 03.12.2022(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
Поправил, картинкой выкладывать не хорошо. Наверно и не в ту ветку создал вопрос
Offline festvtteam  
#3 Оставлено : 24 июля 2026 г. 8:24:42(UTC)
festvtteam

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

Группы: Участники
Дата регистрации:: 03.12.2022(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
очень странно, после изменений кода в части oid какие-то файлы проходят проверку, другие файлы не проходят
Offline festvtteam  
#4 Оставлено : 29 июля 2026 г. 11:37:34(UTC)
festvtteam

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

Группы: Участники
Дата регистрации:: 03.12.2022(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
Ошибка при проверке: Не правильное значение хэша
Offline Андрей *  
#5 Оставлено : 29 июля 2026 г. 23:46:57(UTC)
Андрей *

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

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

Сказал «Спасибо»: 620 раз
Поблагодарили: 2396 раз в 1885 постах
Здравствуйте.

Да, ветка СКЗИ... тут и консольные утилиты с поточным чтением могут посоветовать...
А если через p\invoke и вызывать поточные функции?
или ещё лучше через CADES от КРИПТО-ПРО (и через плагин есть возможность такая) https://docs.cryptopro.r...es/plugin/plugin-samples

по c# на форуме были примеры...
вот тут про LargeCms - https://cryptopro.ru/for...aspx?g=posts&t=18480 , где-то и ссылки были на проект,
есть исходник старый и собранный exe с минимальным GUI для подписания, указать имена файлов, subject - не указывать (переписать код на выбор\инициализацию с нужным сертификатом)
sourceCode_old.zip (598kb) загружен 1 раз(а).

Техническую поддержку оказываем тут
Наша база знаний
Offline festvtteam  
#6 Оставлено : 30 июля 2026 г. 10:05:58(UTC)
festvtteam

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

Группы: Участники
Дата регистрации:: 03.12.2022(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
Спасибо! Мы пишем в plm на с#. там можно dll подключать. dotnetcades собралась, но при выполнении cades.dll ругается. не понял как ее подсунуть и откуда взять.

Ну подписывает же cryptcp файлы более 2Гб, значит подписывает их хэш и на выход даёт sig. Не может же быть это секретом каким-то как формируется подпись

Отредактировано пользователем 30 июля 2026 г. 16:31:30(UTC)  | Причина: Не указана

Offline Андрей *  
#7 Оставлено : 30 июля 2026 г. 15:53:20(UTC)
Андрей *

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

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

Сказал «Спасибо»: 620 раз
Поблагодарили: 2396 раз в 1885 постах
Автор: festvtteam Перейти к цитате
Спасибо! Мы пишем в plm на с#. там можно dll подключать. dotnetcades собралась, но при выполнении cades.dll ругается. не понял как ее подсунуть и откуда взять.

Ну подписывает же cryptcp файлы более 2Гб, значит подписывает их хэш и на выход даёт sig. Не может же быть это секретом каким-то как формируется подпись


так в коде же всё есть, поточные функции... блоками читается, вычисляется в итоге хеш и подписывается.
А там где "падает" - высокоуровневые функции обычно - принимают сразу на вход весь файл и ... далее от размера зависит успешность.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#8 Оставлено : 30 июля 2026 г. 15:54:25(UTC)
Андрей *

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

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

Сказал «Спасибо»: 620 раз
Поблагодарили: 2396 раз в 1885 постах
Автор: festvtteam Перейти к цитате
Спасибо! Мы пишем в plm на с#. там можно dll подключать. dotnetcades собралась, но при выполнении cades.dll ругается. не понял как ее подсунуть и откуда взять.

Ну подписывает же cryptcp файлы более 2Гб, значит подписывает их хэш и на выход даёт sig. Не может же быть это секретом каким-то как формируется подпись



и какая ошибка была?

Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#9 Оставлено : 30 июля 2026 г. 15:55:57(UTC)
Андрей *

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

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

Сказал «Спасибо»: 620 раз
Поблагодарили: 2396 раз в 1885 постах
СКЗИ установлен без CAdES?

https://cryptopro.ru/pro...downloads#latest_csp50r3

КриптоПро CSP 5.0 R3 для Windows + cades/plugin и pkcs#11-модули партнёров

Техническую поддержку оказываем тут
Наша база знаний
Offline festvtteam  
#10 Оставлено : 30 июля 2026 г. 16:33:02(UTC)
festvtteam

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

Группы: Участники
Дата регистрации:: 03.12.2022(UTC)
Сообщений: 9

Сказал(а) «Спасибо»: 1 раз
тем более вот на картинке:
слева sig по поему коду, справа sig с помощью cryptcp. снизу хэш файла.

Snimok3.PNG (190kb) загружен 1 раз(а).

то есть хэш есть, но их два разных. один подозреваю из конструктора ContentInfo

Отредактировано пользователем 30 июля 2026 г. 16:36:54(UTC)  | Причина: Не указана

RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
2 Страницы12>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.