Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
верификация enveloped xml signature не проходит без TRANSFORM_ENVELOPED_SIGNATURE
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: Вячеслав Александрович ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) никаких ссылок на родительский документ у нас нет, правильно? Ссылка есть в References - <ds:Reference URI=""> Узел подписи добавляете после sign()? |
|
![thanks](/forum2/Themes/soclean/heart_small.png) 1 пользователь поблагодарил Евгений Афанасьев за этот пост.
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.11.2017(UTC) Сообщений: 12 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 2 раз
|
хвала богам! это действительно причина моей проблемы) спасибо за помощь! исходный код из примера xmlSign/XMLSignDoc.java выглядит так: Код:
// инициализация объекта формирования ЭЦП в соответствии с алгоритмом ГОСТ Р 34.10-2001
final XMLSignature sig = new XMLSignature(doc, "", signMethod);
// получение корневого узла XML-документа
final Element anElement = doc.getDocumentElement();
// добавление в корневой узел XML-документа узла подписи
anElement.appendChild(sig.getElement());
/* Определение правил работы с XML-документом и добавление в узел подписи этих правил */
// создание узла преобразований <ds:Transforms> обрабатываемого XML-документа
final Transforms transforms = new Transforms(doc);
// добавление в узел преобразований правил работы с документом
transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
transforms.addTransform(Transforms.TRANSFORM_C14N_WITH_COMMENTS);
sig.addDocument("", transforms, digestMethod);
sig.addKeyInfo(cert);
// создание подписи XML-документа
sig.sign(privateKey);
и, конечно же, в данном случае всё будет прекрасно работать, поскольку добавлена трансформация Transforms.TRANSFORM_ENVELOPED_SIGNATURE да только вот обсуждаемом примере нет ни одного комментария зачем это сделано! ;) а сделано как раз для того, чтобы трансформация выпилила элемент <ds:Signature> из документа, и он не обратывался при формировании подписи. естественно, когда убрал Transforms.TRANSFORM_ENVELOPED_SIGNATURE, стал подписываться документ вместе с пустым элементом <ds:Signature> как понимаю, при верификации в моём случае происходило следующее: - если не удалять элемент подписи, то сравниваем подписи документов с пустым и непустым <ds:Signature> - если удалять, как посоветовали Вы, то сравниваем подписи документов с пустым <ds:Signature> и без него ну и соответственно, добавление <ds:Signature> после подписи документа и удаление перед верификацией, по факту - ручная реализация Transforms.TRANSFORM_ENVELOPED_SIGNATURE :) Отредактировано пользователем 1 декабря 2017 г. 20:43:13(UTC)
| Причина: Не указана
|
|
|
|
Статус: Сотрудник
Группы: Участники
Зарегистрирован: 06.12.2008(UTC) Сообщений: 4,003 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Крипто-Про Сказал(а) «Спасибо»: 21 раз Поблагодарили: 714 раз в 674 постах
|
Автор: Вячеслав Александрович ![Перейти к цитате Перейти к цитате](/forum2/Themes/soclean/icon_latest_reply.gif) и, конечно же, в данном случае всё будет прекрасно работать, поскольку добавлена трансформация Transforms.TRANSFORM_ENVELOPED_SIGNATURE да только вот обсуждаемом примере нет ни одного комментария зачем это сделано! ;) В исходном примере enveloping подпись. В случае enveloped подпись перед проверкой удаляется; т.к. вы подписываете весь документ без enveloped, то узел подписи остается при проверке. Или подписывать определенный узел по Id, тогда проблем не должно было быть. |
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.11.2017(UTC) Сообщений: 12 ![Российская Федерация Российская Федерация](/forum2/Content/images/flags/RU.png) Откуда: Санкт-Петербург Сказал(а) «Спасибо»: 2 раз
|
извините, но здесь не соглашусь :) бОльшая часть моего кода скопирована из данного примера. и генерируется enveloped-подпись, расположенная внутри элемента <ds:Signature>, а не оборачивающая подписываемый документ
|
|
|
|
Форум КриптоПро
»
Средства криптографической защиты информации
»
КриптоПро JCP, JavaTLS
»
верификация enveloped xml signature не проходит без TRANSFORM_ENVELOPED_SIGNATURE
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close