Hello,

i am trying to generate a signature looking like this:

<ds:Signature>
 <ds:SignedInfo>
  ...
   <ds:Reference URI="#xpointer(//[EMAIL PROTECTED]'true'])">
   ...
   <ds::Reference/>
  ...
</ds:SignedInfo>
<ds:SignatureValue>JVBERi0xLjMNJeLjz9MNCjE2NT...</ds:SignatureValue>
</AuthSignature>

where the xpointer expression selects all nodes (with subnodes) for
signing where attrib 'authenticate' is 'true'.

>From older postings i learned that i can NOT pass this xpointer
expression to DSIGSignature::createReference() :

  sigNode = sig->createBlankSignature(doc,
CANON_C14N_NOC,SIGNATURE_RSA, HASH_SHA1);
  parent->appendChild(sigNode);
  DSIGReference * ref =
sig->createReference(MAKE_UNICODE_STRING("//[EMAIL PROTECTED]'true']"));

Instead, i found i have to use Xpath Transforms. If i say

  ref->appendXPathTransform ("//[EMAIL PROTECTED]'true']");

does that mean that sig->sign() will only see (and sign) what matches
the #xpointer expression ? (I'm not shure because my peer still
says "authentication failed". Maybe use DSIGTransformXPathFilter instead
of DSIGTransformXPath? ). If someone already solved a similar problem i
would be happy to get a hint ...

Thank you in advance,

Volker







Reply via email to