You have to serialize the signature and deserialize it sadly the
internal structures doesn't manage signing and verifying and the same
time.
On Mon, Aug 4, 2008 at 1:42 PM, <[EMAIL PROTECTED]> wrote:
>
> I am trying to create, then verify a signature, without much success. I
> assume something I am doing is corrupting the XML, so I chnaged the code to
> call checkSignatureValue() immediately after calling sign():
>
> Document doc = assertion.getOwnerDocument();
> doc.normalize();
> // somehow the ID attribute is not yet really in the doc
> // so we regsiter the id of interest so the Resolver called
> by sign can
> // find it
> String assertionId =
> assertion.getAttributeNode("ID").toString().substring(4,37);
> IdResolver.registerElementById(assertion, assertionId);
>
> XMLSignature sig = new XMLSignature(doc, "",
>
> XMLSignature.ALGO_ID_SIGNATURE_RSA_SHA1,Canonicalizer.ALGO_ID_C14N_EXCL_OMIT_COMMENTS);
>
> assertion.insertBefore(sig.getElement(),assertion.getFirstChild());
>
> // create the transforms object for the Document/Reference
> Transforms transforms = new Transforms(doc);
>
> // First we have to strip away the signature element (it's
> not part of
> // the signature calculations). The enveloped transform can
> be used.
>
> transforms.addTransform(Transforms.TRANSFORM_ENVELOPED_SIGNATURE);
> // Part of the signature element needs to be canonicalized.
> It is a kind
> // of normalizing algorithm for XML. For more information
> please take a
> // look at the W3C XML Digital Signature webpage.
> InclusiveNamespaces incNS = new InclusiveNamespaces(doc,
> "ds saml xenc xs");
>
>
> transforms.addTransform(Transforms.TRANSFORM_C14N_EXCL_OMIT_COMMENTS,incNS.getElement());
> // Add the above Document/Reference
> sig.addDocument("#"+assertionId, transforms,
> Constants.ALGO_ID_DIGEST_SHA1);
>
> Key privKey = (Key) cred.get("privateKey");
> sig.sign(privKey);
>
> boolean isSuccess = sig.checkSignatureValue(<public
> key>);
> LogManager.debug("First verification = " + isSuccess);
>
> The call to sig.checkSignatureValue () fails. Can anyone help explain
> why? If I understand this, I am hoping I will better understand how to make
> the the rest work.
>
> Ed