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

Уведомление

Icon
Error

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

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

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

Сказал(а) «Спасибо»: 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)
Сообщений: 6

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

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

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

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

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

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

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

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

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

Сказал «Спасибо»: 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) загружен 0 раз(а).

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