Hi, in principle AES is a symmetric encryption algorithm so it does not
have public/private key pairs. It only has one key used to both
encrypt and decrypt. What you want is RSA
(http://www.haskell.org/crypto/doc/html/Codec-Encryption-RSA.html).

On Wed, Oct 8, 2008 at 9:14 AM, Jeffrey Drake <jeffd@techsociety.ca> wrote:

I have an application where I would like to use AES to have a
public/private key pair and digitally sign/verify documents.

I have found documentation for a library that does the encryption:
http://www.haskell.org/crypto/doc/html/Codec-Encryption-AES.html

However, it seems to have only two methods:

encrypt :: AESKey a => a -> Word128 -> Word128
decrypt :: AESKey a => a -> Word128 -> Word128

A problem for me, I don't know where AESKey is supposed to come from, or
how to use this to sign things. My ignorance of this topic does not
help. Would it be correct to say that signing a document is similar to
an MD5 hash on a document?

In addition, this project requires a matching python component (that
works together with the haskell). I am in a similar situation, I have
found this: http://bitconjurer.org/rijndael.py that provides a similar
functionality. But it seems to provide insights (and thus portability to
haskell) on how to generate the public/private keys by providing a
single key and performing a lot of math on it to generate the two pairs.
But it still does not help me sign anything.

Any help whatsoever on this topic is welcome.
With regards,
Jeffrey.