[xmlsec] Signing a batch of signed elements

Aleksey Sanin aleksey at aleksey.com
Mon Nov 16 09:45:25 PST 2009


I am not aware of any limitations in xmlsec that will prevent you
from doing what you described :)

Take a look at FAQ at http://www.aleksey.com/xmlsec

Aleksey

Marcus Pereira wrote:
> I think xmlsec1 is trying to use the wrong signature template to "fill".
>       <Reference URI="#1">
> 
> Is my command line arguments wrong or its a limitation of the program?
> 
> Marcus
> 
> 
> 
> Aleksey Sanin wrote:
>>
>> This sounds wrong:
>>
>> expr=xpointer(id('1'))
>>
>> Aleksey
>>
>>
>>
>> Marcus Pereira wrote:
>>> 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>
>>> ---------------------------------------
>>>
>>> _______________________________________________
>>> xmlsec mailing list
>>> xmlsec at aleksey.com
>>> http://www.aleksey.com/mailman/listinfo/xmlsec
>>
>>
> 
> _______________________________________________
> xmlsec mailing list
> xmlsec at aleksey.com
> http://www.aleksey.com/mailman/listinfo/xmlsec


More information about the xmlsec mailing list