Hi,
How do I determine where the <ds:Signature> element is placed in the result
XML? E.g., I have a SOAP message like this:
<env:Envelope>
<env:Header ... />
<env:Body>
<pdpa:message>...</pdpa:message>
</env:Body>
</env:Envelope>
My code signs only the <pdpa:message> part (using XPath-Transforms). In the
resulting tree, the signature is added *after* the </env:Body>:
<env:Body>
<pdpa:message>...</pdpa:message>
</env:Body>
<ds:Signature>...</ds:Signature>
</env:Envelope>
I would, however, like to add it to the <pdpa:message> part:
<env:Body>
<pdpa:message>...</pdpa:message>
<ds:Signature>...</ds:Signature>
</env:Body>
</env:Envelope>
Reason: that way, I can just encrypt the <pdpa:message> (replace with
<xenc:EncryptedData>) and preserve a correct SOAP message (with a Body
element). The way it is now, I would encrypt the <pdpa:message> and have a
signature "on the outside", which I consider weaker due to the weaknesses in
SHA1.
The code for the XPath-Transformation is
String filter[][] = { { XPath2FilterContainer.INTERSECT,
"//Envelope/Body/message" } };
transforms.addTransform(Transforms.TRANSFORM_XPATH2FILTER,
XPath2FilterContainer.newInstances(insideDoc, filter));
Which I think is correct. Where do I make the mistake?
Thanks,
Ralph
--
For contact details, please see www.ralphholz.de.