Atom Лента - Форум КриптоПро - Тема:Подпись больших файлов - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:Podpis'bol'shikhfajjlov-10:1Copyright 2024 Форум КриптоПро2024-03-28T20:21:04Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевSergeyTShttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=47682&name=SergeyTSЕвгений Афанасьевhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=1064&name=Евгений АфанасьевSergeyTShttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=47682&name=SergeyTSYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid127679:1Подпись больших файлов<table class="content postContainer_Alt" width="100%"><tr><td>1. Подпись должно быть отделенной.<br />2. Без добавления не обойтись.</td></tr></table>2021-09-30T10:34:55+03:002021-09-30T10:34:55+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>1. Подпись должно быть отделенной.<br />2. Без добавления не обойтись.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127675:1Подпись больших файлов<table class="content postContainer" width="100%"><tr><td>Спасибо за ответ.<br /><br />Уточните, пожалуйста, <br />1) В примере CMSSignExample хеширование данных осуществляется порциями. Файл размером 100 мб подписывается успешно для отсоединенной подписи, но для присоединенной - падается с ошибкой OutOfMemoryError при вызове<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">final Asn1BerEncodeBuffer asnBuf = new Asn1BerEncodeBuffer();
contentInfo.encode(asnBuf, true);</code></pre>
</div></div><br /><br />2) При использовании CAdESSignature без добавления корневого в cacerts никак не обойтись? Т.е. передав только сертификат подписи в CAdESSignature не получить подпись?<br />Попытки подписать самоподписанным или сертификатом, выданным Вашим тестовым УЦ, без установки корневого, получаю ошибку построения цепочки</td></tr></table>2021-09-30T10:46:20+03:002021-09-30T10:46:20+03:00SergeyTS<table class="content postContainer" width="100%"><tr><td>Спасибо за ответ.<br /><br />Уточните, пожалуйста, <br />1) В примере CMSSignExample хеширование данных осуществляется порциями. Файл размером 100 мб подписывается успешно для отсоединенной подписи, но для присоединенной - падается с ошибкой OutOfMemoryError при вызове<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">final Asn1BerEncodeBuffer asnBuf = new Asn1BerEncodeBuffer();
contentInfo.encode(asnBuf, true);</code></pre>
</div></div><br /><br />2) При использовании CAdESSignature без добавления корневого в cacerts никак не обойтись? Т.е. передав только сертификат подписи в CAdESSignature не получить подпись?<br />Попытки подписать самоподписанным или сертификатом, выданным Вашим тестовым УЦ, без установки корневого, получаю ошибку построения цепочки</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127672:1Подпись больших файлов<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />1. CMSSignExample читает целиком файл в память, потому у него будут ограничения. Однако вы можете читать файл и хешировать его порциями (MessageDigest) для получения финального значения атрибута message-digest, который потом добавляется в подписанные атрибуты перед подписью.<br />2. Также для поточной подписи надо использовать CAdESSignature. В последних релизах можно создать BES/T подпись без проверки (но с построением!) цепочки сертификатов (см. комментарии в MainActivity в ACSPClientApp):<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
// В случае создания подписей формата BES или T можно отключить
// проверку цепочки сертификатов подписанта (и службы) с помощью
// параметра:
cAdESSignature.setOptions((new Options()).disableCertificateValidation()); // CAdES
// перед добавлением подписанта.
// По умолчанию проверка цепочки сертификатов подписанта всегда
// включена.
</code></pre>
</div></div></td></tr></table>2021-09-29T22:55:57+03:002021-09-29T22:55:57+03:00Евгений Афанасьев<table class="content postContainer_Alt" width="100%"><tr><td>Здравствуйте.<br />1. CMSSignExample читает целиком файл в память, потому у него будут ограничения. Однако вы можете читать файл и хешировать его порциями (MessageDigest) для получения финального значения атрибута message-digest, который потом добавляется в подписанные атрибуты перед подписью.<br />2. Также для поточной подписи надо использовать CAdESSignature. В последних релизах можно создать BES/T подпись без проверки (но с построением!) цепочки сертификатов (см. комментарии в MainActivity в ACSPClientApp):<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-java">
// В случае создания подписей формата BES или T можно отключить
// проверку цепочки сертификатов подписанта (и службы) с помощью
// параметра:
cAdESSignature.setOptions((new Options()).disableCertificateValidation()); // CAdES
// перед добавлением подписанта.
// По умолчанию проверка цепочки сертификатов подписанта всегда
// включена.
</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid127666:1Подпись больших файлов<table class="content postContainer" width="100%"><tr><td>Добрый день, подскажите, пожалуйста, можно ли подписывать (тип подписи CAdES-BES) данные в потоке, не используя CAdESSignature или используя, но без проверки цепочки?<br /><br />CAdESSignature требует передачи всей цепочки и установки корневого сертификата в cacerts. А при подписи хотелось бы избежать проверки цепочки, так как в приложении не будет подразумеваться установка сертификатов в корневые.<br />Пример из файла CMSSignExample падает при подписи больших файлов.</td></tr></table>2021-09-29T17:43:33+03:002021-09-29T17:43:33+03:00SergeyTS<table class="content postContainer" width="100%"><tr><td>Добрый день, подскажите, пожалуйста, можно ли подписывать (тип подписи CAdES-BES) данные в потоке, не используя CAdESSignature или используя, но без проверки цепочки?<br /><br />CAdESSignature требует передачи всей цепочки и установки корневого сертификата в cacerts. А при подписи хотелось бы избежать проверки цепочки, так как в приложении не будет подразумеваться установка сертификатов в корневые.<br />Пример из файла CMSSignExample падает при подписи больших файлов.</td></tr></table>