Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
40 lines (32 sloc) 1.24 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
Something went wrong with that request. Please try again.