Проверка Xades4j. Невозможно создать значение null:null из http://www.w3.org/2000/09/xmldsig#.

Я пытаюсь написать программу, которая должна проверять знак XML, используя библиотеку xades4j.

У меня есть что-то вроде этого:

public static void verify() throws Exception
         {
        FileSystemDirectoryCertStore certStore = new     FileSystemDirectoryCertStore("C:\\(...)");
        KeyStore trustAnchors = KeyStore.getInstance("jks");
        trustAnchors.load(null);
        CertificateValidationProvider certValidator = new PKIXCertificateValidationProvider(trustAnchors, false, certStore.getStore());

        XadesVerificationProfile p = new XadesVerificationProfile(certValidator);
        XadesVerifier v = p.newVerifier();

        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        DocumentBuilder builder = factory.newDocumentBuilder();     
        String  pathToXmlFile = "C:\\(..)\\TEST20140709_04.xml";

        Document docSource = builder.parse(new FileInputStream(pathToXmlFile));
        docSource.getDocumentElement();

        //Element sigElem = (Element)factory.newDocumentBuilder().parse(new FileInputStream(pathToXmlFile));
        Element sigElem =  docSource.getDocumentElement();
        SignatureSpecificVerificationOptions ssvo = new SignatureSpecificVerificationOptions();
        ssvo.useBaseUri("http://www.ietf.org/rfc/");

        XAdESVerificationResult r = v.verify(sigElem, ssvo);


System.out.println(r.getSignatureForm());
System.out.println(r.getSignatureAlgorithmUri());
System.out.println(r.getSignedDataObjects().size());
System.out.println(r.getQualifyingProperties().all().size());
    }

Я получаю это исключение:

Exception in thread "main" xades4j.xml.unmarshalling.UnmarshalException: Bad XML signature
    at xades4j.verification.XadesVerifierImpl.verify(XadesVerifierImpl.java:123)
    at bankconnect2.xades.Signer.verify(Signer.java:392)
    at bankconnect2.BankConnect2.main(BankConnect2.java:591)
 Caused by: org.apache.xml.security.exceptions.XMLSecurityException: **Cannot create a null:null from a http://www.w3.org/2000/09/xmldsig#:Signature element**
at org.apache.xml.security.utils.ElementProxy.guaranteeThatElementInCorrectSpace(ElementProxy.java:249)
at org.apache.xml.security.utils.ElementProxy.<init>(ElementProxy.java:97)
at org.apache.xml.security.utils.SignatureElementProxy.<init>(SignatureElementProxy.java:58)
at org.apache.xml.security.signature.XMLSignature.<init>(XMLSignature.java:341)
at org.apache.xml.security.signature.XMLSignature.<init>(XMLSignature.java:326)
at xades4j.verification.XadesVerifierImpl.verify(XadesVerifierImpl.java:120)

Размер trustAnchors равен 0, а не должен быть > 0? Можете ли вы указать мне, где я ошибаюсь?


person Piterus    schedule 10.07.2014    source источник


Ответы (1)


Я отметил 2 вещи:

Если нераспределяющее исключение по-прежнему присутствует, возможно, в XML-подписи есть ошибка.

person lgoncalves    schedule 10.07.2014
comment
@Igoncalves Спасибо за ваш ответ. Я добавил ключ загрузки из файла, а также установил для пространства имен значение true. Теперь у меня есть эта ошибка: org.apache.xml.security.exceptions.XMLSecurityException: невозможно создать urn:ca:std:ccs:pekao:tech:wsdl:ws.001.01:DomesticTransfer из w3.org/2000/09/xmldsig#:Signature - person Piterus; 11.07.2014
comment
Без дополнительной информации я не могу вам помочь. Вы проанализировали упомянутый элемент в файле XML? Можете ли вы опубликовать XML или загрузить его куда-нибудь? - person lgoncalves; 11.07.2014