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

Уведомление

Icon
Error

Опции
К последнему сообщению К первому непрочитанному
Offline Алексей Ильинский  
#1 Оставлено : 17 июня 2021 г. 15:13:29(UTC)
Алексей Ильинский

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

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

добрый день, уважаемые участники

Помогите, пожалуйста с решение "проблемы".

Задача - необходимо подписать ответ системы неким сертификатом в виде PKCS7. Для решения задачи используется JCP и буквально пример из SDK - CAdES\PKCS7Example.java

подписывает превосходно, проверяет и вынимает контент безо всяких проблем. Однако - есть набор клиентов, которые не утруждают себя валидацией подписанного документа и вынимают payload варварским способом - отрезая детали PKCS7 сообщения.
Однако - в данной имплементации подписи, payload нарезан на блоки в 1000 байт в PKCS7 сообщении:
pkcs7-1000blosk.png (22kb) загружен 5 раз(а).
наличие PKCS7 идентификаторов блоков внутри payload - ломает парсинг содержимого ответа на стороне клиентов-"варваров".

подскажите, пожалуйста - как в данном подходе к формированию подписи (взятый пример) поменять механизм подписи, чтобы он клал payload как один большой OCTET STRING по полной длине содержимого?
например вот так
pkcs7-long.png (8kb) загружен 3 раз(а).

Возможно, пример взят не подходящий?

Очень нужна ваша помошь

Спасибо
Offline Евгений Афанасьев  
#2 Оставлено : 30 июня 2021 г. 18:21:25(UTC)
Евгений Афанасьев

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

Группы: Участники
Зарегистрирован: 06.12.2008(UTC)
Сообщений: 3,494
Российская Федерация
Откуда: Крипто-Про

Сказал(а) «Спасибо»: 20 раз
Поблагодарили: 583 раз в 554 постах
Здравствуйте.
Скорее всего, если код основан на примере PKCS7Example, то есть классе bouncycastle - CMSSignedDataGenerator, получить один большой octet sting не получится, т.к. CMSSignedDataGenerator кладет данные (encapsulated content) в случае совмещенной подписи в саму подпись, используя BEROctetString с размером буфера 1000.
Однако поточная реализация CMSSignedDataStreamGenerator из BC как будто содержит метод setBufferSize(int size), могущий повлиять на размер буфера.
Либо полностью переписывать пример, используя, допустим, пример CMSSign (ф. createCMSEx).
Offline Алексей Ильинский  
#3 Оставлено : 1 июля 2021 г. 0:06:08(UTC)
Алексей Ильинский

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

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

добрый день

Мы поискали примеры и нашли среди них тот, что управляет размером буфера, на основании которого создается OCTETString
Все в итоге получилось как надо

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