-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | PKCS#10 library
--   
--   Please see README.md
@package pkcs10
@version 0.2.0.0


-- | Read/Write PKCS10 certificate signing request (also CSR or
--   certification request).
--   
--   Follows RFC2986
module Data.X509.PKCS10

-- | A list of X520 attributes.
data X520Attribute
X520CommonName :: X520Attribute
X520SerialNumber :: X520Attribute
X520Name :: X520Attribute
X520Surname :: X520Attribute
X520GivenName :: X520Attribute
X520Initials :: X520Attribute
X520GenerationQualifier :: X520Attribute
X520CountryName :: X520Attribute
X520LocalityName :: X520Attribute
X520StateOrProvinceName :: X520Attribute
X520StreetAddress :: X520Attribute
X520OrganizationName :: X520Attribute
X520OrganizationalUnitName :: X520Attribute
X520Title :: X520Attribute
X520DNQualifier :: X520Attribute
X520Pseudonym :: X520Attribute
X509SubjectAltName :: X520Attribute
EmailAddress :: X520Attribute
IPAddress :: X520Attribute
DomainComponent :: X520Attribute
UserId :: X520Attribute
RawAttribute :: [Integer] -> X520Attribute

-- | X520 attributes.
newtype X520Attributes
X520Attributes :: [(X520Attribute, ASN1CharacterString)] -> X520Attributes

-- | A list of PKCS9 extension attributes.
data PKCS9Attribute
PKCS9Attribute :: e -> PKCS9Attribute

-- | PKCS9 extension attributes.
newtype PKCS9Attributes
PKCS9Attributes :: [PKCS9Attribute] -> PKCS9Attributes

-- | Certificate request info.
data CertificationRequestInfo
CertificationRequestInfo :: Version -> X520Attributes -> PubKey -> PKCS9Attributes -> CertificationRequestInfo
[version] :: CertificationRequestInfo -> Version
[subject] :: CertificationRequestInfo -> X520Attributes
[subjectPublicKeyInfo] :: CertificationRequestInfo -> PubKey
[attributes] :: CertificationRequestInfo -> PKCS9Attributes

-- | CSR class.
data CertificationRequest
CertificationRequest :: CertificationRequestInfo -> SignatureALG -> Signature -> CertificationRequest
[certificationRequestInfo] :: CertificationRequest -> CertificationRequestInfo
[signatureAlgorithm] :: CertificationRequest -> SignatureALG
[signature] :: CertificationRequest -> Signature

-- | A signed CSR class.
data SignedCertificationRequest
SignedCertificationRequest :: CertificationRequest -> ByteString -> SignedCertificationRequest
[certificationRequest] :: SignedCertificationRequest -> CertificationRequest
[rawCertificationRequestInfo] :: SignedCertificationRequest -> ByteString

-- | Version of CSR (default 0).
newtype Version
Version :: Int -> Version

-- | Signature of certificate request info.
newtype Signature
Signature :: ByteString -> Signature

-- | Key pair for RSA and DSA keys.
data KeyPair
KeyPairRSA :: PublicKey -> PrivateKey -> KeyPair
KeyPairDSA :: PublicKey -> PrivateKey -> KeyPair

-- | Helper to convert string values as utf8 asn1 strings.
makeX520Attributes :: [(X520Attribute, String)] -> X520Attributes

-- | Generate CSR.
generateCSR :: (MonadRandom m, HashAlgorithmConversion hashAlg, HashAlgorithm hashAlg) => X520Attributes -> PKCS9Attributes -> KeyPair -> hashAlg -> m (Either Error CertificationRequest)

-- | Sign CSR.
csrToSigned :: CertificationRequest -> SignedCertificationRequest

-- | Verify signed CSR.
verify :: SignedCertificationRequest -> PubKey -> Bool

-- | Convert CSR to DER as ByteString.
toDER :: CertificationRequest -> ByteString

-- | Convert ByteString to signed CSR.
fromDER :: ByteString -> Either Error SignedCertificationRequest

-- | Convert CSR to PEM format.
toPEM :: CertificationRequest -> PEM

-- | Convert CSR to PEM new format.
toNewFormatPEM :: CertificationRequest -> PEM

-- | Convert PEM to signed CSR.
fromPEM :: PEM -> Either Error SignedCertificationRequest
instance GHC.Classes.Eq Data.X509.PKCS10.KeyPair
instance GHC.Show.Show Data.X509.PKCS10.KeyPair
instance GHC.Classes.Eq Data.X509.PKCS10.Error
instance GHC.Show.Show Data.X509.PKCS10.Error
instance GHC.Classes.Eq Data.X509.PKCS10.SignedCertificationRequest
instance GHC.Show.Show Data.X509.PKCS10.SignedCertificationRequest
instance GHC.Classes.Eq Data.X509.PKCS10.CertificationRequest
instance GHC.Show.Show Data.X509.PKCS10.CertificationRequest
instance GHC.Classes.Eq Data.X509.PKCS10.Signature
instance GHC.Show.Show Data.X509.PKCS10.Signature
instance GHC.Classes.Eq Data.X509.PKCS10.CertificationRequestInfo
instance GHC.Show.Show Data.X509.PKCS10.CertificationRequestInfo
instance GHC.Classes.Eq Data.X509.PKCS10.Version
instance GHC.Show.Show Data.X509.PKCS10.Version
instance GHC.Classes.Eq Data.X509.PKCS10.X520Attributes
instance GHC.Show.Show Data.X509.PKCS10.X520Attributes
instance GHC.Classes.Eq Data.X509.PKCS10.PKCS9Attributes
instance GHC.Show.Show Data.X509.PKCS10.PKCS9Attributes
instance GHC.Classes.Eq Data.X509.PKCS10.X520Attribute
instance GHC.Show.Show Data.X509.PKCS10.X520Attribute
instance Data.X509.PKCS10.HashAlgorithmConversion Crypto.Hash.MD2.MD2
instance Data.X509.PKCS10.HashAlgorithmConversion Crypto.Hash.MD5.MD5
instance Data.X509.PKCS10.HashAlgorithmConversion Crypto.Hash.SHA1.SHA1
instance Data.X509.PKCS10.HashAlgorithmConversion Crypto.Hash.SHA224.SHA224
instance Data.X509.PKCS10.HashAlgorithmConversion Crypto.Hash.SHA256.SHA256
instance Data.X509.PKCS10.HashAlgorithmConversion Crypto.Hash.SHA384.SHA384
instance Data.X509.PKCS10.HashAlgorithmConversion Crypto.Hash.SHA512.SHA512
instance Data.ASN1.Types.ASN1Object Data.X509.PKCS10.CertificationRequest
instance Data.ASN1.Types.ASN1Object Data.X509.PKCS10.Signature
instance Data.ASN1.Types.ASN1Object Data.X509.PKCS10.CertificationRequestInfo
instance Data.ASN1.Types.ASN1Object Data.X509.PKCS10.Version
instance Data.ASN1.Types.ASN1Object Data.X509.PKCS10.X520Attributes
instance Data.ASN1.Types.ASN1Object Data.X509.PKCS10.PKCS9Attributes
instance GHC.Show.Show Data.X509.PKCS10.PKCS9Attribute
instance GHC.Classes.Eq Data.X509.PKCS10.PKCS9Attribute
instance Data.ASN1.Types.ASN1Object Data.X509.PKCS10.PKCS9Attribute
instance Data.ASN1.OID.OIDable Data.X509.PKCS10.X520Attribute
instance Data.ASN1.OID.OIDNameable Data.X509.PKCS10.X520Attribute
instance Data.ASN1.Types.ASN1Object Crypto.PubKey.DSA.Signature
