Xades4j: ошибка с политикой «я: политика / общие» - PullRequest
0 голосов
/ 23 января 2020

Я пытаюсь подписать счет для администрации Испании sh, используя xades4j. Они предоставляют онлайновую проверку для подписанного xml, и только один шаг общей проверки завершается неудачей:

Step: Checks if the signature policy is correct Result: Unknown policy self:policy/general

Другие этапы, такие как целостность и статус сертификата, в порядке.

Мне кажется, что я сам: policy / general - это какой-то заполнитель в библиотеке xades4j, который я должен каким-то образом переопределить?

Сейчас я использую этот код для политики

SignaturePolicyInfoProvider policyInfoProvider = new SignaturePolicyInfoProvider()
{
    String FACTURAE_URL = "http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf";
    public SignaturePolicyBase getSignaturePolicy()
    {                       
        InputStream is = null;
        try {
            URL url = new URL(FACTURAE_URL);
            URLConnection conn = url.openConnection();
            is = conn.getInputStream();
        } catch (IOException e) {
            e.printStackTrace();
        }
        SignaturePolicyBase base = new SignaturePolicyIdentifierProperty(new ObjectIdentifier(FACTURAE_URL),is);
        return base;
    }
};

Требования приведены в этом онлайн-документе (испанский sh) https://www.facturae.gob.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf

Мой xml вывод соответствует:

            <xades:SignaturePolicyIdentifier>
                <xades:SignaturePolicyId>
                    <xades:SigPolicyId>
                        <xades:Identifier>http://www.facturae.es/politica_de_firma_formato_facturae/politica_de_firma_formato_facturae_v3_1.pdf</xades:Identifier>
                    </xades:SigPolicyId>
                    <xades:SigPolicyHash>
                        <ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                        <ds:DigestValue>2jmj7l5rSw0yVb/vlWAYkK/YBwk=</ds:DigestValue>
                    </xades:SigPolicyHash>
                </xades:SignaturePolicyId>
            </xades:SignaturePolicyIdentifier>

1 Ответ

0 голосов
/ 24 января 2020

Я предполагаю, что сам: policy / general - это какой-то заполнитель в библиотеке xades4j, который я должен каким-то образом переопределить?

Нет такой вещи. Вероятно, это деталь проверяющего приложения.

Я заметил, что URL в тексте вопроса - HTTPS, а в коде - HTTP. Кажется, что позднее перенаправляет на HTTP, но кажется, что URLConnection не следует перенаправлениям, когда протоколы отличаются .

Попробуйте использовать окончательный HTTPS URL в вашем коде.

...