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

Уведомление

Icon
Error

3 Страницы<123>
Опции
К последнему сообщению К первому непрочитанному
Offline ZiCold  
#11 Оставлено : 22 января 2022 г. 14:58:49(UTC)
ZiCold

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

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

Автор: TolikTipaTut1 Перейти к цитате
Файл пришлите


Файлы:
SignedDocuments.zip (369kb) загружен 3 раз(а).

_SignedByCryptoPro_ - подписан CryptCp, командой -signf
_SignedByDiadoc - подписан библиотекой Диадока, соответственно.

Оба файла с подписями проходят проверку утилитой CryptCp, но _SignedByCryptoPro_ не проходит кодом CoreFx уже на этапе signedCms.Decode(signature);
Offline Андрей *  
#12 Оставлено : 22 января 2022 г. 15:46:17(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: ZiCold Перейти к цитате
Автор: TolikTipaTut1 Перейти к цитате
Файл пришлите


Файлы:
SignedDocuments.zip (369kb) загружен 3 раз(а).

_SignedByCryptoPro_ - подписан CryptCp, командой -signf
_SignedByDiadoc - подписан библиотекой Диадока, соответственно.

Оба файла с подписями проходят проверку утилитой CryptCp, но _SignedByCryptoPro_ не проходит кодом CoreFx уже на этапе signedCms.Decode(signature);


Еще раз... Декодировать из base64 перед проверкой!
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#13 Оставлено : 22 января 2022 г. 15:47:42(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Doc_MsgId_13054510_SignedByCryptoPro_CertIncluded.pdf.zip (3kb) загружен 2 раз(а).

этот файл подписи же успешно проходит проверку?
Потому что декодировал его из base64 .sgn
Техническую поддержку оказываем тут
Наша база знаний
Offline Андрей *  
#14 Оставлено : 22 января 2022 г. 15:59:04(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
написать код, который читает для начала несколько (десятков) байт из файла подписи,
проверяет:
а) начинается на ---- (служебные заголовки - значит из файла нужно извлечь base64, учитывая эту специфику, далее base64 => bin)
б) начинается на M... - (base64 CMS, первый байт "30") - base64 => bin
в) первый байт "30" или "указанная комбинация байт на снимке" - код из asn.1 структуры - вот оно, не нужно декодировать.
Snimok ehkrana ot 2022-01-22 16-58-00.png (43kb) загружен 12 раз(а).
Техническую поддержку оказываем тут
Наша база знаний
Offline ZiCold  
#15 Оставлено : 22 января 2022 г. 17:32:35(UTC)
ZiCold

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

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

Автор: Андрей * Перейти к цитате
Автор: ZiCold Перейти к цитате
Автор: TolikTipaTut1 Перейти к цитате
Файл пришлите


Файлы:
SignedDocuments.zip (369kb) загружен 3 раз(а).

_SignedByCryptoPro_ - подписан CryptCp, командой -signf
_SignedByDiadoc - подписан библиотекой Диадока, соответственно.

Оба файла с подписями проходят проверку утилитой CryptCp, но _SignedByCryptoPro_ не проходит кодом CoreFx уже на этапе signedCms.Decode(signature);


Еще раз... Декодировать из base64 перед проверкой!


Так и делаю. И файл и его подпись. Код:
Код:
var docStr64 = Convert.ToBase64String(docBytes);
            var signStr64 = Convert.ToBase64String(signBytes);
            var docBytes64 = Encoding.ASCII.GetBytes(docStr64);
            var signBytes64 = Encoding.ASCII.GetBytes(signStr64);
            var result = (new Verifier()).VerifySignature(docBytes64, signBytes64);
Offline ZiCold  
#16 Оставлено : 22 января 2022 г. 17:33:16(UTC)
ZiCold

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

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

Автор: Андрей * Перейти к цитате
Doc_MsgId_13054510_SignedByCryptoPro_CertIncluded.pdf.zip (3kb) загружен 2 раз(а).

этот файл подписи же успешно проходит проверку?
Потому что декодировал его из base64 .sgn


Нет, проходит только тот, что был подписан библиотекой Диадока.
Offline ZiCold  
#17 Оставлено : 22 января 2022 г. 17:34:15(UTC)
ZiCold

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

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

Автор: Андрей * Перейти к цитате
написать код, который читает для начала несколько (десятков) байт из файла подписи,
проверяет:
а) начинается на ---- (служебные заголовки - значит из файла нужно извлечь base64, учитывая эту специфику, далее base64 => bin)
б) начинается на M... - (base64 CMS, первый байт "30") - base64 => bin
в) первый байт "30" или "указанная комбинация байт на снимке" - код из asn.1 структуры - вот оно, не нужно декодировать.
Snimok ehkrana ot 2022-01-22 16-58-00.png (43kb) загружен 12 раз(а).


Простите, я вас не понимаю. Не могли бы вы привести пример кода, который это делает?
Offline TolikTipaTut1  
#18 Оставлено : 22 января 2022 г. 17:35:59(UTC)
TolikTipaTut1

Статус: Активный участник

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

Сказал(а) «Спасибо»: 43 раз
Поблагодарили: 69 раз в 61 постах
Автор: ZiCold Перейти к цитате
Автор: Андрей * Перейти к цитате
Автор: ZiCold Перейти к цитате
Автор: TolikTipaTut1 Перейти к цитате
Файл пришлите


Файлы:
SignedDocuments.zip (369kb) загружен 3 раз(а).

_SignedByCryptoPro_ - подписан CryptCp, командой -signf
_SignedByDiadoc - подписан библиотекой Диадока, соответственно.

Оба файла с подписями проходят проверку утилитой CryptCp, но _SignedByCryptoPro_ не проходит кодом CoreFx уже на этапе signedCms.Decode(signature);


Еще раз... Декодировать из base64 перед проверкой!


Так и делаю. И файл и его подпись. Код:
Код:
var docStr64 = Convert.ToBase64String(docBytes);
            var signStr64 = Convert.ToBase64String(signBytes);
            var docBytes64 = Encoding.ASCII.GetBytes(docStr64);
            var signBytes64 = Encoding.ASCII.GetBytes(signStr64);
            var result = (new Verifier()).VerifySignature(docBytes64, signBytes64);


Код:
	var signatureBytes = File.ReadAllBytes(_CAdES_BES_SigFileName);
	CmsSignedData cmsSignedData;
	try
	{
		cmsSignedData = new CmsSignedData(signatureBytes);
	}
	catch
	{
		cmsSignedData = new CmsSignedData(Base64.Decode(signatureBytes));
	}


Так делается в BouncyCastle. Не думаю, что в coreFx что-то очень сильно отличается. Пример взят отсюда
Offline Андрей *  
#19 Оставлено : 22 января 2022 г. 22:52:43(UTC)
Андрей *

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

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

Сказал «Спасибо»: 494 раз
Поблагодарили: 2035 раз в 1579 постах
Автор: ZiCold Перейти к цитате
Автор: Андрей * Перейти к цитате
Doc_MsgId_13054510_SignedByCryptoPro_CertIncluded.pdf.zip (3kb) загружен 2 раз(а).

этот файл подписи же успешно проходит проверку?
Потому что декодировал его из base64 .sgn


Нет, проходит только тот, что был подписан библиотекой Диадока.


Вы мой вариант файла проверили?
Какую ошибку получили?
Техническую поддержку оказываем тут
Наша база знаний
Offline ZiCold  
#20 Оставлено : 23 марта 2022 г. 19:16:56(UTC)
ZiCold

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

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

Автор: Андрей * Перейти к цитате
Автор: ZiCold Перейти к цитате
Автор: Андрей * Перейти к цитате
Doc_MsgId_13054510_SignedByCryptoPro_CertIncluded.pdf.zip (3kb) загружен 2 раз(а).

этот файл подписи же успешно проходит проверку?
Потому что декодировал его из base64 .sgn


Нет, проходит только тот, что был подписан библиотекой Диадока.


Вы мой вариант файла проверили?
Какую ошибку получили?



Добрый день! Прошу прощения за задержку с ответом.
Да, ваш файл .p7s прошел проверку.
Что я должен делать в таком случае?
RSS Лента  Atom Лента
Пользователи, просматривающие эту тему
3 Страницы<123>
Быстрый переход  
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.