Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2020(UTC) Сообщений: 29 
|
Добрый день! Имеется некоторый файл совмещенной подписи (подпись вместе с контентом:  response.rar (3kb) загружен 9 раз(а).). Необходимо эту подпись проверить на Java. Через КриптоАРМ файл прекрасно открывается, можно просмотреть подпись и сам файл. На Java используем JCP и пробуем следующее: Код:new CAdESSignature(data, null, CAdESType.CAdES_BES);
Здесь data - массив байт исходного файла. Однако это выдает следующую ошибку: Цитата:Signer certificate reference is not found (signing-certificate-v2, signing-certificate and other-certificate are not found) Насколько я понимаю, не может найти саму подпись. Возможно, это не CAdES_BES? Тогда как это посмотреть? Заранее спасибо!
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Здравствуйте. Тогда попробуйте так, без типа: Код:
new CAdESSignature(data, null, null);
т.к. CAdES-BES подразумевает наличие дополнительных атрибутов. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2020(UTC) Сообщений: 29 
|
Код:new CAdESSignature(data, null, null)
не падает в ошибку. Однако, после этого проверить подпись не удается: Цитата:Error building certification path for *CERTIFICATE DETAILS*: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target Сертификат для проверки добавлен в доверенные JVM с помощью keytool. Отредактировано пользователем 27 апреля 2020 г. 18:10:18(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Если подпись не CAdES, то проверка все равно выполняется схожим образом: строится и проверяется цепочка сертификатов. В вашем случае надо поставить корневой сертификат цепочки в JRE/lib/security/cacerts. Если есть промежуточные сертификаты у цепочки и они не включены в подпись, то их надо тоже дать в verify(), чтобы цепочка могла построиться. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2020(UTC) Сообщений: 29 
|
Автор: Евгений Афанасьев  Если подпись не CAdES, то проверка все равно выполняется схожим образом: строится и проверяется цепочка сертификатов. В вашем случае надо поставить корневой сертификат цепочки в JRE/lib/security/cacerts. Если есть промежуточные сертификаты у цепочки и они не включены в подпись, то их надо тоже дать в verify(), чтобы цепочка могла построиться. При просмотре сертификата видна следующая цепочка:  Snimok.PNG (7kb) загружен 11 раз(а).Каждый сертификат из этой цепочки был сохранен файл и с помощью keytool добавлен в JRE/lib/security/cacerts Затем, файлы сертификатов были загружены в Java как X509Certificate. В конечном итоге, Код: cadesSignature.verify(new HashSet<>(certificates));
выдает исключение: Signers not found; error codes: [8] 'Signature is invalid',
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,006  Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 715 раз в 675 постах
|
Приложите подпись в виде файла, посмотрим. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2020(UTC) Сообщений: 29 
|
В первом сообщении темы приложен подписанный файл. Сертификаты я достал из него через КриптоАРМ
|
|
|
|
Статус: Сотрудник
Группы: Модератор, Участники Зарегистрирован: 03.12.2018(UTC) Сообщений: 1,215  Сказал(а) «Спасибо»: 101 раз Поблагодарили: 285 раз в 265 постах
|
файлы на стенде успешно проверяются. как вы читаете исходный файл подписи? |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 05.03.2020(UTC) Сообщений: 29 
|
Кажется, я разобрался. Если инициировать объект подписи так: Код:new CAdESSignature(data, null, null, false, false);
То подпись успешно проверяется, но потом не удается извлечь подписанные данные с ошибкой "Stream closed". Если инициировать так: Код:new CAdESSignature(data, null, null, false, true);
То данные успешно извлекаются, но подпись не проверяется. Таким образом, я прихожу к выводу, что jcp библиотека исключает возможность сначала проверить подпись, а потом получить подписанный контент. Приходится действовать в обратном порядке с вызовом ICAdESSignature.decode() Отредактировано пользователем 7 мая 2020 г. 16:01:48(UTC)
| Причина: Не указана
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close