At 2012-11-03 15:07 +0100, Alfredo Esteban wrote:
Hello,

I was verifying whether xmlsec supports XAdES signature (Does it?). As
you probably know, XAdES is an European extension of XMLsign.

I'm able to sign the attached XAdES template without errors but
xmlsec1 is not able to verify its own resulting signature:

> xmlsec1 --version
xmlsec1 1.2.18 (openssl)

> xmlsec1 sign --pkcs12 ../../certificado-ceres-alfredo-esteban.p12 --output hola.xsig --pwd xxxxxxxxxxxxx ejemplo-xades-enveloped.xml

> xmlsec1 verify --trusted-der aet-cert.der ejemplo-xades-enveloped.xsig func=xmlSecOpenSSLEvpDigestVerify:file=digests.c:line=229:obj=sha1:subj=unknown:error=12:invalid data:data and digest do not match
FAIL
SignedInfo References (ok/all): 1/2
Manifests References (ok/all): 0/0
Error: failed to verify file "ejemplo-xades-enveloped.xsig"

Is it a bug? Any help is welcome.

I think not.  I think it is an issue with your signature.

I designed the XML scaffolding for OASIS UBL documents and I'm told there are a number of users of XAdES in Europe who are signing UBL documents using it. An example is found here, and you can see a couple of XAdES fields under the ds:Object element:

 http://docs.oasis-open.org/ubl/prd2-UBL-2.1/xml/UBL-Invoice-2.0-Enveloped.xml

I used xmlsec to sign and validate this document. The environment that I publish to sign and to validate UBL documents can be found here:

 http://www.CraneSoftwrights.com/resources/ubl/#digsig

Looking at the example UBL Invoice cited above, comparing it to the document you attached to your post, I note that the UBL document has a <ds:Transform> element that tells the processor to ignore everything under <sig:UBLDocumentSignatures> when calculating the signature. Thus, when the signature information is added by the signing process under the <sig:UBLDocumentSignatures> element, that added information does not change what is calculated to determine the signature information at validation time.

If I've interpreted your situation correctly, the process that is calculating the signature for your XML is signing the entire document, and then you go and change what is signed by adding the signature information to the document without protecting it. When the signature validation process acts on your document, it now contains the signature information which gets incorporated in the calculations and will never be correct.

If, however, you included a <ds:Transform> element in your document in order to protect the signing process from incorporating the added signature, then the validation process will ignore the added signature and come to the same calculations as the signing process.

At least that is what I think is going on.

I hope this helps.

. . . . . . . . . Ken


--
Contact us for world-wide XML consulting and instructor-led training
Free 5-hour lecture: http://www.CraneSoftwrights.com/links/udemy.htm
Crane Softwrights Ltd.            http://www.CraneSoftwrights.com/z/
G. Ken Holman                   mailto:[email protected]
Google+ profile: https://plus.google.com/116832879756988317389/about
Legal business disclaimers:    http://www.CraneSoftwrights.com/legal

_______________________________________________
xmlsec mailing list
[email protected]
http://www.aleksey.com/mailman/listinfo/xmlsec

Reply via email to