Использование xades4j для подписи счета UBL2.1 - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь использовать библиотеку xades4j для цифровой подписи счета-фактуры UBL2.1.

UBL определяет преобразование xpath как:

count(ancestor-or-self::sig:UBLDocumentSignatures | here()/ancestor::sig:UBLDocumentSignatures[1]) > count(ancestor-or-self::sig:UBLDocumentSignatures)

и ссылается на Tranform ALgorithm XPath 1.0: http://www.w3.org/TR/1999/REC-xpath-19991116

Когда я определяю ссылку с помощью xades4j, это выглядит так:

DataObjectDesc ref1 = new DataObjectReference("")
                                    .withTransform(new XPathTransform(xpathValue).withNamespace(xpathNamespacePrefix, xpathNamespace))
                                    .withDataObjectFormat(new DataObjectFormatProperty("application/xml", "UTF-8").withDescription("xml dokumenta"));

Я получил исключение, что функция здесь () в xpath неизвестна.Функция здесь () не определена в Xpath 1.0.Но в примерах XML-файлов со знаком UBL есть:

<ds:Reference URI="">
    <ds:Transforms>
        <ds:Transform Algorithm="http://www.w3.org/TR/1999/REC-xpath-19991116">
            <ds:XPath xmlns:sig="urn:oasis:names:specification:ubl:schema:xsd:CommonSignatureComponents-2">
                count(ancestor-or-self::sig:UBLDocumentSignatures | here()/ancestor::sig:UBLDocumentSignatures[1]) > count(ancestor-or-self::sig:UBLDocumentSignatures)
            </ds:XPath>
        </ds:Transform>
    </ds:Transforms>
    <ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
    <ds:DigestValue>nLVnpwiT7Va0bsPgf14kso83NS8l+/usrd/a5l5ybeY=</ds:DigestValue>
</ds:Reference>

Функция здесь () определена в XML-подписи XPath Filter 2.0: https://www.w3.org/TR/xmldsig-filter2/

Могу ли я использовать библиотеку xades4j makeпреобразование ссылки с использованием функции здесь () ???

С наилучшими пожеланиями, Josip

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

Для справки, добавление явной ссылки на Xalan решает проблему.Больше информации здесь: https://github.com/luisgoncalves/xades4j/issues/177.

0 голосов
/ 19 октября 2018

После изучения спецификаций:

, я пришел к выводу, что в библиотеке xades4j есть ошибка.

Но когда я снова попытался выполнить свой код, чтобы посмотреть, какой стек исключений сгенерирован, я понял, что все работает хорошо.

Итак, я снял этот вопрос.

Josip

...