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

Уведомление

Icon
Error

4 Страницы<1234>
Опции
К последнему сообщению К первому непрочитанному
Offline anton26  
#21 Оставлено : 2 августа 2021 г. 11:43:00(UTC)
anton26

Статус: Участник

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

Автор: Андрей * Перейти к цитате
Вы сделали RAW, а необходимо CMS.


Спасибо!
Offline anton26  
#22 Оставлено : 5 августа 2021 г. 12:37:26(UTC)
anton26

Статус: Участник

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

Здравствуйте
Если в данной теме, изначально посвященной другому вопросу, обсуждать данный вопрос некорректно, могу создать новую
С присоединенной CMS-подписью все работает.
Также необходимо формировать открепленную.
Отвечающая требованиям подпись формируется с помощью утилиты csptest следующей командой:
Цитата:
csptest -sfsign -sign -in "C:\temp\Test.txt" -out "C:\temp\Out.txt" -my "Значение атрибута CN" -base64 -detached -add

В рабочей программе для создания прикрепленной CMS-подписи в SignedCms сделал параметр Detached true вместо false, но получившаяся подпись получилась длиннее, чем сделанная с помощью csptest, и не соответствует требования

Далее открыл пример DetachedSignature.cs и запустил его, добавив лишь кодирование получившегося результата в base64: Convert.ToBase64String(encodedSignature). Результат аналогичный.

Код программы: https://bitbucket.org/pr...gn/src/master/Program.cs
Подпись из csptest: https://bitbucket.org/pr...c/master/CSPTestSign.txt
Подпись из программы: https://bitbucket.org/pr...c/master/ProgramSign.txt

Можете пожалуйста дать наводку, что нужно сделать, что формируемая в программе подпись соответствовала подписи, формируемой в CSPTest?
Offline Андрей *  
#23 Оставлено : 5 августа 2021 г. 14:47:38(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
в коде на c# - вкладывается вся цепочка в cms, в csptest - только сертификат подписанта.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#24 Оставлено : 5 августа 2021 г. 14:51:13(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;

cryptography.x509certificates.x509includeoption
Техническую поддержку оказываем тут
Наша база знаний
Offline anton26  
#25 Оставлено : 5 августа 2021 г. 15:37:35(UTC)
anton26

Статус: Участник

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

Автор: Андрей * Перейти к цитате
cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;
cryptography.x509certificates.x509includeoption


Спасибо
Подпись стала иметь одинаковый размер, но незначительно различается небольшая подстрока
Убедился, что и в csptest, и в программе используется один и тот же сертификат и одни и те же данные
Я декодировал из base64 и сравнил две подписи, вот что получилось (желтым - из программы, зеленым - из csptest)

Sravnenie tekstov.png (102kb) загружен 13 раз(а).

Не подскажете, с чем это может быть связано?

Код программы: https://bitbucket.org/pr...gn/src/master/Program.cs
Подпись из csptest: https://bitbucket.org/pr...c/master/CSPTestSign.txt
Подпись из программы: https://bitbucket.org/pr...c/master/ProgramSign.txt

Offline Андрей *  
#26 Оставлено : 5 августа 2021 г. 15:58:37(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
Автор: anton26 Перейти к цитате
Автор: Андрей * Перейти к цитате
cmsSigner.IncludeOption = X509IncludeOption.EndCertOnly;
cryptography.x509certificates.x509includeoption


Спасибо
Подпись стала иметь одинаковый размер, но незначительно различается небольшая подстрока
Убедился, что и в csptest, и в программе используется один и тот же сертификат и одни и те же данные
Я декодировал из base64 и сравнил две подписи, вот что получилось (желтым - из программы, зеленым - из csptest)

Sravnenie tekstov.png (102kb) загружен 13 раз(а).

Не подскажете, с чем это может быть связано?

Код программы: https://bitbucket.org/pr...gn/src/master/Program.cs
Подпись из csptest: https://bitbucket.org/pr...c/master/CSPTestSign.txt
Подпись из программы: https://bitbucket.org/pr...c/master/ProgramSign.txt



Особенность ГОСТ-алгоритма - значение подписи всегда разное.
Проверить просто - несколько раз подписать и сверить файлы.
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#27 Оставлено : 5 августа 2021 г. 16:00:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
+ дата\время подписания, в подписанных атрибутах меняется.
Техническую поддержку оказываем тут
Наша база знаний
Offline ZiCold  
#28 Оставлено : 15 ноября 2023 г. 18:28:04(UTC)
ZiCold

Статус: Участник

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

Автор: Андрей * Перейти к цитате

Вы сделали RAW, а необходимо CMS.


Добрый день! Вы написали, что тем кодом получена RAW подпись. Я решил им воспользоваться, но не получил её. Сам код в сокращённом виде (я поменял X509IncludeOption.EndCertOnly на X509IncludeOption.None):

Код:
        
        private static byte[] SignRaw(byte[] dataToSign, X509Certificate2 signerCert)
        {
            ContentInfo contentInfo = new ContentInfo(dataToSign);
            SignedCms signedCms = new SignedCms(contentInfo, true);
            CmsSigner cmsSigner = new CmsSigner(signerCert);
            cmsSigner.IncludeOption = X509IncludeOption.None;

            signedCms.ComputeSignature(cmsSigner);
            return signedCms.Encode();
        }


Что нужно в нём изменить для получения RAW? Или это невозможно таким методом?
Offline Андрей *  
#29 Оставлено : 15 ноября 2023 г. 20:02:58(UTC)
Андрей *

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
Автор: ZiCold Перейти к цитате
Автор: Андрей * Перейти к цитате

Вы сделали RAW, а необходимо CMS.


Добрый день! Вы написали, что тем кодом получена RAW подпись. Я решил им воспользоваться, но не получил её. Сам код в сокращённом виде (я поменял X509IncludeOption.EndCertOnly на X509IncludeOption.None):

Код:
        
        private static byte[] SignRaw(byte[] dataToSign, X509Certificate2 signerCert)
        {
            ContentInfo contentInfo = new ContentInfo(dataToSign);
            SignedCms signedCms = new SignedCms(contentInfo, true);
            CmsSigner cmsSigner = new CmsSigner(signerCert);
            cmsSigner.IncludeOption = X509IncludeOption.None;

            signedCms.ComputeSignature(cmsSigner);
            return signedCms.Encode();
        }


Что нужно в нём изменить для получения RAW? Или это невозможно таким методом?



SignedCms делает cms, raw получается через утилиты,
КриптоПро.Net (csp provider) или p\invoke + низкоуровневые процедуры.


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

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

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

Сказал «Спасибо»: 549 раз
Поблагодарили: 2208 раз в 1723 постах
в том сообщении ошибка, там не raw, а cms
Техническую поддержку оказываем тут
Наша база знаний
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
Guest (2)
4 Страницы<1234>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.