Hi:

I'm still having problems. After building the Signature element (everything
but the SignatureValue element) I execute:

  [Server side]
  XMLSignature sig = .... -> It uses
http://www.w3.org/2000/09/xmldsig#rsa-sha1 as signature method
  sig.getSignedInfo().generateDigestValues();
  byte[] data2Sign = sig.getSignedInfo().getCanonicalizedOctetStream();

then, the Server sends 'data2Sign' to the Client (encoded) and the client
executes

[Client side]
  PrivateKey pKey = ....
  Signature signature = Signature.getInstance("SHA1withRSA");
  signature.initSign(privateKey);
  signature.update(data2Sign); --> data2Sign is the decoded data received
from the Server
  byte[] dataSigned =  signature.sign();

then, the Client sends back to the Server 'dataSigned' (encoded) and the
server adds it to the SignatureValue element (decoded).

But the signature build this way is not valid :-( If I execute
XMLSignature.sign()
directly, the signature I get is different. What I'm doing wrong?

As you can see, the server sends directly the C14N data, not the digested
one. I have also tried digesting it before with the same result. In fact, I
am doing the same that XMLSignature.sign()'s method, so I can't see where
the problem is.

Does anybody have an idea?

Thanks a lot

Isi



2008/7/29 Lopez Cantero, Sergio <[EMAIL PROTECTED]>

>  As far as I know, yes, you have to digest them "by hand"
>
>
>
> I hope to have helped you.
>
>
>
> Sergio
>
>
>
> **
>



> *De:* Legido Martínez, Isidoro [mailto:[EMAIL PROTECTED]
> *Enviado el:* martes, 29 de julio de 2008 8:41
> *Para:* security-dev@xml.apache.org
> *Asunto:* Re: Remote private key
>
>
>
> Thanks
>
> So, how can I get the digested value? Do I have to digest them "by hand"?
>
> Thanks
>
> Isi
>
>  2008/7/29 Lopez Cantero, Sergio <[EMAIL PROTECTED]>
>
> Hi Isidoro,
>
> getCanonicalizedOctetStream returns the bytes you have to digest, not the
> digested data, so that's the difference.
>
> Concerning the way to put back the signature, you can get the signature
> element and search through the DOM for the SignatureValue Element to fill
> its contents.
>
> I'm doing something like that ;)
>
>
>
> Sergio
>
>
>
> *De:* Legido Martínez, Isidoro [mailto:[EMAIL PROTECTED]
> *Enviado el:* lunes, 28 de julio de 2008 21:45
> *Para:* security-dev@xml.apache.org
> *Asunto:* Remote private key
>
>
>
> Hi everybody:
>
> Firs, I will try to explain my current situation (sorry in advanced for my
> poor English :-( ). My signing system is splitted in two pieces: a
> lightweith client that owns the private key and ONLY can sign (no digest)
> and the server side that does everything else EXCEPT signing (digest, add
> Manifest elements or aditional References).
> My initial idea was: the server side builds the SignedInfo elements, get
> its digest and send it to the client. The client signs and send the result
> to the server, which adds this to the SignedInfo. Is that possible withe the
> current implementation?
> I expected that
>
>   SignedInfo si.generateDigestValues();
>   String digest = Base64.encode(si.getCanonicalizedOctetStream());
>
> 'digest' would contain the digest value in Base64, but what I get is
> something different. How can I get the digest? After signing, is there any
> way for adding it to SignInfo.
>
> Thanks a lot
>
> Isi
>
>
>
>
> --
> ,-""""""-.
> /\j__/\ ( \`--.
> [EMAIL PROTECTED]@'/ _) >--.`.
> _{.:Y:_}_{{_,' ) )
> {_}`-^{_} ``` (_/
>



-- 
,-""""""-.
/\j__/\ ( \`--.
[EMAIL PROTECTED]@'/ _) >--.`.
_{.:Y:_}_{{_,' ) )
{_}`-^{_} ``` (_/

Reply via email to