Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

39 lines (32 sloc) 1.053 kB
import Control.Monad
import Data.Time.Clock
import Data.Time.Calendar
import Data.Maybe
import OpenSSL
import OpenSSL.PKCS7
import OpenSSL.EVP.Cipher
import OpenSSL.EVP.PKey
import OpenSSL.PEM
import OpenSSL.RSA
import OpenSSL.X509
import OpenSSL.X509.Store
main = withOpenSSL $
do rsa <- generateRSAKey 512 65537 Nothing
cert <- genCert rsa
pkcs7 <- pkcs7Sign cert rsa [] "Hello, world!" [Pkcs7NoCerts]
store <- newX509Store
addCertToStore store cert
pkcs7Verify pkcs7 [cert] store Nothing [] >>= print
return ()
genCert :: KeyPair k => k -> IO X509
genCert pkey
= do x509 <- newX509
setVersion x509 2
setSerialNumber x509 1
setIssuerName x509 [("C", "JP")]
setSubjectName x509 [("C", "JP")]
setNotBefore x509 =<< liftM (addUTCTime (-1)) getCurrentTime
setNotAfter x509 =<< liftM (addUTCTime (365 * 24 * 60 * 60)) getCurrentTime
setPublicKey x509 pkey
signX509 x509 pkey Nothing
return x509
Jump to Line
Something went wrong with that request. Please try again.