Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

40 lines (32 sloc) 1.27 kb
import Control.Monad hiding (join)
import OpenSSL
import OpenSSL.EVP.PKey
import OpenSSL.PEM
import OpenSSL.RSA
import System.IO
import Text.Printf
main = withOpenSSL $
do let keyBits = 512
keyE = 65537
printf "Generating RSA key-pair, nbits = %d, e = %d:\n" keyBits keyE
rsa <- generateRSAKey keyBits keyE $ Just $ \ phase _ ->
do putChar $ case phase of
0 -> '.'
1 -> '+'
2 -> '*'
3 -> '\n'
n -> head $ show n
hFlush stdout
printf "Done.\n"
let n = rsaN rsa
e = rsaE rsa
d = rsaD rsa
p = rsaP rsa
q = rsaQ rsa
printf "n (public modulus) = %s\n" (show n)
printf "e (public exponent) = %s\n" (show e)
printf "d (private exponent) = %s\n" (show d)
printf "p (secret prime factor) = %s\n" (show p)
printf "q (secret prime factor) = %s\n" (show q)
writePKCS8PrivateKey rsa Nothing >>= putStr
writePublicKey rsa >>= putStr
Jump to Line
Something went wrong with that request. Please try again.