packages feed

cryptonite 0.5 → 0.6

raw patch · 11 files changed

+226/−27 lines, 11 filesPVP ok

version bump matches the API change (PVP)

API changes (from Hackage documentation)

- Crypto.Cipher.AES: instance BlockCipher AES128
- Crypto.Cipher.AES: instance BlockCipher AES192
- Crypto.Cipher.AES: instance BlockCipher AES256
- Crypto.Cipher.AES: instance BlockCipher128 AES128
- Crypto.Cipher.AES: instance BlockCipher128 AES192
- Crypto.Cipher.AES: instance BlockCipher128 AES256
- Crypto.Cipher.AES: instance Cipher AES128
- Crypto.Cipher.AES: instance Cipher AES192
- Crypto.Cipher.AES: instance Cipher AES256
- Crypto.Cipher.AES: instance NFData AES128
- Crypto.Cipher.AES: instance NFData AES192
- Crypto.Cipher.AES: instance NFData AES256
- Crypto.Cipher.Blowfish: instance BlockCipher Blowfish
- Crypto.Cipher.Blowfish: instance BlockCipher Blowfish128
- Crypto.Cipher.Blowfish: instance BlockCipher Blowfish256
- Crypto.Cipher.Blowfish: instance BlockCipher Blowfish448
- Crypto.Cipher.Blowfish: instance BlockCipher Blowfish64
- Crypto.Cipher.Blowfish: instance Cipher Blowfish
- Crypto.Cipher.Blowfish: instance Cipher Blowfish128
- Crypto.Cipher.Blowfish: instance Cipher Blowfish256
- Crypto.Cipher.Blowfish: instance Cipher Blowfish448
- Crypto.Cipher.Blowfish: instance Cipher Blowfish64
- Crypto.Cipher.Blowfish: instance NFData Blowfish
- Crypto.Cipher.Blowfish: instance NFData Blowfish128
- Crypto.Cipher.Blowfish: instance NFData Blowfish256
- Crypto.Cipher.Blowfish: instance NFData Blowfish448
- Crypto.Cipher.Blowfish: instance NFData Blowfish64
- Crypto.Cipher.Camellia: instance BlockCipher Camellia128
- Crypto.Cipher.Camellia: instance Cipher Camellia128
- Crypto.Cipher.ChaCha: instance NFData State
- Crypto.Cipher.ChaCha: instance NFData StateSimple
- Crypto.Cipher.DES: instance BlockCipher DES
- Crypto.Cipher.DES: instance Cipher DES
- Crypto.Cipher.DES: instance Eq DES
- Crypto.Cipher.RC4: instance ByteArrayAccess State
- Crypto.Cipher.RC4: instance NFData State
- Crypto.Cipher.Salsa: instance NFData State
- Crypto.Cipher.TripleDES: instance BlockCipher DES_EDE2
- Crypto.Cipher.TripleDES: instance BlockCipher DES_EDE3
- Crypto.Cipher.TripleDES: instance BlockCipher DES_EEE2
- Crypto.Cipher.TripleDES: instance BlockCipher DES_EEE3
- Crypto.Cipher.TripleDES: instance Cipher DES_EDE2
- Crypto.Cipher.TripleDES: instance Cipher DES_EDE3
- Crypto.Cipher.TripleDES: instance Cipher DES_EEE2
- Crypto.Cipher.TripleDES: instance Cipher DES_EEE3
- Crypto.Cipher.TripleDES: instance Eq DES_EDE2
- Crypto.Cipher.TripleDES: instance Eq DES_EDE3
- Crypto.Cipher.TripleDES: instance Eq DES_EEE2
- Crypto.Cipher.TripleDES: instance Eq DES_EEE3
- Crypto.Cipher.Types: aeadImplAppendHeader :: AEADModeImpl st -> forall ba. ByteArrayAccess ba => st -> ba -> st
- Crypto.Cipher.Types: aeadImplDecrypt :: AEADModeImpl st -> forall ba. ByteArray ba => st -> ba -> (ba, st)
- Crypto.Cipher.Types: aeadImplEncrypt :: AEADModeImpl st -> forall ba. ByteArray ba => st -> ba -> (ba, st)
- Crypto.Cipher.Types: aeadImplFinalize :: AEADModeImpl st -> st -> Int -> AuthTag
- Crypto.Cipher.Types: aeadModeImpl :: AEAD cipher -> AEADModeImpl st
- Crypto.Cipher.Types: aeadState :: AEAD cipher -> st
- Crypto.Cipher.Types: unAuthTag :: AuthTag -> Bytes
- Crypto.Hash.IO: instance ByteArrayAccess (MutableContext a)
- Crypto.KDF.PBKDF2: iterCounts :: Parameters -> Int
- Crypto.KDF.PBKDF2: outputLength :: Parameters -> Int
- Crypto.KDF.Scrypt: n :: Parameters -> Word64
- Crypto.KDF.Scrypt: outputLength :: Parameters -> Int
- Crypto.KDF.Scrypt: p :: Parameters -> Int
- Crypto.KDF.Scrypt: r :: Parameters -> Int
- Crypto.MAC.HMAC: hmacGetDigest :: HMAC a -> Digest a
- Crypto.MAC.HMAC: instance ByteArrayAccess (HMAC a)
- Crypto.MAC.HMAC: instance Eq (HMAC a)
- Crypto.MAC.Poly1305: data Ctx
- Crypto.MAC.Poly1305: instance ByteArrayAccess Auth
- Crypto.MAC.Poly1305: instance ByteArrayAccess Ctx
- Crypto.MAC.Poly1305: instance Eq Auth
- Crypto.Number.Generate: instance Eq GenTopPolicy
- Crypto.Number.Generate: instance Show GenTopPolicy
- Crypto.Number.ModArithmetic: instance Exception CoprimesAssertionError
- Crypto.Number.ModArithmetic: instance Show CoprimesAssertionError
- Crypto.Number.ModArithmetic: instance Typeable CoprimesAssertionError
- Crypto.PubKey.Curve25519: instance ByteArrayAccess DhSecret
- Crypto.PubKey.Curve25519: instance ByteArrayAccess PublicKey
- Crypto.PubKey.Curve25519: instance ByteArrayAccess SecretKey
- Crypto.PubKey.Curve25519: instance Eq DhSecret
- Crypto.PubKey.Curve25519: instance Eq PublicKey
- Crypto.PubKey.Curve25519: instance Eq SecretKey
- Crypto.PubKey.Curve25519: instance NFData DhSecret
- Crypto.PubKey.Curve25519: instance NFData PublicKey
- Crypto.PubKey.Curve25519: instance NFData SecretKey
- Crypto.PubKey.Curve25519: instance Show DhSecret
- Crypto.PubKey.Curve25519: instance Show PublicKey
- Crypto.PubKey.Curve25519: instance Show SecretKey
- Crypto.PubKey.DH: instance Data Params
- Crypto.PubKey.DH: instance Enum PrivateNumber
- Crypto.PubKey.DH: instance Enum PublicNumber
- Crypto.PubKey.DH: instance Enum SharedKey
- Crypto.PubKey.DH: instance Eq Params
- Crypto.PubKey.DH: instance Eq PrivateNumber
- Crypto.PubKey.DH: instance Eq PublicNumber
- Crypto.PubKey.DH: instance Eq SharedKey
- Crypto.PubKey.DH: instance Num PrivateNumber
- Crypto.PubKey.DH: instance Num PublicNumber
- Crypto.PubKey.DH: instance Num SharedKey
- Crypto.PubKey.DH: instance Ord PrivateNumber
- Crypto.PubKey.DH: instance Ord PublicNumber
- Crypto.PubKey.DH: instance Ord SharedKey
- Crypto.PubKey.DH: instance Read Params
- Crypto.PubKey.DH: instance Read PrivateNumber
- Crypto.PubKey.DH: instance Read PublicNumber
- Crypto.PubKey.DH: instance Read SharedKey
- Crypto.PubKey.DH: instance Real PrivateNumber
- Crypto.PubKey.DH: instance Real PublicNumber
- Crypto.PubKey.DH: instance Real SharedKey
- Crypto.PubKey.DH: instance Show Params
- Crypto.PubKey.DH: instance Show PrivateNumber
- Crypto.PubKey.DH: instance Show PublicNumber
- Crypto.PubKey.DH: instance Show SharedKey
- Crypto.PubKey.DH: instance Typeable Params
- Crypto.PubKey.DH: params_g :: Params -> Integer
- Crypto.PubKey.DH: params_p :: Params -> Integer
- Crypto.PubKey.DSA: instance Data KeyPair
- Crypto.PubKey.DSA: instance Data Params
- Crypto.PubKey.DSA: instance Data PrivateKey
- Crypto.PubKey.DSA: instance Data PublicKey
- Crypto.PubKey.DSA: instance Data Signature
- Crypto.PubKey.DSA: instance Eq KeyPair
- Crypto.PubKey.DSA: instance Eq Params
- Crypto.PubKey.DSA: instance Eq PrivateKey
- Crypto.PubKey.DSA: instance Eq PublicKey
- Crypto.PubKey.DSA: instance Eq Signature
- Crypto.PubKey.DSA: instance NFData KeyPair
- Crypto.PubKey.DSA: instance NFData Params
- Crypto.PubKey.DSA: instance NFData PrivateKey
- Crypto.PubKey.DSA: instance NFData PublicKey
- Crypto.PubKey.DSA: instance NFData Signature
- Crypto.PubKey.DSA: instance Read KeyPair
- Crypto.PubKey.DSA: instance Read Params
- Crypto.PubKey.DSA: instance Read PrivateKey
- Crypto.PubKey.DSA: instance Read PublicKey
- Crypto.PubKey.DSA: instance Read Signature
- Crypto.PubKey.DSA: instance Show KeyPair
- Crypto.PubKey.DSA: instance Show Params
- Crypto.PubKey.DSA: instance Show PrivateKey
- Crypto.PubKey.DSA: instance Show PublicKey
- Crypto.PubKey.DSA: instance Show Signature
- Crypto.PubKey.DSA: instance Typeable KeyPair
- Crypto.PubKey.DSA: instance Typeable Params
- Crypto.PubKey.DSA: instance Typeable PrivateKey
- Crypto.PubKey.DSA: instance Typeable PublicKey
- Crypto.PubKey.DSA: instance Typeable Signature
- Crypto.PubKey.DSA: params_g :: Params -> Integer
- Crypto.PubKey.DSA: params_p :: Params -> Integer
- Crypto.PubKey.DSA: params_q :: Params -> Integer
- Crypto.PubKey.DSA: private_params :: PrivateKey -> Params
- Crypto.PubKey.DSA: private_x :: PrivateKey -> PrivateNumber
- Crypto.PubKey.DSA: public_params :: PublicKey -> Params
- Crypto.PubKey.DSA: public_y :: PublicKey -> PublicNumber
- Crypto.PubKey.DSA: sign_r :: Signature -> Integer
- Crypto.PubKey.DSA: sign_s :: Signature -> Integer
- Crypto.PubKey.ECC.ECDSA: instance Data KeyPair
- Crypto.PubKey.ECC.ECDSA: instance Data PrivateKey
- Crypto.PubKey.ECC.ECDSA: instance Data PublicKey
- Crypto.PubKey.ECC.ECDSA: instance Data Signature
- Crypto.PubKey.ECC.ECDSA: instance Eq KeyPair
- Crypto.PubKey.ECC.ECDSA: instance Eq PrivateKey
- Crypto.PubKey.ECC.ECDSA: instance Eq PublicKey
- Crypto.PubKey.ECC.ECDSA: instance Eq Signature
- Crypto.PubKey.ECC.ECDSA: instance Read KeyPair
- Crypto.PubKey.ECC.ECDSA: instance Read PrivateKey
- Crypto.PubKey.ECC.ECDSA: instance Read PublicKey
- Crypto.PubKey.ECC.ECDSA: instance Read Signature
- Crypto.PubKey.ECC.ECDSA: instance Show KeyPair
- Crypto.PubKey.ECC.ECDSA: instance Show PrivateKey
- Crypto.PubKey.ECC.ECDSA: instance Show PublicKey
- Crypto.PubKey.ECC.ECDSA: instance Show Signature
- Crypto.PubKey.ECC.ECDSA: instance Typeable KeyPair
- Crypto.PubKey.ECC.ECDSA: instance Typeable PrivateKey
- Crypto.PubKey.ECC.ECDSA: instance Typeable PublicKey
- Crypto.PubKey.ECC.ECDSA: instance Typeable Signature
- Crypto.PubKey.ECC.ECDSA: private_curve :: PrivateKey -> Curve
- Crypto.PubKey.ECC.ECDSA: private_d :: PrivateKey -> PrivateNumber
- Crypto.PubKey.ECC.ECDSA: public_curve :: PublicKey -> Curve
- Crypto.PubKey.ECC.ECDSA: public_q :: PublicKey -> PublicPoint
- Crypto.PubKey.ECC.ECDSA: sign_r :: Signature -> Integer
- Crypto.PubKey.ECC.ECDSA: sign_s :: Signature -> Integer
- Crypto.PubKey.ECC.P256: instance ByteArrayAccess Scalar
- Crypto.PubKey.ECC.P256: instance Eq Point
- Crypto.PubKey.ECC.P256: instance Eq Scalar
- Crypto.PubKey.ECC.P256: instance Show Point
- Crypto.PubKey.ECC.Types: ecc_a :: CurveCommon -> Integer
- Crypto.PubKey.ECC.Types: ecc_b :: CurveCommon -> Integer
- Crypto.PubKey.ECC.Types: ecc_g :: CurveCommon -> Point
- Crypto.PubKey.ECC.Types: ecc_h :: CurveCommon -> Integer
- Crypto.PubKey.ECC.Types: ecc_n :: CurveCommon -> Integer
- Crypto.PubKey.ECC.Types: instance Data Curve
- Crypto.PubKey.ECC.Types: instance Data CurveBinary
- Crypto.PubKey.ECC.Types: instance Data CurveCommon
- Crypto.PubKey.ECC.Types: instance Data CurveName
- Crypto.PubKey.ECC.Types: instance Data CurvePrime
- Crypto.PubKey.ECC.Types: instance Data Point
- Crypto.PubKey.ECC.Types: instance Enum CurveName
- Crypto.PubKey.ECC.Types: instance Eq Curve
- Crypto.PubKey.ECC.Types: instance Eq CurveBinary
- Crypto.PubKey.ECC.Types: instance Eq CurveCommon
- Crypto.PubKey.ECC.Types: instance Eq CurveName
- Crypto.PubKey.ECC.Types: instance Eq CurvePrime
- Crypto.PubKey.ECC.Types: instance Eq Point
- Crypto.PubKey.ECC.Types: instance NFData CurveBinary
- Crypto.PubKey.ECC.Types: instance NFData Point
- Crypto.PubKey.ECC.Types: instance Ord CurveName
- Crypto.PubKey.ECC.Types: instance Read Curve
- Crypto.PubKey.ECC.Types: instance Read CurveBinary
- Crypto.PubKey.ECC.Types: instance Read CurveCommon
- Crypto.PubKey.ECC.Types: instance Read CurveName
- Crypto.PubKey.ECC.Types: instance Read CurvePrime
- Crypto.PubKey.ECC.Types: instance Read Point
- Crypto.PubKey.ECC.Types: instance Show Curve
- Crypto.PubKey.ECC.Types: instance Show CurveBinary
- Crypto.PubKey.ECC.Types: instance Show CurveCommon
- Crypto.PubKey.ECC.Types: instance Show CurveName
- Crypto.PubKey.ECC.Types: instance Show CurvePrime
- Crypto.PubKey.ECC.Types: instance Show Point
- Crypto.PubKey.ECC.Types: instance Typeable Curve
- Crypto.PubKey.ECC.Types: instance Typeable CurveBinary
- Crypto.PubKey.ECC.Types: instance Typeable CurveCommon
- Crypto.PubKey.ECC.Types: instance Typeable CurveName
- Crypto.PubKey.ECC.Types: instance Typeable CurvePrime
- Crypto.PubKey.ECC.Types: instance Typeable Point
- Crypto.PubKey.Ed25519: instance ByteArrayAccess PublicKey
- Crypto.PubKey.Ed25519: instance ByteArrayAccess SecretKey
- Crypto.PubKey.Ed25519: instance ByteArrayAccess Signature
- Crypto.PubKey.Ed25519: instance Eq PublicKey
- Crypto.PubKey.Ed25519: instance Eq SecretKey
- Crypto.PubKey.Ed25519: instance Eq Signature
- Crypto.PubKey.Ed25519: instance NFData PublicKey
- Crypto.PubKey.Ed25519: instance NFData SecretKey
- Crypto.PubKey.Ed25519: instance NFData Signature
- Crypto.PubKey.Ed25519: instance Show PublicKey
- Crypto.PubKey.Ed25519: instance Show Signature
- Crypto.PubKey.RSA: private_d :: PrivateKey -> Integer
- Crypto.PubKey.RSA: private_dP :: PrivateKey -> Integer
- Crypto.PubKey.RSA: private_dQ :: PrivateKey -> Integer
- Crypto.PubKey.RSA: private_p :: PrivateKey -> Integer
- Crypto.PubKey.RSA: private_pub :: PrivateKey -> PublicKey
- Crypto.PubKey.RSA: private_q :: PrivateKey -> Integer
- Crypto.PubKey.RSA: private_qinv :: PrivateKey -> Integer
- Crypto.PubKey.RSA: public_e :: PublicKey -> Integer
- Crypto.PubKey.RSA: public_n :: PublicKey -> Integer
- Crypto.PubKey.RSA: public_size :: PublicKey -> Int
- Crypto.PubKey.RSA.OAEP: oaepHash :: OAEPParams hash seed output -> hash
- Crypto.PubKey.RSA.OAEP: oaepLabel :: OAEPParams hash seed output -> Maybe ByteString
- Crypto.PubKey.RSA.OAEP: oaepMaskGenAlg :: OAEPParams hash seed output -> MaskGenAlgorithm seed output
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 MD2
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 MD5
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 RIPEMD160
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 SHA1
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 SHA224
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 SHA256
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 SHA384
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 SHA512
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 SHA512t_224
- Crypto.PubKey.RSA.PKCS15: instance HashAlgorithmASN1 SHA512t_256
- Crypto.PubKey.RSA.PSS: pssHash :: PSSParams hash seed output -> hash
- Crypto.PubKey.RSA.PSS: pssMaskGenAlg :: PSSParams hash seed output -> MaskGenAlgorithm seed output
- Crypto.PubKey.RSA.PSS: pssSaltLength :: PSSParams hash seed output -> Int
- Crypto.PubKey.RSA.PSS: pssTrailerField :: PSSParams hash seed output -> Word8
- Crypto.PubKey.RSA.Types: instance Data KeyPair
- Crypto.PubKey.RSA.Types: instance Data PrivateKey
- Crypto.PubKey.RSA.Types: instance Data PublicKey
- Crypto.PubKey.RSA.Types: instance Eq Blinder
- Crypto.PubKey.RSA.Types: instance Eq Error
- Crypto.PubKey.RSA.Types: instance Eq KeyPair
- Crypto.PubKey.RSA.Types: instance Eq PrivateKey
- Crypto.PubKey.RSA.Types: instance Eq PublicKey
- Crypto.PubKey.RSA.Types: instance NFData KeyPair
- Crypto.PubKey.RSA.Types: instance NFData PrivateKey
- Crypto.PubKey.RSA.Types: instance NFData PublicKey
- Crypto.PubKey.RSA.Types: instance Read KeyPair
- Crypto.PubKey.RSA.Types: instance Read PrivateKey
- Crypto.PubKey.RSA.Types: instance Read PublicKey
- Crypto.PubKey.RSA.Types: instance Show Blinder
- Crypto.PubKey.RSA.Types: instance Show Error
- Crypto.PubKey.RSA.Types: instance Show KeyPair
- Crypto.PubKey.RSA.Types: instance Show PrivateKey
- Crypto.PubKey.RSA.Types: instance Show PublicKey
- Crypto.PubKey.RSA.Types: instance Typeable KeyPair
- Crypto.PubKey.RSA.Types: instance Typeable PrivateKey
- Crypto.PubKey.RSA.Types: instance Typeable PublicKey
- Crypto.PubKey.RSA.Types: private_d :: PrivateKey -> Integer
- Crypto.PubKey.RSA.Types: private_dP :: PrivateKey -> Integer
- Crypto.PubKey.RSA.Types: private_dQ :: PrivateKey -> Integer
- Crypto.PubKey.RSA.Types: private_p :: PrivateKey -> Integer
- Crypto.PubKey.RSA.Types: private_pub :: PrivateKey -> PublicKey
- Crypto.PubKey.RSA.Types: private_q :: PrivateKey -> Integer
- Crypto.PubKey.RSA.Types: private_qinv :: PrivateKey -> Integer
- Crypto.PubKey.RSA.Types: public_e :: PublicKey -> Integer
- Crypto.PubKey.RSA.Types: public_n :: PublicKey -> Integer
- Crypto.PubKey.RSA.Types: public_size :: PublicKey -> Int
- Crypto.Random.Types: instance DRG gen => Applicative (MonadPseudoRandom gen)
- Crypto.Random.Types: instance DRG gen => Functor (MonadPseudoRandom gen)
- Crypto.Random.Types: instance DRG gen => Monad (MonadPseudoRandom gen)
- Crypto.Random.Types: instance DRG gen => MonadRandom (MonadPseudoRandom gen)
- Crypto.Random.Types: instance MonadRandom IO
+ Crypto.Cipher.AES: instance Control.DeepSeq.NFData Crypto.Cipher.AES.AES128
+ Crypto.Cipher.AES: instance Control.DeepSeq.NFData Crypto.Cipher.AES.AES192
+ Crypto.Cipher.AES: instance Control.DeepSeq.NFData Crypto.Cipher.AES.AES256
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.AES.AES128
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.AES.AES192
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.AES.AES256
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.AES.AES128
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.AES.AES192
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.AES.AES256
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Block.BlockCipher128 Crypto.Cipher.AES.AES128
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Block.BlockCipher128 Crypto.Cipher.AES.AES192
+ Crypto.Cipher.AES: instance Crypto.Cipher.Types.Block.BlockCipher128 Crypto.Cipher.AES.AES256
+ Crypto.Cipher.Blowfish: instance Control.DeepSeq.NFData Crypto.Cipher.Blowfish.Blowfish
+ Crypto.Cipher.Blowfish: instance Control.DeepSeq.NFData Crypto.Cipher.Blowfish.Blowfish128
+ Crypto.Cipher.Blowfish: instance Control.DeepSeq.NFData Crypto.Cipher.Blowfish.Blowfish256
+ Crypto.Cipher.Blowfish: instance Control.DeepSeq.NFData Crypto.Cipher.Blowfish.Blowfish448
+ Crypto.Cipher.Blowfish: instance Control.DeepSeq.NFData Crypto.Cipher.Blowfish.Blowfish64
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.Blowfish.Blowfish
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.Blowfish.Blowfish128
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.Blowfish.Blowfish256
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.Blowfish.Blowfish448
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.Blowfish.Blowfish64
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.Blowfish.Blowfish
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.Blowfish.Blowfish128
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.Blowfish.Blowfish256
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.Blowfish.Blowfish448
+ Crypto.Cipher.Blowfish: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.Blowfish.Blowfish64
+ Crypto.Cipher.Camellia: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.Camellia.Camellia128
+ Crypto.Cipher.Camellia: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.Camellia.Camellia128
+ Crypto.Cipher.ChaCha: instance Control.DeepSeq.NFData Crypto.Cipher.ChaCha.State
+ Crypto.Cipher.ChaCha: instance Control.DeepSeq.NFData Crypto.Cipher.ChaCha.StateSimple
+ Crypto.Cipher.ChaChaPoly1305: appendAAD :: ByteArrayAccess ba => ba -> State -> State
+ Crypto.Cipher.ChaChaPoly1305: combine :: ByteArray ba => ba -> State -> (ba, State)
+ Crypto.Cipher.ChaChaPoly1305: data Nonce
+ Crypto.Cipher.ChaChaPoly1305: data State
+ Crypto.Cipher.ChaChaPoly1305: finalize :: State -> Auth
+ Crypto.Cipher.ChaChaPoly1305: finalizeAAD :: State -> State
+ Crypto.Cipher.ChaChaPoly1305: initialize :: ByteArrayAccess key => key -> Nonce -> CryptoFailable State
+ Crypto.Cipher.ChaChaPoly1305: nonce12 :: ByteArrayAccess iv => iv -> CryptoFailable Nonce
+ Crypto.Cipher.ChaChaPoly1305: nonce8 :: ByteArrayAccess ba => ba -> ba -> CryptoFailable Nonce
+ Crypto.Cipher.DES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.DES.DES
+ Crypto.Cipher.DES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.DES.DES
+ Crypto.Cipher.DES: instance GHC.Classes.Eq Crypto.Cipher.DES.DES
+ Crypto.Cipher.RC4: instance Control.DeepSeq.NFData Crypto.Cipher.RC4.State
+ Crypto.Cipher.RC4: instance Data.ByteArray.Types.ByteArrayAccess Crypto.Cipher.RC4.State
+ Crypto.Cipher.Salsa: instance Control.DeepSeq.NFData Crypto.Cipher.Salsa.State
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.TripleDES.DES_EDE2
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.TripleDES.DES_EDE3
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.TripleDES.DES_EEE2
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Base.Cipher Crypto.Cipher.TripleDES.DES_EEE3
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.TripleDES.DES_EDE2
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.TripleDES.DES_EDE3
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.TripleDES.DES_EEE2
+ Crypto.Cipher.TripleDES: instance Crypto.Cipher.Types.Block.BlockCipher Crypto.Cipher.TripleDES.DES_EEE3
+ Crypto.Cipher.TripleDES: instance GHC.Classes.Eq Crypto.Cipher.TripleDES.DES_EDE2
+ Crypto.Cipher.TripleDES: instance GHC.Classes.Eq Crypto.Cipher.TripleDES.DES_EDE3
+ Crypto.Cipher.TripleDES: instance GHC.Classes.Eq Crypto.Cipher.TripleDES.DES_EEE2
+ Crypto.Cipher.TripleDES: instance GHC.Classes.Eq Crypto.Cipher.TripleDES.DES_EEE3
+ Crypto.Cipher.Types: [aeadImplAppendHeader] :: AEADModeImpl st -> forall ba. ByteArrayAccess ba => st -> ba -> st
+ Crypto.Cipher.Types: [aeadImplDecrypt] :: AEADModeImpl st -> forall ba. ByteArray ba => st -> ba -> (ba, st)
+ Crypto.Cipher.Types: [aeadImplEncrypt] :: AEADModeImpl st -> forall ba. ByteArray ba => st -> ba -> (ba, st)
+ Crypto.Cipher.Types: [aeadImplFinalize] :: AEADModeImpl st -> st -> Int -> AuthTag
+ Crypto.Cipher.Types: [aeadModeImpl] :: AEAD cipher -> AEADModeImpl st
+ Crypto.Cipher.Types: [aeadState] :: AEAD cipher -> st
+ Crypto.Cipher.Types: [unAuthTag] :: AuthTag -> Bytes
+ Crypto.Hash.IO: instance Data.ByteArray.Types.ByteArrayAccess (Crypto.Hash.IO.MutableContext a)
+ Crypto.KDF.PBKDF2: [iterCounts] :: Parameters -> Int
+ Crypto.KDF.PBKDF2: [outputLength] :: Parameters -> Int
+ Crypto.KDF.Scrypt: [n] :: Parameters -> Word64
+ Crypto.KDF.Scrypt: [outputLength] :: Parameters -> Int
+ Crypto.KDF.Scrypt: [p] :: Parameters -> Int
+ Crypto.KDF.Scrypt: [r] :: Parameters -> Int
+ Crypto.MAC.HMAC: [hmacGetDigest] :: HMAC a -> Digest a
+ Crypto.MAC.HMAC: instance Data.ByteArray.Types.ByteArrayAccess (Crypto.MAC.HMAC.HMAC a)
+ Crypto.MAC.HMAC: instance GHC.Classes.Eq (Crypto.MAC.HMAC.HMAC a)
+ Crypto.MAC.Poly1305: data State
+ Crypto.MAC.Poly1305: instance Data.ByteArray.Types.ByteArrayAccess Crypto.MAC.Poly1305.Auth
+ Crypto.MAC.Poly1305: instance Data.ByteArray.Types.ByteArrayAccess Crypto.MAC.Poly1305.State
+ Crypto.MAC.Poly1305: instance GHC.Classes.Eq Crypto.MAC.Poly1305.Auth
+ Crypto.MAC.Poly1305: type Ctx = State
+ Crypto.Number.Generate: instance GHC.Classes.Eq Crypto.Number.Generate.GenTopPolicy
+ Crypto.Number.Generate: instance GHC.Show.Show Crypto.Number.Generate.GenTopPolicy
+ Crypto.Number.ModArithmetic: instance GHC.Exception.Exception Crypto.Number.ModArithmetic.CoprimesAssertionError
+ Crypto.Number.ModArithmetic: instance GHC.Show.Show Crypto.Number.ModArithmetic.CoprimesAssertionError
+ Crypto.PubKey.Curve25519: instance Control.DeepSeq.NFData Crypto.PubKey.Curve25519.DhSecret
+ Crypto.PubKey.Curve25519: instance Control.DeepSeq.NFData Crypto.PubKey.Curve25519.PublicKey
+ Crypto.PubKey.Curve25519: instance Control.DeepSeq.NFData Crypto.PubKey.Curve25519.SecretKey
+ Crypto.PubKey.Curve25519: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Curve25519.DhSecret
+ Crypto.PubKey.Curve25519: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Curve25519.PublicKey
+ Crypto.PubKey.Curve25519: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Curve25519.SecretKey
+ Crypto.PubKey.Curve25519: instance GHC.Classes.Eq Crypto.PubKey.Curve25519.DhSecret
+ Crypto.PubKey.Curve25519: instance GHC.Classes.Eq Crypto.PubKey.Curve25519.PublicKey
+ Crypto.PubKey.Curve25519: instance GHC.Classes.Eq Crypto.PubKey.Curve25519.SecretKey
+ Crypto.PubKey.Curve25519: instance GHC.Show.Show Crypto.PubKey.Curve25519.DhSecret
+ Crypto.PubKey.Curve25519: instance GHC.Show.Show Crypto.PubKey.Curve25519.PublicKey
+ Crypto.PubKey.Curve25519: instance GHC.Show.Show Crypto.PubKey.Curve25519.SecretKey
+ Crypto.PubKey.DH: [params_g] :: Params -> Integer
+ Crypto.PubKey.DH: [params_p] :: Params -> Integer
+ Crypto.PubKey.DH: instance Data.Data.Data Crypto.PubKey.DH.Params
+ Crypto.PubKey.DH: instance GHC.Classes.Eq Crypto.PubKey.DH.Params
+ Crypto.PubKey.DH: instance GHC.Classes.Eq Crypto.PubKey.DH.PrivateNumber
+ Crypto.PubKey.DH: instance GHC.Classes.Eq Crypto.PubKey.DH.PublicNumber
+ Crypto.PubKey.DH: instance GHC.Classes.Eq Crypto.PubKey.DH.SharedKey
+ Crypto.PubKey.DH: instance GHC.Classes.Ord Crypto.PubKey.DH.PrivateNumber
+ Crypto.PubKey.DH: instance GHC.Classes.Ord Crypto.PubKey.DH.PublicNumber
+ Crypto.PubKey.DH: instance GHC.Classes.Ord Crypto.PubKey.DH.SharedKey
+ Crypto.PubKey.DH: instance GHC.Enum.Enum Crypto.PubKey.DH.PrivateNumber
+ Crypto.PubKey.DH: instance GHC.Enum.Enum Crypto.PubKey.DH.PublicNumber
+ Crypto.PubKey.DH: instance GHC.Enum.Enum Crypto.PubKey.DH.SharedKey
+ Crypto.PubKey.DH: instance GHC.Num.Num Crypto.PubKey.DH.PrivateNumber
+ Crypto.PubKey.DH: instance GHC.Num.Num Crypto.PubKey.DH.PublicNumber
+ Crypto.PubKey.DH: instance GHC.Num.Num Crypto.PubKey.DH.SharedKey
+ Crypto.PubKey.DH: instance GHC.Read.Read Crypto.PubKey.DH.Params
+ Crypto.PubKey.DH: instance GHC.Read.Read Crypto.PubKey.DH.PrivateNumber
+ Crypto.PubKey.DH: instance GHC.Read.Read Crypto.PubKey.DH.PublicNumber
+ Crypto.PubKey.DH: instance GHC.Read.Read Crypto.PubKey.DH.SharedKey
+ Crypto.PubKey.DH: instance GHC.Real.Real Crypto.PubKey.DH.PrivateNumber
+ Crypto.PubKey.DH: instance GHC.Real.Real Crypto.PubKey.DH.PublicNumber
+ Crypto.PubKey.DH: instance GHC.Real.Real Crypto.PubKey.DH.SharedKey
+ Crypto.PubKey.DH: instance GHC.Show.Show Crypto.PubKey.DH.Params
+ Crypto.PubKey.DH: instance GHC.Show.Show Crypto.PubKey.DH.PrivateNumber
+ Crypto.PubKey.DH: instance GHC.Show.Show Crypto.PubKey.DH.PublicNumber
+ Crypto.PubKey.DH: instance GHC.Show.Show Crypto.PubKey.DH.SharedKey
+ Crypto.PubKey.DSA: [params_g] :: Params -> Integer
+ Crypto.PubKey.DSA: [params_p] :: Params -> Integer
+ Crypto.PubKey.DSA: [params_q] :: Params -> Integer
+ Crypto.PubKey.DSA: [private_params] :: PrivateKey -> Params
+ Crypto.PubKey.DSA: [private_x] :: PrivateKey -> PrivateNumber
+ Crypto.PubKey.DSA: [public_params] :: PublicKey -> Params
+ Crypto.PubKey.DSA: [public_y] :: PublicKey -> PublicNumber
+ Crypto.PubKey.DSA: [sign_r] :: Signature -> Integer
+ Crypto.PubKey.DSA: [sign_s] :: Signature -> Integer
+ Crypto.PubKey.DSA: instance Control.DeepSeq.NFData Crypto.PubKey.DSA.KeyPair
+ Crypto.PubKey.DSA: instance Control.DeepSeq.NFData Crypto.PubKey.DSA.Params
+ Crypto.PubKey.DSA: instance Control.DeepSeq.NFData Crypto.PubKey.DSA.PrivateKey
+ Crypto.PubKey.DSA: instance Control.DeepSeq.NFData Crypto.PubKey.DSA.PublicKey
+ Crypto.PubKey.DSA: instance Control.DeepSeq.NFData Crypto.PubKey.DSA.Signature
+ Crypto.PubKey.DSA: instance Data.Data.Data Crypto.PubKey.DSA.KeyPair
+ Crypto.PubKey.DSA: instance Data.Data.Data Crypto.PubKey.DSA.Params
+ Crypto.PubKey.DSA: instance Data.Data.Data Crypto.PubKey.DSA.PrivateKey
+ Crypto.PubKey.DSA: instance Data.Data.Data Crypto.PubKey.DSA.PublicKey
+ Crypto.PubKey.DSA: instance Data.Data.Data Crypto.PubKey.DSA.Signature
+ Crypto.PubKey.DSA: instance GHC.Classes.Eq Crypto.PubKey.DSA.KeyPair
+ Crypto.PubKey.DSA: instance GHC.Classes.Eq Crypto.PubKey.DSA.Params
+ Crypto.PubKey.DSA: instance GHC.Classes.Eq Crypto.PubKey.DSA.PrivateKey
+ Crypto.PubKey.DSA: instance GHC.Classes.Eq Crypto.PubKey.DSA.PublicKey
+ Crypto.PubKey.DSA: instance GHC.Classes.Eq Crypto.PubKey.DSA.Signature
+ Crypto.PubKey.DSA: instance GHC.Read.Read Crypto.PubKey.DSA.KeyPair
+ Crypto.PubKey.DSA: instance GHC.Read.Read Crypto.PubKey.DSA.Params
+ Crypto.PubKey.DSA: instance GHC.Read.Read Crypto.PubKey.DSA.PrivateKey
+ Crypto.PubKey.DSA: instance GHC.Read.Read Crypto.PubKey.DSA.PublicKey
+ Crypto.PubKey.DSA: instance GHC.Read.Read Crypto.PubKey.DSA.Signature
+ Crypto.PubKey.DSA: instance GHC.Show.Show Crypto.PubKey.DSA.KeyPair
+ Crypto.PubKey.DSA: instance GHC.Show.Show Crypto.PubKey.DSA.Params
+ Crypto.PubKey.DSA: instance GHC.Show.Show Crypto.PubKey.DSA.PrivateKey
+ Crypto.PubKey.DSA: instance GHC.Show.Show Crypto.PubKey.DSA.PublicKey
+ Crypto.PubKey.DSA: instance GHC.Show.Show Crypto.PubKey.DSA.Signature
+ Crypto.PubKey.ECC.ECDSA: [private_curve] :: PrivateKey -> Curve
+ Crypto.PubKey.ECC.ECDSA: [private_d] :: PrivateKey -> PrivateNumber
+ Crypto.PubKey.ECC.ECDSA: [public_curve] :: PublicKey -> Curve
+ Crypto.PubKey.ECC.ECDSA: [public_q] :: PublicKey -> PublicPoint
+ Crypto.PubKey.ECC.ECDSA: [sign_r] :: Signature -> Integer
+ Crypto.PubKey.ECC.ECDSA: [sign_s] :: Signature -> Integer
+ Crypto.PubKey.ECC.ECDSA: instance Data.Data.Data Crypto.PubKey.ECC.ECDSA.KeyPair
+ Crypto.PubKey.ECC.ECDSA: instance Data.Data.Data Crypto.PubKey.ECC.ECDSA.PrivateKey
+ Crypto.PubKey.ECC.ECDSA: instance Data.Data.Data Crypto.PubKey.ECC.ECDSA.PublicKey
+ Crypto.PubKey.ECC.ECDSA: instance Data.Data.Data Crypto.PubKey.ECC.ECDSA.Signature
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Classes.Eq Crypto.PubKey.ECC.ECDSA.KeyPair
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Classes.Eq Crypto.PubKey.ECC.ECDSA.PrivateKey
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Classes.Eq Crypto.PubKey.ECC.ECDSA.PublicKey
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Classes.Eq Crypto.PubKey.ECC.ECDSA.Signature
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Read.Read Crypto.PubKey.ECC.ECDSA.KeyPair
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Read.Read Crypto.PubKey.ECC.ECDSA.PrivateKey
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Read.Read Crypto.PubKey.ECC.ECDSA.PublicKey
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Read.Read Crypto.PubKey.ECC.ECDSA.Signature
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Show.Show Crypto.PubKey.ECC.ECDSA.KeyPair
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Show.Show Crypto.PubKey.ECC.ECDSA.PrivateKey
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Show.Show Crypto.PubKey.ECC.ECDSA.PublicKey
+ Crypto.PubKey.ECC.ECDSA: instance GHC.Show.Show Crypto.PubKey.ECC.ECDSA.Signature
+ Crypto.PubKey.ECC.P256: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.ECC.P256.Scalar
+ Crypto.PubKey.ECC.P256: instance GHC.Classes.Eq Crypto.PubKey.ECC.P256.Point
+ Crypto.PubKey.ECC.P256: instance GHC.Classes.Eq Crypto.PubKey.ECC.P256.Scalar
+ Crypto.PubKey.ECC.P256: instance GHC.Show.Show Crypto.PubKey.ECC.P256.Point
+ Crypto.PubKey.ECC.Types: [ecc_a] :: CurveCommon -> Integer
+ Crypto.PubKey.ECC.Types: [ecc_b] :: CurveCommon -> Integer
+ Crypto.PubKey.ECC.Types: [ecc_g] :: CurveCommon -> Point
+ Crypto.PubKey.ECC.Types: [ecc_h] :: CurveCommon -> Integer
+ Crypto.PubKey.ECC.Types: [ecc_n] :: CurveCommon -> Integer
+ Crypto.PubKey.ECC.Types: instance Control.DeepSeq.NFData Crypto.PubKey.ECC.Types.CurveBinary
+ Crypto.PubKey.ECC.Types: instance Control.DeepSeq.NFData Crypto.PubKey.ECC.Types.Point
+ Crypto.PubKey.ECC.Types: instance Data.Data.Data Crypto.PubKey.ECC.Types.Curve
+ Crypto.PubKey.ECC.Types: instance Data.Data.Data Crypto.PubKey.ECC.Types.CurveBinary
+ Crypto.PubKey.ECC.Types: instance Data.Data.Data Crypto.PubKey.ECC.Types.CurveCommon
+ Crypto.PubKey.ECC.Types: instance Data.Data.Data Crypto.PubKey.ECC.Types.CurveName
+ Crypto.PubKey.ECC.Types: instance Data.Data.Data Crypto.PubKey.ECC.Types.CurvePrime
+ Crypto.PubKey.ECC.Types: instance Data.Data.Data Crypto.PubKey.ECC.Types.Point
+ Crypto.PubKey.ECC.Types: instance GHC.Classes.Eq Crypto.PubKey.ECC.Types.Curve
+ Crypto.PubKey.ECC.Types: instance GHC.Classes.Eq Crypto.PubKey.ECC.Types.CurveBinary
+ Crypto.PubKey.ECC.Types: instance GHC.Classes.Eq Crypto.PubKey.ECC.Types.CurveCommon
+ Crypto.PubKey.ECC.Types: instance GHC.Classes.Eq Crypto.PubKey.ECC.Types.CurveName
+ Crypto.PubKey.ECC.Types: instance GHC.Classes.Eq Crypto.PubKey.ECC.Types.CurvePrime
+ Crypto.PubKey.ECC.Types: instance GHC.Classes.Eq Crypto.PubKey.ECC.Types.Point
+ Crypto.PubKey.ECC.Types: instance GHC.Classes.Ord Crypto.PubKey.ECC.Types.CurveName
+ Crypto.PubKey.ECC.Types: instance GHC.Enum.Enum Crypto.PubKey.ECC.Types.CurveName
+ Crypto.PubKey.ECC.Types: instance GHC.Read.Read Crypto.PubKey.ECC.Types.Curve
+ Crypto.PubKey.ECC.Types: instance GHC.Read.Read Crypto.PubKey.ECC.Types.CurveBinary
+ Crypto.PubKey.ECC.Types: instance GHC.Read.Read Crypto.PubKey.ECC.Types.CurveCommon
+ Crypto.PubKey.ECC.Types: instance GHC.Read.Read Crypto.PubKey.ECC.Types.CurveName
+ Crypto.PubKey.ECC.Types: instance GHC.Read.Read Crypto.PubKey.ECC.Types.CurvePrime
+ Crypto.PubKey.ECC.Types: instance GHC.Read.Read Crypto.PubKey.ECC.Types.Point
+ Crypto.PubKey.ECC.Types: instance GHC.Show.Show Crypto.PubKey.ECC.Types.Curve
+ Crypto.PubKey.ECC.Types: instance GHC.Show.Show Crypto.PubKey.ECC.Types.CurveBinary
+ Crypto.PubKey.ECC.Types: instance GHC.Show.Show Crypto.PubKey.ECC.Types.CurveCommon
+ Crypto.PubKey.ECC.Types: instance GHC.Show.Show Crypto.PubKey.ECC.Types.CurveName
+ Crypto.PubKey.ECC.Types: instance GHC.Show.Show Crypto.PubKey.ECC.Types.CurvePrime
+ Crypto.PubKey.ECC.Types: instance GHC.Show.Show Crypto.PubKey.ECC.Types.Point
+ Crypto.PubKey.Ed25519: instance Control.DeepSeq.NFData Crypto.PubKey.Ed25519.PublicKey
+ Crypto.PubKey.Ed25519: instance Control.DeepSeq.NFData Crypto.PubKey.Ed25519.SecretKey
+ Crypto.PubKey.Ed25519: instance Control.DeepSeq.NFData Crypto.PubKey.Ed25519.Signature
+ Crypto.PubKey.Ed25519: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Ed25519.PublicKey
+ Crypto.PubKey.Ed25519: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Ed25519.SecretKey
+ Crypto.PubKey.Ed25519: instance Data.ByteArray.Types.ByteArrayAccess Crypto.PubKey.Ed25519.Signature
+ Crypto.PubKey.Ed25519: instance GHC.Classes.Eq Crypto.PubKey.Ed25519.PublicKey
+ Crypto.PubKey.Ed25519: instance GHC.Classes.Eq Crypto.PubKey.Ed25519.SecretKey
+ Crypto.PubKey.Ed25519: instance GHC.Classes.Eq Crypto.PubKey.Ed25519.Signature
+ Crypto.PubKey.Ed25519: instance GHC.Show.Show Crypto.PubKey.Ed25519.PublicKey
+ Crypto.PubKey.Ed25519: instance GHC.Show.Show Crypto.PubKey.Ed25519.Signature
+ Crypto.PubKey.RSA: [private_dP] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA: [private_dQ] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA: [private_d] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA: [private_p] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA: [private_pub] :: PrivateKey -> PublicKey
+ Crypto.PubKey.RSA: [private_q] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA: [private_qinv] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA: [public_e] :: PublicKey -> Integer
+ Crypto.PubKey.RSA: [public_n] :: PublicKey -> Integer
+ Crypto.PubKey.RSA: [public_size] :: PublicKey -> Int
+ Crypto.PubKey.RSA.OAEP: [oaepHash] :: OAEPParams hash seed output -> hash
+ Crypto.PubKey.RSA.OAEP: [oaepLabel] :: OAEPParams hash seed output -> Maybe ByteString
+ Crypto.PubKey.RSA.OAEP: [oaepMaskGenAlg] :: OAEPParams hash seed output -> MaskGenAlgorithm seed output
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.MD2.MD2
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.MD5.MD5
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.RIPEMD160.RIPEMD160
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.SHA1.SHA1
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.SHA224.SHA224
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.SHA256.SHA256
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.SHA384.SHA384
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.SHA512.SHA512
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.SHA512t.SHA512t_224
+ Crypto.PubKey.RSA.PKCS15: instance Crypto.PubKey.RSA.PKCS15.HashAlgorithmASN1 Crypto.Hash.SHA512t.SHA512t_256
+ Crypto.PubKey.RSA.PSS: [pssHash] :: PSSParams hash seed output -> hash
+ Crypto.PubKey.RSA.PSS: [pssMaskGenAlg] :: PSSParams hash seed output -> MaskGenAlgorithm seed output
+ Crypto.PubKey.RSA.PSS: [pssSaltLength] :: PSSParams hash seed output -> Int
+ Crypto.PubKey.RSA.PSS: [pssTrailerField] :: PSSParams hash seed output -> Word8
+ Crypto.PubKey.RSA.Types: [private_dP] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA.Types: [private_dQ] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA.Types: [private_d] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA.Types: [private_p] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA.Types: [private_pub] :: PrivateKey -> PublicKey
+ Crypto.PubKey.RSA.Types: [private_q] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA.Types: [private_qinv] :: PrivateKey -> Integer
+ Crypto.PubKey.RSA.Types: [public_e] :: PublicKey -> Integer
+ Crypto.PubKey.RSA.Types: [public_n] :: PublicKey -> Integer
+ Crypto.PubKey.RSA.Types: [public_size] :: PublicKey -> Int
+ Crypto.PubKey.RSA.Types: instance Control.DeepSeq.NFData Crypto.PubKey.RSA.Types.KeyPair
+ Crypto.PubKey.RSA.Types: instance Control.DeepSeq.NFData Crypto.PubKey.RSA.Types.PrivateKey
+ Crypto.PubKey.RSA.Types: instance Control.DeepSeq.NFData Crypto.PubKey.RSA.Types.PublicKey
+ Crypto.PubKey.RSA.Types: instance Data.Data.Data Crypto.PubKey.RSA.Types.KeyPair
+ Crypto.PubKey.RSA.Types: instance Data.Data.Data Crypto.PubKey.RSA.Types.PrivateKey
+ Crypto.PubKey.RSA.Types: instance Data.Data.Data Crypto.PubKey.RSA.Types.PublicKey
+ Crypto.PubKey.RSA.Types: instance GHC.Classes.Eq Crypto.PubKey.RSA.Types.Blinder
+ Crypto.PubKey.RSA.Types: instance GHC.Classes.Eq Crypto.PubKey.RSA.Types.Error
+ Crypto.PubKey.RSA.Types: instance GHC.Classes.Eq Crypto.PubKey.RSA.Types.KeyPair
+ Crypto.PubKey.RSA.Types: instance GHC.Classes.Eq Crypto.PubKey.RSA.Types.PrivateKey
+ Crypto.PubKey.RSA.Types: instance GHC.Classes.Eq Crypto.PubKey.RSA.Types.PublicKey
+ Crypto.PubKey.RSA.Types: instance GHC.Read.Read Crypto.PubKey.RSA.Types.KeyPair
+ Crypto.PubKey.RSA.Types: instance GHC.Read.Read Crypto.PubKey.RSA.Types.PrivateKey
+ Crypto.PubKey.RSA.Types: instance GHC.Read.Read Crypto.PubKey.RSA.Types.PublicKey
+ Crypto.PubKey.RSA.Types: instance GHC.Show.Show Crypto.PubKey.RSA.Types.Blinder
+ Crypto.PubKey.RSA.Types: instance GHC.Show.Show Crypto.PubKey.RSA.Types.Error
+ Crypto.PubKey.RSA.Types: instance GHC.Show.Show Crypto.PubKey.RSA.Types.KeyPair
+ Crypto.PubKey.RSA.Types: instance GHC.Show.Show Crypto.PubKey.RSA.Types.PrivateKey
+ Crypto.PubKey.RSA.Types: instance GHC.Show.Show Crypto.PubKey.RSA.Types.PublicKey
+ Crypto.Random.Types: instance Crypto.Random.Types.DRG gen => Crypto.Random.Types.MonadRandom (Crypto.Random.Types.MonadPseudoRandom gen)
+ Crypto.Random.Types: instance Crypto.Random.Types.DRG gen => GHC.Base.Applicative (Crypto.Random.Types.MonadPseudoRandom gen)
+ Crypto.Random.Types: instance Crypto.Random.Types.DRG gen => GHC.Base.Functor (Crypto.Random.Types.MonadPseudoRandom gen)
+ Crypto.Random.Types: instance Crypto.Random.Types.DRG gen => GHC.Base.Monad (Crypto.Random.Types.MonadPseudoRandom gen)
+ Crypto.Random.Types: instance Crypto.Random.Types.MonadRandom GHC.Types.IO
- Crypto.KDF.PBKDF2: type PRF password = password -> Bytes -> Bytes
+ Crypto.KDF.PBKDF2: type PRF password = password the password parameters -> Bytes the content -> Bytes prf(password,content)
- Crypto.MAC.Poly1305: finalize :: Ctx -> Auth
+ Crypto.MAC.Poly1305: finalize :: State -> Auth
- Crypto.MAC.Poly1305: initialize :: ByteArrayAccess key => key -> Ctx
+ Crypto.MAC.Poly1305: initialize :: ByteArrayAccess key => key -> State
- Crypto.MAC.Poly1305: update :: ByteArrayAccess ba => Ctx -> ba -> Ctx
+ Crypto.MAC.Poly1305: update :: ByteArrayAccess ba => State -> ba -> State
- Crypto.MAC.Poly1305: updates :: ByteArrayAccess ba => Ctx -> [ba] -> Ctx
+ Crypto.MAC.Poly1305: updates :: ByteArrayAccess ba => State -> [ba] -> State
- Crypto.PubKey.MaskGenFunction: type MaskGenAlgorithm seed output = seed -> Int -> output
+ Crypto.PubKey.MaskGenFunction: type MaskGenAlgorithm seed output = seed seed -> Int length to generate -> output

Files

CHANGELOG.md view
@@ -1,3 +1,9 @@+## 0.6++* Add ChaChaPoly1305 AE cipher+* Add instructions in README for building on old OSX+* Fix blocking /dev/random Andrey Sverdlichenko+ ## 0.5  * Fix all strays exports to all be under the cryptonite prefix.
Crypto/Cipher/AES.hs view
@@ -1,4 +1,4 @@-    -- |+-- | -- Module      : Crypto.Cipher.AES -- License     : BSD-style -- Maintainer  : Vincent Hanquez <vincent@snarc.org>
+ Crypto/Cipher/ChaChaPoly1305.hs view
@@ -0,0 +1,112 @@+-- |+-- Module      : Crypto.Cipher.ChaChaPoly1305+-- License     : BSD-style+-- Maintainer  : Vincent Hanquez <vincent@snarc.org>+-- Stability   : stable+-- Portability : good+--+-- A simple AEAD scheme using ChaCha20 and Poly1305.+-- +-- See RFC7539.+--+module Crypto.Cipher.ChaChaPoly1305+    ( State+    , Nonce+    , nonce12+    , nonce8+    , initialize+    , appendAAD+    , finalizeAAD+    , combine+    , finalize+    ) where++import           Crypto.Internal.ByteArray (ByteArrayAccess, ByteArray, Bytes, ScrubbedBytes)+import qualified Crypto.Internal.ByteArray as B+import           Crypto.Internal.Imports+import           Crypto.Error+import qualified Crypto.Cipher.ChaCha as ChaCha+import qualified Crypto.MAC.Poly1305  as Poly1305+import           Data.Memory.Endian+import qualified Data.ByteArray.Pack as P++data State = State !ChaCha.State+                   !Poly1305.State+                   !Word64 -- AAD length+                   !Word64 -- ciphertext length++newtype Nonce = Nonce Bytes++-- Based on the following pseudo code:+--+-- chacha20_aead_encrypt(aad, key, iv, constant, plaintext):+--     nonce = constant | iv+--     otk = poly1305_key_gen(key, nonce)+--     ciphertext = chacha20_encrypt(key, 1, nonce, plaintext)+--     mac_data = aad | pad16(aad)+--     mac_data |= ciphertext | pad16(ciphertext)+--     mac_data |= num_to_4_le_bytes(aad.length)+--     mac_data |= num_to_4_le_bytes(ciphertext.length)+--     tag = poly1305_mac(mac_data, otk)+--     return (ciphertext, tag)++pad16 :: Word64 -> Bytes+pad16 n+    | modLen == 0 = B.empty+    | otherwise   = B.replicate (16 - modLen) 0+  where+    modLen = fromIntegral (n `mod` 16)++-- | Nonce smart constructor 12 bytes IV, nonce constructor+nonce12 :: ByteArrayAccess iv => iv -> CryptoFailable Nonce+nonce12 iv+    | B.length iv /= 12 = CryptoFailed  $ CryptoError_IvSizeInvalid+    | otherwise         = CryptoPassed $ Nonce (B.convert iv)++-- | 8 bytes IV, nonce constructor+nonce8 :: ByteArrayAccess ba+       => ba -- ^ 4 bytes constant +       -> ba -- ^ 8 bytes IV+       -> CryptoFailable Nonce+nonce8 constant iv+    | B.length constant /= 4 = CryptoFailed $ CryptoError_IvSizeInvalid+    | B.length iv       /= 8 = CryptoFailed $ CryptoError_IvSizeInvalid+    | otherwise              = CryptoPassed $ Nonce $ B.concat [constant, iv]++initialize :: ByteArrayAccess key+           => key -> Nonce -> CryptoFailable State+initialize key (Nonce nonce)+    | B.length key /= 32 = CryptoFailed $ CryptoError_KeySizeInvalid+    | otherwise          = CryptoPassed $ State encState polyState 0 0+  where+    rootState           = ChaCha.initialize 20 key nonce+    (polyKey, encState) = ChaCha.generate rootState 64+    polyState           = Poly1305.initialize (B.take 32 polyKey :: ScrubbedBytes)++appendAAD :: ByteArrayAccess ba => ba -> State -> State+appendAAD ba (State encState macState aadLength plainLength) =+    State encState newMacState newLength plainLength+  where+    newMacState = Poly1305.update macState ba+    newLength   = aadLength + fromIntegral (B.length ba)++finalizeAAD :: State -> State+finalizeAAD (State encState macState aadLength plainLength) =+    State encState newMacState aadLength plainLength+  where+    newMacState = Poly1305.update macState $ pad16 aadLength++combine :: ByteArray ba => ba -> State -> (ba, State)+combine input (State encState macState aadLength plainLength) =+    (output, State newEncState newMacState aadLength newPlainLength)+  where+    (output, newEncState) = ChaCha.combine encState input+    newMacState           = Poly1305.update macState output+    newPlainLength        = plainLength + fromIntegral (B.length input)++finalize :: State -> Poly1305.Auth+finalize (State _ macState aadLength plainLength) =+    Poly1305.finalize $ Poly1305.updates macState+        [ pad16 plainLength+        , either (error "finalize: internal error") id $ P.fill 16 (P.putStorable (LE aadLength) >> P.putStorable (LE plainLength))+        ]
Crypto/MAC/Poly1305.hs view
@@ -12,13 +12,14 @@ {-# LANGUAGE GeneralizedNewtypeDeriving #-} module Crypto.MAC.Poly1305     ( Ctx+    , State     , Auth(..)      -- * Incremental MAC Functions-    , initialize -- :: Ctx-    , update     -- :: Ctx -> ByteString -> Ctx-    , updates    -- :: Ctx -> [ByteString] -> Ctx-    , finalize   -- :: Ctx -> Auth+    , initialize -- :: State+    , update     -- :: State -> ByteString -> State+    , updates    -- :: State -> [ByteString] -> State+    , finalize   -- :: State -> Auth     -- * One-pass MAC function     , auth     ) where@@ -29,10 +30,13 @@ import           Crypto.Internal.ByteArray (ByteArrayAccess, ScrubbedBytes, Bytes) import qualified Crypto.Internal.ByteArray as B --- | Poly1305 Context-newtype Ctx = Ctx ScrubbedBytes+-- | Poly1305 State+newtype State = State ScrubbedBytes     deriving (ByteArrayAccess) +type Ctx = State+{-# DEPRECATED Ctx "use Poly1305 State instead" #-}+ -- | Poly1305 Auth newtype Auth = Auth Bytes     deriving (ByteArrayAccess)@@ -41,35 +45,35 @@     (Auth a1) == (Auth a2) = B.constEq a1 a2  foreign import ccall unsafe "cryptonite_poly1305.h cryptonite_poly1305_init"-    c_poly1305_init :: Ptr Ctx -> Ptr Word8 -> IO ()+    c_poly1305_init :: Ptr State -> Ptr Word8 -> IO ()  foreign import ccall "cryptonite_poly1305.h cryptonite_poly1305_update"-    c_poly1305_update :: Ptr Ctx -> Ptr Word8 -> CUInt -> IO ()+    c_poly1305_update :: Ptr State -> Ptr Word8 -> CUInt -> IO ()  foreign import ccall unsafe "cryptonite_poly1305.h cryptonite_poly1305_finalize"-    c_poly1305_finalize :: Ptr Word8 -> Ptr Ctx -> IO ()+    c_poly1305_finalize :: Ptr Word8 -> Ptr State -> IO ()  -- | initialize a Poly1305 context initialize :: ByteArrayAccess key            => key-           -> Ctx+           -> State initialize key     | B.length key /= 32 = error "Poly1305: key length expected 32 bytes"-    | otherwise          = Ctx $ B.allocAndFreeze 84 $ \ctxPtr ->+    | otherwise          = State $ B.allocAndFreeze 84 $ \ctxPtr ->         B.withByteArray key $ \keyPtr ->             c_poly1305_init (castPtr ctxPtr) keyPtr {-# NOINLINE initialize #-}  -- | update a context with a bytestring-update :: ByteArrayAccess ba => Ctx -> ba -> Ctx-update (Ctx prevCtx) d = Ctx $ B.copyAndFreeze prevCtx $ \ctxPtr ->+update :: ByteArrayAccess ba => State -> ba -> State+update (State prevCtx) d = State $ B.copyAndFreeze prevCtx $ \ctxPtr ->     B.withByteArray d $ \dataPtr ->         c_poly1305_update (castPtr ctxPtr) dataPtr (fromIntegral $ B.length d) {-# NOINLINE update #-}  -- | updates a context with multiples bytestring-updates :: ByteArrayAccess ba => Ctx -> [ba] -> Ctx-updates (Ctx prevCtx) d = Ctx $ B.copyAndFreeze prevCtx (loop d)+updates :: ByteArrayAccess ba => State -> [ba] -> State+updates (State prevCtx) d = State $ B.copyAndFreeze prevCtx (loop d)   where loop []     _      = return ()         loop (x:xs) ctxPtr = do             B.withByteArray x $ \dataPtr -> c_poly1305_update ctxPtr dataPtr (fromIntegral $ B.length x)@@ -77,8 +81,8 @@ {-# NOINLINE updates #-}  -- | finalize the context into a digest bytestring-finalize :: Ctx -> Auth-finalize (Ctx prevCtx) = Auth $ B.allocAndFreeze 16 $ \dst -> do+finalize :: State -> Auth+finalize (State prevCtx) = Auth $ B.allocAndFreeze 16 $ \dst -> do     _ <- B.copy prevCtx (\ctxPtr -> c_poly1305_finalize dst (castPtr ctxPtr)) :: IO ScrubbedBytes     return () {-# NOINLINE finalize #-}
Crypto/Random/Entropy/Unix.hs view
@@ -31,7 +31,7 @@ instance EntropySource DevRandom where     entropyOpen = fmap DevRandom `fmap` testOpen "/dev/random"     entropyGather (DevRandom name) ptr n =-        withDev name $ \h -> gatherDevEntropy h ptr n+        withDev name $ \h -> gatherDevEntropyNonBlock h ptr n     entropyClose (DevRandom _)  = return ()  instance EntropySource DevURandom where@@ -66,4 +66,9 @@ gatherDevEntropy :: H -> Ptr Word8 -> Int -> IO Int gatherDevEntropy h ptr sz =      (fromIntegral `fmap` hGetBufSome h ptr (fromIntegral sz))+    `E.catch` \(_ :: IOException) -> return 0++gatherDevEntropyNonBlock :: H -> Ptr Word8 -> Int -> IO Int+gatherDevEntropyNonBlock h ptr sz =+     (fromIntegral `fmap` hGetBufNonBlocking h ptr (fromIntegral sz))     `E.catch` \(_ :: IOException) -> return 0
README.md view
@@ -40,6 +40,7 @@ * Windows >= 8 * OSX >= 10.8 * Linux+* BSDs  On the following architectures: @@ -56,6 +57,33 @@  Further platforms and architectures probably works too, but until maintainer(s) don't have regular access to them, we can't commit for further support++Known Building Issues+---------------------++on OSX <= 10.7, the system compiler doesn't understand the '-maes' option, and+with the lack of autodetection feature builtin in .cabal file, it is left on+the user to disable the aesni. See the [Disabling AESNI] section++Disabling AESNI+---------------++It may be useful to disable AESNI (for building, testing or runtime purpose), and one can do that with the+*support_aesni* flag.++As part of configure of cryptonite:++```+  cabal configure --flag='-support_aesni'+```++or as part of an installation:++```+  cabal install --constraint="cryptonite -support_aesni"+```++For help with cabal flags, see: [stackoverflow : is there a way to define flags for cabal](http://stackoverflow.com/questions/23523869/is-there-any-way-to-define-flags-for-cabal-dependencies)  Links -----
cryptonite.cabal view
@@ -1,5 +1,5 @@ Name:                cryptonite-Version:             0.5+Version:             0.6 Synopsis:            Cryptography Primitives sink Description:     A repository of cryptographic primitives.@@ -51,6 +51,11 @@   Default:           True   Manual:            True +Flag support_rdrand+  Description:       allow compilation with AESNI on system and architecture that supports it+  Default:           True+  Manual:            True+ Flag support_pclmuldq   Description:       Allow compilation with pclmuldq on architecture that supports it   Default:           False@@ -71,6 +76,7 @@                      Crypto.Cipher.Blowfish                      Crypto.Cipher.Camellia                      Crypto.Cipher.ChaCha+                     Crypto.Cipher.ChaChaPoly1305                      Crypto.Cipher.DES                      Crypto.Cipher.RC4                      Crypto.Cipher.Salsa@@ -202,7 +208,7 @@   if arch(i386)     CPP-options: -DARCH_X86 -  if arch(x86_64)+  if flag(support_rdrand) && arch(x86_64)     CPP-options:    -DARCH_X86_64     CPP-options:    -DSUPPORT_RDRAND     Other-modules:  Crypto.Random.Entropy.RDRand
+ tests/ChaChaPoly1305.hs view
@@ -0,0 +1,31 @@+{-# LANGUAGE OverloadedStrings #-}+module ChaChaPoly1305 where++import qualified Crypto.Cipher.ChaChaPoly1305 as AEAD+import Imports+import Crypto.Error+import Poly1305 ()++import qualified Data.ByteString as B+import qualified Data.ByteArray as B (convert)++plaintext, aad, key, iv, ciphertext, tag :: B.ByteString+plaintext = "Ladies and Gentlemen of the class of '99: If I could offer you only one tip for the future, sunscreen would be it."+aad = "\x50\x51\x52\x53\xc0\xc1\xc2\xc3\xc4\xc5\xc6\xc7"+key = "\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8a\x8b\x8c\x8d\x8e\x8f\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9a\x9b\x9c\x9d\x9e\x9f"+iv = "\x40\x41\x42\x43\x44\x45\x46\x47"+constant = "\x07\x00\x00\x00"+ciphertext = "\xd3\x1a\x8d\x34\x64\x8e\x60\xdb\x7b\x86\xaf\xbc\x53\xef\x7e\xc2\xa4\xad\xed\x51\x29\x6e\x08\xfe\xa9\xe2\xb5\xa7\x36\xee\x62\xd6\x3d\xbe\xa4\x5e\x8c\xa9\x67\x12\x82\xfa\xfb\x69\xda\x92\x72\x8b\x1a\x71\xde\x0a\x9e\x06\x0b\x29\x05\xd6\xa5\xb6\x7e\xcd\x3b\x36\x92\xdd\xbd\x7f\x2d\x77\x8b\x8c\x98\x03\xae\xe3\x28\x09\x1b\x58\xfa\xb3\x24\xe4\xfa\xd6\x75\x94\x55\x85\x80\x8b\x48\x31\xd7\xbc\x3f\xf4\xde\xf0\x8e\x4b\x7a\x9d\xe5\x76\xd2\x65\x86\xce\xc6\x4b\x61\x16"+tag = "\x1a\xe1\x0b\x59\x4f\x09\xe2\x6a\x7e\x90\x2e\xcb\xd0\x60\x06\x91"++tests = testGroup "ChaChaPoly1305"+    [ testCase "V1" runEncrypt+    ]+  where runEncrypt =+            let ini                 = throwCryptoError $ AEAD.initialize key (throwCryptoError $ AEAD.nonce8 constant iv)+                afterAAD            = AEAD.finalizeAAD (AEAD.appendAAD aad ini)+                (out, afterEncrypt) = AEAD.combine plaintext afterAAD+                outtag              = AEAD.finalize afterEncrypt+             in propertyHoldCase [ eqTest "ciphertext" ciphertext out+                                 , eqTest "tag" tag (B.convert outtag)+                                 ]
tests/Number.hs view
@@ -20,28 +20,29 @@     ]  tests = testGroup "number"-    [ testProperty "num-bits" $ \(Positive i) ->+    [ testProperty "num-bits" $ \(Int0_2901 i) ->         and [ (numBits (2^i-1) == i)             , (numBits (2^i) == i+1)             , (numBits (2^i + (2^i-1)) == i+1)             ]     , testProperty "num-bits2" $ \(Positive i) ->         not (i `testBit` numBits i) && (i `testBit` (numBits i - 1))-    , testProperty "generate-param" $ \testDRG (Positive bits)  ->+    , testProperty "generate-param" $ \testDRG (Int0_2901 bits)  ->         let r = withTestDRG testDRG $ generateParams bits (Just SetHighest) False          in r >= 0 && numBits r == bits && testBit r (bits-1)-    , testProperty "generate-param2" $ \testDRG (Positive m1bits) ->+    , testProperty "generate-param2" $ \testDRG (Int0_2901 m1bits) ->         let bits = m1bits + 1 -- make sure minimum is 2             r = withTestDRG testDRG $ generateParams bits (Just SetTwoHighest) False          in r >= 0 && numBits r == bits && testBit r (bits-1) && testBit r (bits-2)-    , testProperty "generate-param-odd" $ \testDRG (Positive bits) ->+    , testProperty "generate-param-odd" $ \testDRG (Int0_2901 bits) ->         let r = withTestDRG testDRG $ generateParams bits Nothing True          in r >= 0 && odd r     , testProperty "generate-range" $ \testDRG (Positive range) ->         let r = withTestDRG testDRG $ generateMax range          in 0 <= r && r < range-    , testProperty "generate-prime" $ \testDRG (Positive baseBits) ->-        let bits  = 48 + baseBits -- no point generating lower than 48 bits ..+    , testProperty "generate-prime" $ \testDRG (Int0_2901 baseBits') ->+        let baseBits = baseBits' `mod` 800+            bits  = 48 + baseBits -- no point generating lower than 48 bits ..             prime = withTestDRG testDRG $ generatePrime bits         -- with small base bits numbers, the probability that we "cross" this bit size ness         -- to the next is quite high, as the number generated has two highest bit set.
tests/Tests.hs view
@@ -8,6 +8,7 @@ import qualified Poly1305 import qualified Salsa import qualified ChaCha+import qualified ChaChaPoly1305 import qualified KAT_HMAC import qualified KAT_PBKDF2 import qualified KAT_Curve25519@@ -48,6 +49,7 @@     , testGroup "stream-cipher"         [ KAT_RC4.tests         , ChaCha.tests+        , ChaChaPoly1305.tests         , Salsa.tests         ]     , KAT_AFIS.tests
tests/Utils.hs view
@@ -14,6 +14,7 @@ import Prelude  import Test.Tasty.QuickCheck+import Test.Tasty.HUnit ((@=?))  newtype TestDRG = TestDRG (Word64, Word64, Word64, Word64, Word64)     deriving (Show,Eq)@@ -142,3 +143,6 @@         | a == b    = acc         | otherwise =             (name ++ ": expected " ++ show a ++ " but got: " ++ show b) : acc++propertyHoldCase :: [PropertyTest] -> IO ()+propertyHoldCase l = True @=? propertyHold l