Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.01.2018(UTC) Сообщений: 37 Сказал(а) «Спасибо»: 6 раз
|
Добрый день, подскажите, пожалуйста, можно ли подписывать (тип подписи CAdES-BES) данные в потоке, не используя CAdESSignature или используя, но без проверки цепочки? CAdESSignature требует передачи всей цепочки и установки корневого сертификата в cacerts. А при подписи хотелось бы избежать проверки цепочки, так как в приложении не будет подразумеваться установка сертификатов в корневые. Пример из файла CMSSignExample падает при подписи больших файлов. Отредактировано пользователем 29 сентября 2021 г. 17:43:33(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
Здравствуйте. 1. CMSSignExample читает целиком файл в память, потому у него будут ограничения. Однако вы можете читать файл и хешировать его порциями (MessageDigest) для получения финального значения атрибута message-digest, который потом добавляется в подписанные атрибуты перед подписью. 2. Также для поточной подписи надо использовать CAdESSignature. В последних релизах можно создать BES/T подпись без проверки (но с построением!) цепочки сертификатов (см. комментарии в MainActivity в ACSPClientApp): Код:
// В случае создания подписей формата BES или T можно отключить
// проверку цепочки сертификатов подписанта (и службы) с помощью
// параметра:
cAdESSignature.setOptions((new Options()).disableCertificateValidation()); // CAdES
// перед добавлением подписанта.
// По умолчанию проверка цепочки сертификатов подписанта всегда
// включена.
Отредактировано пользователем 29 сентября 2021 г. 22:55:57(UTC)
| Причина: Не указана |
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 25.01.2018(UTC) Сообщений: 37 Сказал(а) «Спасибо»: 6 раз
|
Спасибо за ответ. Уточните, пожалуйста, 1) В примере CMSSignExample хеширование данных осуществляется порциями. Файл размером 100 мб подписывается успешно для отсоединенной подписи, но для присоединенной - падается с ошибкой OutOfMemoryError при вызове Код:final Asn1BerEncodeBuffer asnBuf = new Asn1BerEncodeBuffer();
contentInfo.encode(asnBuf, true);
2) При использовании CAdESSignature без добавления корневого в cacerts никак не обойтись? Т.е. передав только сертификат подписи в CAdESSignature не получить подпись? Попытки подписать самоподписанным или сертификатом, выданным Вашим тестовым УЦ, без установки корневого, получаю ошибку построения цепочки Отредактировано пользователем 30 сентября 2021 г. 10:46:20(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 3,962 Откуда: Крипто-Про Сказал(а) «Спасибо»: 20 раз Поблагодарили: 704 раз в 665 постах
|
1. Подпись должно быть отделенной. 2. Без добавления не обойтись. |
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close