An interface to PKCS#10 certificate request.
- data X509Req
- newX509Req :: IO X509Req
- signX509Req :: KeyPair key => X509Req -> key -> Maybe Digest -> IO ()
- verifyX509Req :: PublicKey key => X509Req -> key -> IO VerifyStatus
- printX509Req :: X509Req -> IO String
- makeX509FromReq :: X509Req -> X509 -> IO X509
- getVersion :: X509Req -> IO Int
- setVersion :: X509Req -> Int -> IO ()
- getSubjectName :: X509Req -> Bool -> IO [(String, String)]
- setSubjectName :: X509Req -> [(String, String)] -> IO ()
- getPublicKey :: X509Req -> IO SomePublicKey
- setPublicKey :: PublicKey key => X509Req -> key -> IO ()
Type
Functions to manipulate request
newX509Req :: IO X509ReqSource
creates an empty certificate request. You must set
the following properties to and sign it (see newX509Req
signX509Req
) to
actually use the certificate request.
- Version
- See
setVersion
. - Subject Name
- See
setSubjectName
. - Public Key
- See
setPublicKey
.
:: KeyPair key | |
=> X509Req | The request to be signed. |
-> key | The private key to sign with. |
-> Maybe Digest | A hashing algorithm to use. If
|
-> IO () |
signs a certificate request with a subject private
key.
signX509Req
:: PublicKey key | |
=> X509Req | The request to be verified. |
-> key | The public key to verify with. |
-> IO VerifyStatus |
verifies a signature of certificate request with
a subject public key.
verifyX509Req
printX509Req :: X509Req -> IO StringSource
translates a certificate request into
human-readable format.
printX509Req
req
makeX509FromReq :: X509Req -> X509 -> IO X509Source
creates an empty X.509 certificate
and copies as much data from the request as possible. The resulting
certificate doesn't have the following data and it isn't signed so
you must fill them and sign it yourself.
makeX509FromReq
req cert
- Serial number
- Validity (Not Before and Not After)
Example:
import Data.Time.Clock genCert :: X509 -> EvpPKey -> Integer -> Int -> X509Req -> IO X509 genCert caCert caKey serial days req = do cert <- makeX509FromReq req caCert now <- getCurrentTime setSerialNumber cert serial setNotBefore cert $ addUTCTime (-1) now setNotAfter cert $ addUTCTime (days * 24 * 60 * 60) now signX509 cert caKey Nothing return cert
Accessors
getVersion :: X509Req -> IO IntSource
returns the version number of certificate
request.
getVersion
req
setVersion :: X509Req -> Int -> IO ()Source
updates the version number of certificate
request.
setVersion
req ver
getSubjectName :: X509Req -> Bool -> IO [(String, String)]Source
returns the subject name of
certificate request. See getSubjectName
req wantLongNameOpenSSL.X509.getSubjectName
of
OpenSSL.X509.
setSubjectName :: X509Req -> [(String, String)] -> IO ()Source
updates the subject name of
certificate request. See setSubjectName
req nameOpenSSL.X509.setSubjectName
of
OpenSSL.X509.
getPublicKey :: X509Req -> IO SomePublicKeySource
returns the public key of the subject of
certificate request.
getPublicKey
req
setPublicKey :: PublicKey key => X509Req -> key -> IO ()Source
updates the public key of the subject of
certificate request.
setPublicKey
req