[xmlsec] Signing a batch of signed elements
Marcus Pereira
marcus at task.com.br
Mon Nov 16 07:13:22 PST 2009
I need to feed a government system that requires a signed xml that
contains a batch of signed xml elements.
After signing the elements and building the final batch file xmlsec1
fails to sign it.
It seems xmlsec1 is getting confused about the many "<Signature>"
elements in the xml. Although I think I am telling it what is the right
chain to sign the error shows a xpointer to the first signature element
and not the last one (the one the node-id refers).
How can I solve this?
Thanks for any help.
Marcus Pereira
My command:
---------------------------------------
$ xmlsec1 sign --pwd "xxxxxx" --id-attr:Id BatchObjects --node-id
"batch1" --privkey-pem mykey.pem batch_obj_tmpl.xml
func=xmlSecXPathDataExecute:file=xpath.c:line=273:obj=unknown:subj=xmlXPtrEval:error=5:libxml2
library function failed:expr=xpointer(id('1'))
func=xmlSecXPathDataListExecute:file=xpath.c:line=356:obj=unknown:subj=xmlSecXPathDataExecute:error=1:xmlsec
library function failed:
func=xmlSecTransformXPathExecute:file=xpath.c:line=466:obj=xpointer:subj=xmlSecXPathDataExecute:error=1:xmlsec
library function failed:
func=xmlSecTransformDefaultPushXml:file=transforms.c:line=2371:obj=xpointer:subj=xmlSecTransformExecute:error=1:xmlsec
library function failed:
func=xmlSecTransformCtxXmlExecute:file=transforms.c:line=1207:obj=unknown:subj=xmlSecTransformPushXml:error=1:xmlsec
library function failed:transform=xpointer
func=xmlSecTransformCtxExecute:file=transforms.c:line=1267:obj=unknown:subj=xmlSecTransformCtxXmlExecute:error=1:xmlsec
library function failed:
func=xmlSecDSigReferenceCtxProcessNode:file=xmldsig.c:line=1571:obj=unknown:subj=xmlSecTransformCtxExecute:error=1:xmlsec
library function failed:
func=xmlSecDSigCtxProcessSignedInfoNode:file=xmldsig.c:line=804:obj=unknown:subj=xmlSecDSigReferenceCtxProcessNode:error=1:xmlsec
library function failed:node=Reference
func=xmlSecDSigCtxProcessSignatureNode:file=xmldsig.c:line=547:obj=unknown:subj=xmlSecDSigCtxProcessSignedInfoNode:error=1:xmlsec
library function failed:
func=xmlSecDSigCtxSign:file=xmldsig.c:line=303:obj=unknown:subj=xmlSecDSigCtxSigantureProcessNode:error=1:xmlsec
library function failed:
Error: signature failed
Error: failed to sign file "batch_obj_tmpl.xml"
---------------------------------------
My Template:
---------------------------------------
<?xml version="1.0"?>
<SendBatch xmlns="http://www.somelink.org/xsdlink.xsd">
<BatchObjects Id="batch1" version="1.00">
<BatchNumber>1</BatchNumber>
<SenderId>09812</SenderId>
<ObjectsCount>2</ObjectsCount>
<ObjectsList>
<Object>
<InfObject Id="1">
<Name>Object Example 1</Name>
<Status>1</Status>
<ObjectData>
<ObjDat1>
<MoreData>Test 1 Test 1 Test 1</MoreData>
</ObjDat1>
</ObjectData>
</InfObject>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"
Id="Sig_Object:1">
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#1">
<Transforms>
<Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>/xxx...DigestData2...xxx</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>/xxx...SignatureData2...xxx</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIX509CertificateData</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Object>
<Object>
<InfObject Id="2">
<Name>Object Example 2</Name>
<ObjectData>
<ObjDat1>
<MoreData>Test 2 Test 2 Test 2</MoreData>
</ObjDat1>
</ObjectData>
</InfObject>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#"
Id="Sig_Object:2">
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#2">
<Transforms>
<Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>/xxx...DigestData2...xxx</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>/xxx...SignatureData2...xxx</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIX509CertificateData</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</Object>
</ObjectsList>
</BatchObjects>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#" Id="Sig_Batch1">
<SignedInfo>
<CanonicalizationMethod
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
<SignatureMethod
Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#batch1">
<Transforms>
<Transform
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue/>
</Reference>
</SignedInfo>
<SignatureValue/>
<KeyInfo>
<X509Data>
<X509Certificate>MIIX509CertificateData</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</SendBatch>
---------------------------------------
More information about the xmlsec
mailing list