'nother n00bie Q: Verifying the DSA signature?
Nathan D. Bowen
nbowen+yadis at andtonic.com
Fri May 20 13:22:00 PDT 2005
Dan Lyke wrote:
>-----BEGIN PmungedtonotscrewupemailersGP SIGNED MESSAGE-----
>Hash: DSA
>
>2005-05-20T18:30:09Z::assert_identity::http://www.livejournal.com/users/danlyke/::http://danlyke.gamahuche.com/openid.cgi
>-----BEGIN PmungedtonotscrewupemailersGP SIGNATURE-----
>Version: GnuPG v1.4.1 (GNU/Linux)
>
>MCwCabcVttGPXYZuML6vsHIYmKZZZZSUeAhR4JZEY9lLAYVxmbkrRNWWlt8ZPDw==
>
>-----END PmungedtonotscrewupemailersGP SIGNATURE-----
>
>
Actually, you're really close. I spent a couple of hours last night
before I finally got this working. In my case, I wasn't completely clear
on the format of the string in the "body", but it looks like you read
the spec just fine -- your input string looks perfect to me. I believe
you're running into a problem because PGP doesn't actually sign the
*body* of the message iteslf; PGP provides a signature of a hash of the
body of the message.
In other words, you're not going to be able to test this with PGP because:
PGP is expecting to verify something like:
BASE64(DSA(MD5("2005-05-20T18:30:09Z::assert_identity::blahblah")))
But OpenID creates its signatures with:
BASE64(DSA("2005-05-20T18:30:09Z::assert_identity::blahblah"))
I tried to "test it by hand", but not with gpg. I was using openssl
command lines, but with no more luck than you're having with gpg.
Eventually I gave up on "testing it by hand", and it turned out to work
just fine from my own code using the algorithms directly. I hope all of
the above makes enough sense to get you going, but this stuff can be a
lot easier to show than to tell -- so just let me know if you'd like to
just see the java code I'm using.
More information about the yadis
mailing list