Ik had verwacht dat veel mensen tegen dit probleem aan waren gelopen, en dat ik dus 100 antwoorden op google kon vinden, maar ik kan kennelijk niet goed zoeken of zoiets
In java genereer ik een XML met envelopped signature, dat ziet er zo uit:
Bij mijn weten kan ik de <Signature> tag niet aanpassen. Nu probeer ik een XSD te schrijven waaraan deze XML voldoet. Toen ik de ondertekening nog niet had geimplementeerd stond daar <tns:Signature/>, zoals in de XSD stond. Maar hoe stop ik een XML signature in de XSD?
Wat ik nu heb, en dus niet werkt:
javax.xml.validation.Validator geeft een SAX-exception met deze message:
Weet iemand hoe ik hiervoor een werkende XSD kan schrijven?

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
| <?xml version="1.0" encoding="UTF-8" standalone="no"?> <tns:Projectnaam xmlns:tns="http://www.example.org/X" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.example.org/X.xsd"> <Signature xmlns="http://www.w3.org/2000/09/xmldsig#"> <SignedInfo> <CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/> <SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/> <Reference URI=""> <Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/></Transforms> <DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/> <DigestValue>BHA6uMDcEhnt1zkr/m6ExUF76zU=</DigestValue> </Reference> </SignedInfo> <SignatureValue>lang verhaal</SignatureValue> <KeyInfo> <X509Data><X509SubjectName>CN=none,OU=none,O=none,L=none,ST=none,C=nl</X509SubjectName><X509Certificate>lang verhaal</X509Certificate></X509Data> </KeyInfo> </Signature> <tns:content>iets</tns:content> </tns:Projectnaam> |
Bij mijn weten kan ik de <Signature> tag niet aanpassen. Nu probeer ik een XSD te schrijven waaraan deze XML voldoet. Toen ik de ondertekening nog niet had geimplementeerd stond daar <tns:Signature/>, zoals in de XSD stond. Maar hoe stop ik een XML signature in de XSD?
Wat ik nu heb, en dus niet werkt:
XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| <?xml version="1.0" encoding="UTF-8"?> <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/X" xmlns:tns="http://www.example.org/X" elementFormDefault="qualified" xmlns:sig="http://www.w3.org/2000/09/xmldsig#"> <import namespace="http://www.w3.org/2000/09/xmldsig#" schemaLocation="https://www.w3.org/TR/2002/REC-xmldsig-core-20020212/xmldsig-core-schema.xsd"/> <complexType name="ProjectnaamType"> <sequence> <element name="Signature" type="sig:SignatureType"></element> <element name="content" type="string"/> </sequence> </complexType> <element name="Projectnaam" type="tns:ProjectnaamType"/> </schema> |
javax.xml.validation.Validator geeft een SAX-exception met deze message:
Als ik de elementFormDefault unqualified maak, wordt de melding veel leuker:org.xml.sax.SAXParseException; systemId: file:/X.xml; lineNumber: 8; columnNumber: 55; cvc-complex-type.2.4.a: Invalid content was found starting with element 'Signature'. One of '{"http://www.example.org/X":Signature}' is expected.
Invalid content was found starting with element 'Signature'. One of '{Signature}' is expected.

Weet iemand hoe ik hiervoor een werkende XSD kan schrijven?