[xmlsec] signing failure with 0.0.13 that work with 0.0.10
Aleksey Sanin
aleksey@aleksey.com
Tue, 18 Mar 2003 16:25:38 -0800
Hi, Ferrel!
The error you have says that instead of expected <dsig:Signature> node
in the xmlSecDSigGenerate() function you've got something else. Using
"testXPath" utility from LibXML package I can confirm that:
[aleksey@lsh ferrel]$ ./testXPath --input test-signed.xml "//Contact[1]"
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT Contact
ATTRIBUTE Id
TEXT
content=f6b1af52-0ba8-11d7-87ec-c3c034e4ae6a
As you can see, you have selected a wrong "start node" (Contact instead of
<dsig:Signature>). Simple changing the xpath expression helps:
[aleksey@lsh ferrel]$ ./testXPath --input test-signed.xml "//Contact/*[6]"
Object is a Node Set :
Set contains 1 nodes:
1 ELEMENT sig:Signature
namespace sig href=http://www.w3.org/2000/09/xmldsig#
[aleksey@lsh ferrel]$ xmlsec sign --node-xpath '//Contact/*[6]'
--privkey rsakey.pem
test-signed.xml
<?xml version="1.0" encoding="UTF-8"?>
<Keys Source="Atlanta"><!-- generated TestKey keygen
--><Contacts><Contact Id="f6b1af52-0ba8-11d7-87ec-c3c034e4ae6a">
....
From my point of view, your original XPath expression to select
<dsig:Signature> node
is incorrect and I am not sure that I understand how it used to work.
May be there was
a bug in LibXML and you got it fixed with new LibXML version.
With best regards,
Aleksey