packages feed

cryptonite 0.7 → 0.8

raw patch · 11 files changed

+304/−208 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.Data.Padding: instance Eq Format
- Crypto.Data.Padding: instance Show Format
- 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: instance ByteArrayAccess Auth
- Crypto.MAC.Poly1305: instance ByteArrayAccess State
- Crypto.MAC.Poly1305: instance Eq Auth
- Crypto.MAC.Poly1305: instance NFData 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: incrementNonce :: Nonce -> Nonce
+ Crypto.Cipher.ChaChaPoly1305: instance Data.ByteArray.Types.ByteArrayAccess Crypto.Cipher.ChaChaPoly1305.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.Data.Padding: instance GHC.Classes.Eq Crypto.Data.Padding.Format
+ Crypto.Data.Padding: instance GHC.Show.Show Crypto.Data.Padding.Format
+ 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: instance Control.DeepSeq.NFData Crypto.MAC.Poly1305.Auth
+ 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.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.P256: pointBase :: Point
+ Crypto.PubKey.ECC.P256: scalarGenerate :: MonadRandom randomly => randomly Scalar
+ Crypto.PubKey.ECC.Prim: pointBaseMul :: Curve -> Integer -> Point
+ Crypto.PubKey.ECC.Prim: scalarGenerate :: MonadRandom randomly => Curve -> randomly PrivateNumber
+ 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: curveSizeBits :: Curve -> Int
+ 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.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,8 @@+## 0.8++* Add support for ChaChaPoly1305 Nonce Increment (John Galt)+* Move repository to the haskell-crypto organisation+ ## 0.7  * Add PKCS5 / PKCS7 padding and unpadding methods
Crypto/Cipher/ChaChaPoly1305.hs view
@@ -1,3 +1,5 @@+{-# LANGUAGE GeneralizedNewtypeDeriving #-}+ -- | -- Module      : Crypto.Cipher.ChaChaPoly1305 -- License     : BSD-style@@ -14,6 +16,7 @@     , Nonce     , nonce12     , nonce8+    , incrementNonce     , initialize     , appendAAD     , finalizeAAD@@ -30,6 +33,8 @@ import qualified Crypto.MAC.Poly1305  as Poly1305 import           Data.Memory.Endian import qualified Data.ByteArray.Pack as P+import           Foreign.Ptr+import           Foreign.Storable  data State = State !ChaCha.State                    !Poly1305.State@@ -37,6 +42,7 @@                    !Word64 -- ciphertext length  newtype Nonce = Nonce Bytes+    deriving (ByteArrayAccess)  -- Based on the following pseudo code: --@@ -73,6 +79,19 @@     | B.length constant /= 4 = CryptoFailed $ CryptoError_IvSizeInvalid     | B.length iv       /= 8 = CryptoFailed $ CryptoError_IvSizeInvalid     | otherwise              = CryptoPassed $ Nonce $ B.concat [constant, iv]++-- | Increment a nonce+incrementNonce :: Nonce -> Nonce+incrementNonce (Nonce n) = Nonce $ B.copyAndFreeze n $ \s ->+    loop s $ s `plusPtr` ((B.length n) - 1)+    where+      loop :: Ptr Word8 -> Ptr Word8 -> IO ()+      loop s p+          | s == p    = peek s >>= poke s . (+) 1+          | otherwise = do+              r <- (+) 1 <$> peek p+              poke p r+              if r == 0 then loop s (p `plusPtr` (-1)) else return ()  initialize :: ByteArrayAccess key            => key -> Nonce -> CryptoFailable State
Crypto/KDF/BCrypt.hs view
@@ -1,24 +1,45 @@  -- | Password encoding and validation using bcrypt. --+-- Example usasge:+--+-- >>> import Crypto.KDF.BCrypt (hashPassword, validatePassword)+-- >>> import qualified Data.ByteString.Char8 as B+-- >>>+-- >>> let bcryptHash = B.pack "$2a$10$MJJifxfaqQmbx1Mhsq3oq.YmMmfNhkyW4s/MS3K5rIMVfB7w0Q/OW"+-- >>> let password = B.pack "password"+-- >>> validatePassword password bcryptHash+-- >>> True+-- >>> let otherPassword = B.pack "otherpassword"+-- >>> otherHash <- hashPassword 12 otherPasssword :: IO B.ByteString+-- >>> validatePassword otherPassword otherHash+-- >>> True+-- -- See <https://www.usenix.org/conference/1999-usenix-annual-technical-conference/future-adaptable-password-scheme> -- for details of the original algorithm. ----- Hashes are strings of the form @$2a$10$MJJifxfaqQmbx1Mhsq3oq.YmMmfNhkyW4s/MS3K5rIMVfB7w0Q/OW@ which--- encode a version number, an integer cost parameter and the concatenated salt and hash bytes (each--- separately Base64 encoded. Incrementing the cost parameter approximately doubles the time taken--- to calculate the hash.+-- The functions @hashPassword@ and @validatePassword@ should be all that+-- most users need. ----- The different version numbers have evolved because of bugs in the standard C implementations.--- The most up to date version is @2b@ and this implementation the @2b@ version prefix, but will also--- attempt to validate against hashes with versions @2a@ and @2y@. Version @2@ or @2x@ will be rejected.--- No attempt is made to differentiate between the different versions when validating a password, but--- in practice this shouldn't cause any problems if passwords are UTF-8 encoded (which they should be).+-- Hashes are strings of the form+-- @$2a$10$MJJifxfaqQmbx1Mhsq3oq.YmMmfNhkyW4s/MS3K5rIMVfB7w0Q/OW@ which+-- encode a version number, an integer cost parameter and the concatenated+-- salt and hash bytes (each separately Base64 encoded. Incrementing the+-- cost parameter approximately doubles the time taken to calculate the hash. ----- The cost parameter can be between 4 and 31 inclusive, but anything less than 10 is probably not strong--- enough. High values may be prohibitively slow depending on your hardware. Choose the highest value you--- can without having an unacceptable impact on your users. The cost parameter can also varied depending on--- the account, since it is unique to an individual hash.+-- The different version numbers have evolved because of bugs in the standard+-- C implementations. The most up to date version is @2b@ and this+-- implementation the @2b@ version prefix, but will also attempt to validate+-- against hashes with versions @2a@ and @2y@. Version @2@ or @2x@ will be+-- rejected. No attempt is made to differentiate between the different versions+-- when validating a password, but in practice this shouldn't cause any problems+-- if passwords are UTF-8 encoded (which they should be).+--+-- The cost parameter can be between 4 and 31 inclusive, but anything less than+-- 10 is probably not strong enough. High values may be prohibitively slow+-- depending on your hardware. Choose the highest value you can without having+-- an unacceptable impact on your users. The cost parameter can also be varied+-- depending on the account, since it is unique to an individual hash.  module Crypto.KDF.BCrypt     ( hashPassword@@ -39,6 +60,8 @@ data BCryptHash = BCH Char Int Bytes Bytes  -- | Create a bcrypt hash for a password with a provided cost value.+-- Typically used to create a hash when a new user account is registered+-- or when a user changes their password. -- -- Each increment of the cost approximately doubles the time taken. -- The 16 bytes of random salt will be generated internally.@@ -80,7 +103,7 @@     b64 :: (ByteArray ba) => ba -> ba     b64 = convertToBase Base64OpenBSD --- | Check a password against a bcrypt hash+-- | Check a password against a stored bcrypt hash when authenticating a user. -- -- Returns @False@ if the password doesn't match the hash, or if the hash is -- invalid or an unsupported version.
Crypto/PubKey/ECC/P256.hs view
@@ -15,6 +15,7 @@     ( Scalar     , Point     -- * point arithmetic+    , pointBase     , pointAdd     , pointMul     , pointsMulVarTime@@ -25,6 +26,7 @@     , pointToBinary     , pointFromBinary     -- * scalar arithmetic+    , scalarGenerate     , scalarZero     , scalarIsZero     , scalarAdd@@ -48,6 +50,7 @@ import qualified Crypto.Internal.ByteArray as B import           Data.Memory.PtrMethods (memSet) import           Crypto.Error+import           Crypto.Random import           Crypto.Number.Serialize.Internal (os2ip, i2ospOf) import qualified Crypto.Number.Serialize as S (os2ip, i2ospOf) @@ -75,6 +78,11 @@ -- Point methods ------------------------------------------------------------------------ +pointBase :: Point+pointBase =+    case scalarFromInteger 1 of+        CryptoPassed s  -> toPoint s+        CryptoFailed _ -> error "pointBase: assumption failed"  -- | Lift to curve a scalar --@@ -162,6 +170,15 @@ ------------------------------------------------------------------------ -- Scalar methods ------------------------------------------------------------------------++-- | Generate a randomly generated new scalar+scalarGenerate :: MonadRandom randomly => randomly Scalar+scalarGenerate = unwrap . scalarFromBinary . witness <$> getRandomBytes 32+  where+    unwrap (CryptoFailed _) = error "scalarGenerate: assumption failed"+    unwrap (CryptoPassed s) = s+    witness :: ScrubbedBytes -> ScrubbedBytes+    witness = id  -- | The scalar representing 0 scalarZero :: Scalar
Crypto/PubKey/ECC/Prim.hs view
@@ -2,8 +2,10 @@ -- -- /WARNING:/ These functions are vulnerable to timing attacks. module Crypto.PubKey.ECC.Prim-    ( pointAdd+    ( scalarGenerate+    , pointAdd     , pointDouble+    , pointBaseMul     , pointMul     , isPointAtInfinity     , isPointValid@@ -12,8 +14,15 @@ import Data.Maybe import Crypto.Number.ModArithmetic import Crypto.Number.F2m+import Crypto.Number.Generate (generateBetween) import Crypto.PubKey.ECC.Types+import Crypto.Random +scalarGenerate :: MonadRandom randomly => Curve -> randomly PrivateNumber+scalarGenerate curve = generateBetween 1 (n - 1)+  where+        n = ecc_n $ common_curve curve+ --TODO: Extract helper function for `fromMaybe PointO...`  -- | Elliptic Curve point addition.@@ -73,6 +82,12 @@             yr = mulF2m fx xp xp `addF2m` mulF2m fx xr (s `addF2m` 1)         return $ Point xr yr   where a = ecc_a cc++-- | Elliptic curve point multiplication using the base+--+-- /WARNING:/ Vulnerable to timing attacks.+pointBaseMul :: Curve -> Integer -> Point+pointBaseMul c n = pointMul c n (ecc_g $ common_curve c)  -- | Elliptic curve point multiplication (double and add algorithm). --
Crypto/PubKey/ECC/Types.hs view
@@ -17,6 +17,7 @@     , CurveBinary(..)     , CurvePrime(..)     , common_curve+    , curveSizeBits     , ecc_fx     , ecc_p     , CurveCommon(..)@@ -27,6 +28,7 @@  import           Data.Data import           Crypto.Internal.Imports+import           Crypto.Number.Basic (numBits)  -- | Define either a binary curve or a prime curve. data Curve = CurveF2m CurveBinary -- ^ 𝔽(2^m)@@ -159,6 +161,10 @@     , (SEC_t571r1, [1,3,132,0,39])     ] -}++-- | get the size of the curve in bits+curveSizeBits :: Curve -> Int+curveSizeBits = numBits . ecc_n . common_curve  -- | Get the curve definition associated with a recommended known curve name. getCurveByName :: CurveName -> Curve
cryptonite.cabal view
@@ -1,5 +1,5 @@ Name:                cryptonite-Version:             0.7+Version:             0.8 Synopsis:            Cryptography Primitives sink Description:     A repository of cryptographic primitives.@@ -31,8 +31,8 @@ Category:            Cryptography Stability:           experimental Build-Type:          Simple-Homepage:            https://github.com/vincenthz/cryptonite-Bug-reports:         https://github.com/vincenthz/cryptonite/issues+Homepage:            https://github.com/haskell-crypto/cryptonite+Bug-reports:         https://github.com/haskell-crypto/cryptonite/issues Cabal-Version:       >=1.10 extra-doc-files:     README.md CHANGELOG.md extra-source-files:  cbits/*.h@@ -44,7 +44,7 @@  source-repository head   type: git-  location: https://github.com/vincenthz/cryptonite+  location: https://github.com/haskell-crypto/cryptonite  Flag support_aesni   Description:       allow compilation with AESNI on system and architecture that supports it
tests/ChaChaPoly1305.hs view
@@ -9,7 +9,7 @@ import qualified Data.ByteString as B import qualified Data.ByteArray as B (convert) -plaintext, aad, key, iv, ciphertext, tag :: B.ByteString+plaintext, aad, key, iv, ciphertext, tag, nonce1, nonce2, nonce3 :: 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"@@ -17,10 +17,14 @@ 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"+nonce1 = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+nonce2 = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01"+nonce3 = "\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff\xff"  tests = testGroup "ChaChaPoly1305"     [ testCase "V1" runEncrypt     , testCase "V1-decrypt" runDecrypt+    , testCase "nonce increment" runNonceInc     ]   where runEncrypt =             let ini                 = throwCryptoError $ AEAD.initialize key (throwCryptoError $ AEAD.nonce8 constant iv)@@ -39,3 +43,10 @@              in propertyHoldCase [ eqTest "plaintext" plaintext out                                  , eqTest "tag" tag (B.convert outtag)                                  ]++        runNonceInc =+            let n1 = throwCryptoError $ AEAD.nonce12 nonce1+                n3 = throwCryptoError $ AEAD.nonce12 nonce3+            in propertyHoldCase [ eqTest "nonce" nonce2 $ B.convert . AEAD.incrementNonce $ n1+                                , eqTest "nonce" nonce1 $ B.convert . AEAD.incrementNonce $ n3+                                ]
tests/KAT_AES/KATCBC.hs view
@@ -10,7 +10,7 @@                   , vectors_aes192_enc, vectors_aes192_dec                   , vectors_aes256_enc, vectors_aes256_dec :: [KATCBC] vectors_aes128_enc =-	[+    [         ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x66\xe9\x4b\xd4\xef\x8a\x2c\x3b\x88\x4c\xfa\x59\xca\x34\x2b\x2e")         , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xb6\xae\xaf\xfa\x75\x2d\xc0\x8b\x51\x63\x97\x31\x76\x1a\xed\x00")         , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xcb\x64\xcf\x3f\x42\x2a\xe8\x4b\xb9\x0e\x3a\xb4\xdb\xa7\xbd\x86")@@ -23,10 +23,10 @@         , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x17\xd6\x14\xf3\x79\xa9\x35\x90\x77\xe9\x55\x77\xfd\x31\xc2\x0a")         , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x8f\x42\xc2\x4b\xee\x6e\x63\x47\x2b\x16\x5a\xa9\x41\x31\x2f\x7c")         , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\xe5\xb5\x07\x7f\x93\x46\x46\x2c\x62\xa0\x75\xc0\xc7\x08\xee\x96")-	]+    ]  vectors_aes192_enc =-	[+    [         ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xaa\xe0\x69\x92\xac\xbf\x52\xa3\xe8\xf4\xa9\x6e\xc9\x30\x0b\xd7")         , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x5f\x88\xef\x3f\xbd\xeb\xf2\xe4\xe2\x66\x65\x12\xd3\xbc\xb7\x0f")         , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xdb\x42\xf5\x1c\xd2\x0e\xca\xd2\x9e\xb0\x13\x2b\x0f\xaa\x4b\x85")@@ -40,10 +40,10 @@         , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\xf2\xf0\xae\xd8\xcd\xc9\x21\xca\x4b\x55\x84\x5d\xa4\x15\x21\xc2")         , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\xda\xb4\x01\x5f\x98\x70\x25\xeb\xb8\xa8\x5f\x3c\x7f\x73\x70\x19") -	]+    ]  vectors_aes256_enc =-	[+    [         ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xdc\x95\xc0\x78\xa2\x40\x89\x89\xad\x48\xa2\x14\x92\x84\x20\x87")         , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x72\x98\xca\xa5\x65\x03\x1e\xad\xc6\xce\x23\xd2\x3e\xa6\x63\x78")         , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xf4\x35\xa1\x11\xa3\xe4\xa1\x94\x49\x19\xf9\x12\xc5\xa2\x41\xde")@@ -56,52 +56,52 @@         , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x62\xae\x12\xf3\x24\xbf\xea\x08\xd5\xf6\x75\xb5\x13\x02\x6b\xbf")         , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\xf9\xc7\x44\x4b\xb0\xcc\x80\x6c\x7c\x39\xee\x22\x11\xf1\x46")         , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x91\xc0\x87\x62\x87\x6d\xcc\xf9\xba\x20\x4a\x33\x76\x8f\xa5\xfe")-	]+    ]  vectors_aes128_dec =-	[-		("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x0f\x0f\x10\x11\xb5\x22\x3d\x79\x58\x77\x17\xff\xd9\xec\x3a")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x33\x08\x32\x40\xd6\x5c\xbc\x72\xaa\x0b\x44\xf3\xe1\x9e\xa9\x5a")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x65\x0a\x42\xa0\x3c\x4b\x93\xa4\xb7\x43\xdc\x9e\x9c\xf4\xc0\x9b")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x80\xcd\x20\xe1\xbd\x89\x3c\x5e\xe4\x20\x76\x85\xb0\x9a\x0e\x3e")-		, ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x15\x0e\x0e\x11\x10\xb4\x23\x3c\x78\x59\x76\x16\xfe\xd8\xed\x3b")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x32\x09\x33\x41\xd7\x5d\xbd\x73\xab\x0a\x45\xf2\xe0\x9f\xa8\x5b")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x64\x0b\x43\xa1\x3d\x4a\x92\xa5\xb6\x42\xdd\x9f\x9d\xf5\xc1\x9a")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x81\xcc\x21\xe0\xbc\x88\x3d\x5f\xe5\x21\x77\x84\xb1\x9b\x0f\x3f")-		, ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\xf5\x06\x41\x7e\x6a\x8f\xbc\x32\xdd\xa5\x52\x73\xbf\x9f\x4d\x5c")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\xbf\x6d\x28\xac\x20\xc9\x1d\x65\xa9\xd4\xb0\x96\xc2\xd5\xa5\x09")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x5f\x2a\x46\xab\x8d\xb9\x5b\x22\x15\xfe\x1a\xa4\xdd\x69\x59\x26")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x71\x9b\x21\xb5\x39\x7c\x2f\x16\x7c\x8b\x45\x22\xb5\x20\xec\x2e")-	]+    [+        ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x14\x0f\x0f\x10\x11\xb5\x22\x3d\x79\x58\x77\x17\xff\xd9\xec\x3a")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x33\x08\x32\x40\xd6\x5c\xbc\x72\xaa\x0b\x44\xf3\xe1\x9e\xa9\x5a")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x65\x0a\x42\xa0\x3c\x4b\x93\xa4\xb7\x43\xdc\x9e\x9c\xf4\xc0\x9b")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x80\xcd\x20\xe1\xbd\x89\x3c\x5e\xe4\x20\x76\x85\xb0\x9a\x0e\x3e")+        , ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x15\x0e\x0e\x11\x10\xb4\x23\x3c\x78\x59\x76\x16\xfe\xd8\xed\x3b")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x32\x09\x33\x41\xd7\x5d\xbd\x73\xab\x0a\x45\xf2\xe0\x9f\xa8\x5b")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x64\x0b\x43\xa1\x3d\x4a\x92\xa5\xb6\x42\xdd\x9f\x9d\xf5\xc1\x9a")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x81\xcc\x21\xe0\xbc\x88\x3d\x5f\xe5\x21\x77\x84\xb1\x9b\x0f\x3f")+        , ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\xf5\x06\x41\x7e\x6a\x8f\xbc\x32\xdd\xa5\x52\x73\xbf\x9f\x4d\x5c")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\xbf\x6d\x28\xac\x20\xc9\x1d\x65\xa9\xd4\xb0\x96\xc2\xd5\xa5\x09")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x5f\x2a\x46\xab\x8d\xb9\x5b\x22\x15\xfe\x1a\xa4\xdd\x69\x59\x26")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x71\x9b\x21\xb5\x39\x7c\x2f\x16\x7c\x8b\x45\x22\xb5\x20\xec\x2e")+    ]  vectors_aes192_dec =-	[-		("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x13\x46\x0e\x87\xa8\xfc\x02\x3e\xf2\x50\x1a\xfe\x7f\xf5\x1c\x51")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x91\x75\x27\xfc\xd4\xa0\x6f\x32\x27\x29\x90\x14\xca\xde\xd4\x1a")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x29\x64\x80\xb6\xa5\xd6\xcf\xb3\x78\x3f\x21\x6b\x80\x31\x3d\xb3")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xbc\xa5\x06\x07\xd0\x67\x30\x85\x2d\x3a\x50\x4b\x68\x0a\x19\xcc")-		, ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x47\x0f\x86\xa9\xfd\x03\x3f\xf3\x51\x1b\xff\x7e\xf4\x1d\x50")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x90\x74\x26\xfd\xd5\xa1\x6e\x33\x26\x28\x91\x15\xcb\xdf\xd5\x1b")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x28\x65\x81\xb7\xa4\xd7\xce\xb2\x79\x3e\x20\x6a\x81\x30\x3c\xb2")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xbd\xa4\x07\x06\xd1\x66\x31\x84\x2c\x3b\x51\x4a\x69\x0b\x18\xcd")-		, ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x38\xf9\xf9\xd1\x7e\x2c\x82\xaf\xdc\xed\x68\x03\xb6\x31\x46\x3e")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x35\x4e\xc1\x01\x0f\x17\x50\x5e\x63\x37\x40\x4b\x9a\xf2\xc0\x5c")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\xa7\x7c\xc9\xd1\x4f\x44\xf7\xf7\xcc\x45\x80\x83\x19\xb7\xa4\x71")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\xf9\x1d\xb1\x13\x0b\xd1\xc0\x66\x9f\xfa\xc2\x0e\xbe\xdd\xcb\xca")-	]+    [+        ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x13\x46\x0e\x87\xa8\xfc\x02\x3e\xf2\x50\x1a\xfe\x7f\xf5\x1c\x51")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x91\x75\x27\xfc\xd4\xa0\x6f\x32\x27\x29\x90\x14\xca\xde\xd4\x1a")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x29\x64\x80\xb6\xa5\xd6\xcf\xb3\x78\x3f\x21\x6b\x80\x31\x3d\xb3")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xbc\xa5\x06\x07\xd0\x67\x30\x85\x2d\x3a\x50\x4b\x68\x0a\x19\xcc")+        , ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x12\x47\x0f\x86\xa9\xfd\x03\x3f\xf3\x51\x1b\xff\x7e\xf4\x1d\x50")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x90\x74\x26\xfd\xd5\xa1\x6e\x33\x26\x28\x91\x15\xcb\xdf\xd5\x1b")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x28\x65\x81\xb7\xa4\xd7\xce\xb2\x79\x3e\x20\x6a\x81\x30\x3c\xb2")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xbd\xa4\x07\x06\xd1\x66\x31\x84\x2c\x3b\x51\x4a\x69\x0b\x18\xcd")+        , ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x38\xf9\xf9\xd1\x7e\x2c\x82\xaf\xdc\xed\x68\x03\xb6\x31\x46\x3e")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x35\x4e\xc1\x01\x0f\x17\x50\x5e\x63\x37\x40\x4b\x9a\xf2\xc0\x5c")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\xa7\x7c\xc9\xd1\x4f\x44\xf7\xf7\xcc\x45\x80\x83\x19\xb7\xa4\x71")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\xf9\x1d\xb1\x13\x0b\xd1\xc0\x66\x9f\xfa\xc2\x0e\xbe\xdd\xcb\xca")+    ]  vectors_aes256_dec =-	[-		("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x67\x67\x1c\xe1\xfa\x91\xdd\xeb\x0f\x8f\xbb\xb3\x66\xb5\x31\xb4")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x7b\xd3\xfb\x90\x65\x56\x9f\x39\x8b\x09\xcb\x93\x4b\x1e\x01\x23")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xda\xa8\xbf\x5c\xde\x2e\x52\x45\x5f\xa3\xb3\xfe\x33\x32\x47\xca")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x83\x24\xdc\xb4\x30\x12\x73\x6c\xed\x58\xab\x8f\x4b\x05\xca\x0b")-		, ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x66\x66\x1d\xe0\xfb\x90\xdc\xea\x0e\x8e\xba\xb2\x67\xb4\x30\xb5")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x7a\xd2\xfa\x91\x64\x57\x9e\x38\x8a\x08\xca\x92\x4a\x1f\x00\x22")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xdb\xa9\xbe\x5d\xdf\x2f\x53\x44\x5e\xa2\xb2\xff\x32\x33\x46\xcb")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x82\x25\xdd\xb5\x31\x13\x72\x6d\xec\x59\xaa\x8e\x4a\x04\xcb\x0a")-		, ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x68\xe9\x07\x16\xe3\x66\x1b\x1d\xb1\x89\x74\xb0\x9c\x46\x47\xe4")-		, ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x7f\xb9\xeb\xa4\xd3\x5f\x70\x40\xab\x52\xec\xd2\x3b\x48\xb7\x6e")-		, ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x6c\x58\x0f\x41\x82\x36\xbc\xff\x64\x1d\xac\xa7\x3e\x34\x11\x18")-		, ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x3f\x62\xd6\x8c\xb1\xf7\x62\x28\xa4\xc3\x82\x4f\x8b\x24\xe7\x4b")-	]+    [+        ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x67\x67\x1c\xe1\xfa\x91\xdd\xeb\x0f\x8f\xbb\xb3\x66\xb5\x31\xb4")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x7b\xd3\xfb\x90\x65\x56\x9f\x39\x8b\x09\xcb\x93\x4b\x1e\x01\x23")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xda\xa8\xbf\x5c\xde\x2e\x52\x45\x5f\xa3\xb3\xfe\x33\x32\x47\xca")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x83\x24\xdc\xb4\x30\x12\x73\x6c\xed\x58\xab\x8f\x4b\x05\xca\x0b")+        , ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x66\x66\x1d\xe0\xfb\x90\xdc\xea\x0e\x8e\xba\xb2\x67\xb4\x30\xb5")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x7a\xd2\xfa\x91\x64\x57\x9e\x38\x8a\x08\xca\x92\x4a\x1f\x00\x22")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\xdb\xa9\xbe\x5d\xdf\x2f\x53\x44\x5e\xa2\xb2\xff\x32\x33\x46\xcb")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x82\x25\xdd\xb5\x31\x13\x72\x6d\xec\x59\xaa\x8e\x4a\x04\xcb\x0a")+        , ("\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x68\xe9\x07\x16\xe3\x66\x1b\x1d\xb1\x89\x74\xb0\x9c\x46\x47\xe4")+        , ("\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01\x01","\x7f\xb9\xeb\xa4\xd3\x5f\x70\x40\xab\x52\xec\xd2\x3b\x48\xb7\x6e")+        , ("\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02\x02","\x6c\x58\x0f\x41\x82\x36\xbc\xff\x64\x1d\xac\xa7\x3e\x34\x11\x18")+        , ("\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03\x03","\x3f\x62\xd6\x8c\xb1\xf7\x62\x28\xa4\xc3\x82\x4f\x8b\x24\xe7\x4b")+    ]
tests/KAT_AES/KATECB.hs view
@@ -3,146 +3,146 @@ import qualified Data.ByteString as B  vectors_aes128_enc =-	[-	  ( B.pack [0x10, 0xa5, 0x88, 0x69, 0xd7, 0x4b, 0xe5, 0xa3,0x74,0xcf,0x86,0x7c,0xfb,0x47,0x38,0x59]-	  , B.replicate 16 0-	  , B.pack [0x6d,0x25,0x1e,0x69,0x44,0xb0,0x51,0xe0,0x4e,0xaa,0x6f,0xb4,0xdb,0xf7,0x84,0x65]-	  )-	, ( B.replicate 16 0-	  , B.replicate 16 0-	  , B.pack [0x66,0xe9,0x4b,0xd4,0xef,0x8a,0x2c,0x3b,0x88,0x4c,0xfa,0x59,0xca,0x34,0x2b,0x2e]-	  )-	, ( B.replicate 16 0-	  , B.replicate 16 1-	  , B.pack [0xe1,0x4d,0x5d,0x0e,0xe2,0x77,0x15,0xdf,0x08,0xb4,0x15,0x2b,0xa2,0x3d,0xa8,0xe0]-	  )-	, ( B.replicate 16 1-	  , B.replicate 16 2-	  , B.pack [0x17,0xd6,0x14,0xf3,0x79,0xa9,0x35,0x90,0x77,0xe9,0x55,0x77,0xfd,0x31,0xc2,0x0a]-	  )-	, ( B.replicate 16 2-	  , B.replicate 16 1-	  , B.pack [0x8f,0x42,0xc2,0x4b,0xee,0x6e,0x63,0x47,0x2b,0x16,0x5a,0xa9,0x41,0x31,0x2f,0x7c]-	  )-	, ( B.replicate 16 3-	  , B.replicate 16 2-	  , B.pack [0x90,0x98,0x85,0xe4,0x77,0xbc,0x20,0xf5,0x8a,0x66,0x97,0x1d,0xa0,0xbc,0x75,0xe3]-	  )-	]+    [+      ( B.pack [0x10, 0xa5, 0x88, 0x69, 0xd7, 0x4b, 0xe5, 0xa3,0x74,0xcf,0x86,0x7c,0xfb,0x47,0x38,0x59]+      , B.replicate 16 0+      , B.pack [0x6d,0x25,0x1e,0x69,0x44,0xb0,0x51,0xe0,0x4e,0xaa,0x6f,0xb4,0xdb,0xf7,0x84,0x65]+      )+    , ( B.replicate 16 0+      , B.replicate 16 0+      , B.pack [0x66,0xe9,0x4b,0xd4,0xef,0x8a,0x2c,0x3b,0x88,0x4c,0xfa,0x59,0xca,0x34,0x2b,0x2e]+      )+    , ( B.replicate 16 0+      , B.replicate 16 1+      , B.pack [0xe1,0x4d,0x5d,0x0e,0xe2,0x77,0x15,0xdf,0x08,0xb4,0x15,0x2b,0xa2,0x3d,0xa8,0xe0]+      )+    , ( B.replicate 16 1+      , B.replicate 16 2+      , B.pack [0x17,0xd6,0x14,0xf3,0x79,0xa9,0x35,0x90,0x77,0xe9,0x55,0x77,0xfd,0x31,0xc2,0x0a]+      )+    , ( B.replicate 16 2+      , B.replicate 16 1+      , B.pack [0x8f,0x42,0xc2,0x4b,0xee,0x6e,0x63,0x47,0x2b,0x16,0x5a,0xa9,0x41,0x31,0x2f,0x7c]+      )+    , ( B.replicate 16 3+      , B.replicate 16 2+      , B.pack [0x90,0x98,0x85,0xe4,0x77,0xbc,0x20,0xf5,0x8a,0x66,0x97,0x1d,0xa0,0xbc,0x75,0xe3]+      )+    ]  vectors_aes192_enc =-	[-	  ( B.replicate 24 0-	  , B.replicate 16 0-	  , B.pack [0xaa,0xe0,0x69,0x92,0xac,0xbf,0x52,0xa3,0xe8,0xf4,0xa9,0x6e,0xc9,0x30,0x0b,0xd7]-	  )-	, ( B.replicate 24 0-	  , B.replicate 16 1-	  , B.pack [0xcf,0x1e,0xce,0x3c,0x44,0xb0,0x78,0xfb,0x27,0xcb,0x0a,0x3e,0x07,0x1b,0x08,0x20]-	  )-	, ( B.replicate 24 1-	  , B.replicate 16 2-	  , B.pack [0xeb,0x8c,0x17,0x30,0x90,0xc7,0x5b,0x77,0xd6,0x72,0xb4,0x57,0xa7,0x78,0xd9,0xd0]-	  )-	, ( B.replicate 24 2-	  , B.replicate 16 1-	  , B.pack [0xf2,0xf0,0xae,0xd8,0xcd,0xc9,0x21,0xca,0x4b,0x55,0x84,0x5d,0xa4,0x15,0x21,0xc2]-	  )-	, ( B.replicate 24 3-	  , B.replicate 16 2-	  , B.pack [0xca,0xcc,0x30,0x79,0xe4,0xb7,0x95,0x27,0x63,0xd2,0x55,0xd6,0x34,0x10,0x46,0x14]-	  )-	]+    [+      ( B.replicate 24 0+      , B.replicate 16 0+      , B.pack [0xaa,0xe0,0x69,0x92,0xac,0xbf,0x52,0xa3,0xe8,0xf4,0xa9,0x6e,0xc9,0x30,0x0b,0xd7]+      )+    , ( B.replicate 24 0+      , B.replicate 16 1+      , B.pack [0xcf,0x1e,0xce,0x3c,0x44,0xb0,0x78,0xfb,0x27,0xcb,0x0a,0x3e,0x07,0x1b,0x08,0x20]+      )+    , ( B.replicate 24 1+      , B.replicate 16 2+      , B.pack [0xeb,0x8c,0x17,0x30,0x90,0xc7,0x5b,0x77,0xd6,0x72,0xb4,0x57,0xa7,0x78,0xd9,0xd0]+      )+    , ( B.replicate 24 2+      , B.replicate 16 1+      , B.pack [0xf2,0xf0,0xae,0xd8,0xcd,0xc9,0x21,0xca,0x4b,0x55,0x84,0x5d,0xa4,0x15,0x21,0xc2]+      )+    , ( B.replicate 24 3+      , B.replicate 16 2+      , B.pack [0xca,0xcc,0x30,0x79,0xe4,0xb7,0x95,0x27,0x63,0xd2,0x55,0xd6,0x34,0x10,0x46,0x14]+      )+    ]  vectors_aes256_enc =-	[ ( B.replicate 32 0-	  , B.replicate 16 0-	  , B.pack [0xdc,0x95,0xc0,0x78,0xa2,0x40,0x89,0x89,0xad,0x48,0xa2,0x14,0x92,0x84,0x20,0x87]-	  )-	, ( B.replicate 32 0-	  , B.replicate 16 1-	  , B.pack [0x7b,0xc3,0x02,0x6c,0xd7,0x37,0x10,0x3e,0x62,0x90,0x2b,0xcd,0x18,0xfb,0x01,0x63]-	  )-	, ( B.replicate 32 1-	  , B.replicate 16 2-	  , B.pack [0x62,0xae,0x12,0xf3,0x24,0xbf,0xea,0x08,0xd5,0xf6,0x75,0xb5,0x13,0x02,0x6b,0xbf]-	  )-	, ( B.replicate 32 2-	  , B.replicate 16 1-	  , B.pack [0x00,0xf9,0xc7,0x44,0x4b,0xb0,0xcc,0x80,0x6c,0x7c,0x39,0xee,0x22,0x11,0xf1,0x46]-	  )-	, ( B.replicate 32 3-	  , B.replicate 16 2-	  , B.pack [0xb4,0x05,0x87,0x3e,0xa0,0x76,0x1b,0x9c,0xa9,0x9f,0x70,0xb0,0x16,0x16,0xce,0xb1]-	  )-	]+    [ ( B.replicate 32 0+      , B.replicate 16 0+      , B.pack [0xdc,0x95,0xc0,0x78,0xa2,0x40,0x89,0x89,0xad,0x48,0xa2,0x14,0x92,0x84,0x20,0x87]+      )+    , ( B.replicate 32 0+      , B.replicate 16 1+      , B.pack [0x7b,0xc3,0x02,0x6c,0xd7,0x37,0x10,0x3e,0x62,0x90,0x2b,0xcd,0x18,0xfb,0x01,0x63]+      )+    , ( B.replicate 32 1+      , B.replicate 16 2+      , B.pack [0x62,0xae,0x12,0xf3,0x24,0xbf,0xea,0x08,0xd5,0xf6,0x75,0xb5,0x13,0x02,0x6b,0xbf]+      )+    , ( B.replicate 32 2+      , B.replicate 16 1+      , B.pack [0x00,0xf9,0xc7,0x44,0x4b,0xb0,0xcc,0x80,0x6c,0x7c,0x39,0xee,0x22,0x11,0xf1,0x46]+      )+    , ( B.replicate 32 3+      , B.replicate 16 2+      , B.pack [0xb4,0x05,0x87,0x3e,0xa0,0x76,0x1b,0x9c,0xa9,0x9f,0x70,0xb0,0x16,0x16,0xce,0xb1]+      )+    ]  vectors_aes128_dec =-	[ ( B.replicate 16 0-	  , B.replicate 16 0-	  , B.pack [0x14,0x0f,0x0f,0x10,0x11,0xb5,0x22,0x3d,0x79,0x58,0x77,0x17,0xff,0xd9,0xec,0x3a]-	  )-	, ( B.replicate 16 0-	  , B.replicate 16 1-	  , B.pack [0x15,0x6d,0x0f,0x85,0x75,0xd5,0x33,0x07,0x52,0xf8,0x4a,0xf2,0x72,0xff,0x30,0x50]-	  )-	, ( B.replicate 16 1-	  , B.replicate 16 2-	  , B.pack [0x34,0x37,0xd6,0xe2,0x31,0xd7,0x02,0x41,0x9b,0x51,0xb4,0x94,0x72,0x71,0xb6,0x11]-	  )-	, ( B.replicate 16 2-	  , B.replicate 16 1-	  , B.pack [0xe3,0xcd,0xe2,0x37,0xc8,0xf2,0xd9,0x7b,0x8d,0x79,0xf9,0x17,0x1d,0x4b,0xda,0xc1]-	  )-	, ( B.replicate 16 3-	  , B.replicate 16 2-	  , B.pack [0x5b,0x94,0xaa,0xed,0xd7,0x83,0x99,0x8c,0xd5,0x15,0x35,0x35,0x18,0xcc,0x45,0xe2]-	  )-	]+    [ ( B.replicate 16 0+      , B.replicate 16 0+      , B.pack [0x14,0x0f,0x0f,0x10,0x11,0xb5,0x22,0x3d,0x79,0x58,0x77,0x17,0xff,0xd9,0xec,0x3a]+      )+    , ( B.replicate 16 0+      , B.replicate 16 1+      , B.pack [0x15,0x6d,0x0f,0x85,0x75,0xd5,0x33,0x07,0x52,0xf8,0x4a,0xf2,0x72,0xff,0x30,0x50]+      )+    , ( B.replicate 16 1+      , B.replicate 16 2+      , B.pack [0x34,0x37,0xd6,0xe2,0x31,0xd7,0x02,0x41,0x9b,0x51,0xb4,0x94,0x72,0x71,0xb6,0x11]+      )+    , ( B.replicate 16 2+      , B.replicate 16 1+      , B.pack [0xe3,0xcd,0xe2,0x37,0xc8,0xf2,0xd9,0x7b,0x8d,0x79,0xf9,0x17,0x1d,0x4b,0xda,0xc1]+      )+    , ( B.replicate 16 3+      , B.replicate 16 2+      , B.pack [0x5b,0x94,0xaa,0xed,0xd7,0x83,0x99,0x8c,0xd5,0x15,0x35,0x35,0x18,0xcc,0x45,0xe2]+      )+    ]  vectors_aes192_dec =-	[-	  ( B.replicate 24 0-	  , B.replicate 16 0-	  , B.pack [0x13,0x46,0x0e,0x87,0xa8,0xfc,0x02,0x3e,0xf2,0x50,0x1a,0xfe,0x7f,0xf5,0x1c,0x51]-	  )-	, ( B.replicate 24 0-	  , B.replicate 16 1-	  , B.pack [0x92,0x17,0x07,0xc3,0x3d,0x1c,0xc5,0x96,0x7d,0xa5,0x1d,0xbb,0xb0,0x66,0xb2,0x6c]-	  )-	, ( B.replicate 24 1-	  , B.replicate 16 2-	  , B.pack [0xee,0x92,0x97,0xc6,0xba,0xe8,0x26,0x4d,0xff,0x08,0x0e,0xbb,0x1e,0x74,0x11,0xc1]-	  )-	, ( B.replicate 24 2-	  , B.replicate 16 1-	  , B.pack [0x49,0x67,0xdf,0x70,0xd2,0x9e,0x9a,0x7f,0x5d,0x7c,0xb9,0xc1,0x20,0xc3,0x8a,0x71]-	  )-	, ( B.replicate 24 3-	  , B.replicate 16 2-	  , B.pack [0x74,0x38,0x62,0x42,0x6b,0x56,0x7f,0xd5,0xf0,0x1d,0x1b,0x59,0x56,0x01,0x26,0x29]-	  )-	]+    [+      ( B.replicate 24 0+      , B.replicate 16 0+      , B.pack [0x13,0x46,0x0e,0x87,0xa8,0xfc,0x02,0x3e,0xf2,0x50,0x1a,0xfe,0x7f,0xf5,0x1c,0x51]+      )+    , ( B.replicate 24 0+      , B.replicate 16 1+      , B.pack [0x92,0x17,0x07,0xc3,0x3d,0x1c,0xc5,0x96,0x7d,0xa5,0x1d,0xbb,0xb0,0x66,0xb2,0x6c]+      )+    , ( B.replicate 24 1+      , B.replicate 16 2+      , B.pack [0xee,0x92,0x97,0xc6,0xba,0xe8,0x26,0x4d,0xff,0x08,0x0e,0xbb,0x1e,0x74,0x11,0xc1]+      )+    , ( B.replicate 24 2+      , B.replicate 16 1+      , B.pack [0x49,0x67,0xdf,0x70,0xd2,0x9e,0x9a,0x7f,0x5d,0x7c,0xb9,0xc1,0x20,0xc3,0x8a,0x71]+      )+    , ( B.replicate 24 3+      , B.replicate 16 2+      , B.pack [0x74,0x38,0x62,0x42,0x6b,0x56,0x7f,0xd5,0xf0,0x1d,0x1b,0x59,0x56,0x01,0x26,0x29]+      )+    ]  vectors_aes256_dec =-	[ ( B.replicate 32 0-	  , B.replicate 16 0-	  , B.pack [0x67,0x67,0x1c,0xe1,0xfa,0x91,0xdd,0xeb,0x0f,0x8f,0xbb,0xb3,0x66,0xb5,0x31,0xb4]-	  )-	, ( B.replicate 32 0-	  , B.replicate 16 1-	  , B.pack [0xcc,0x09,0x21,0xa3,0xc5,0xca,0x17,0xf7,0x48,0xb7,0xc2,0x7b,0x73,0xba,0x87,0xa2]-	  )-	, ( B.replicate 32 1-	  , B.replicate 16 2-	  , B.pack [0xc0,0x4b,0x27,0x90,0x1a,0x50,0xcf,0xfa,0xf1,0xbb,0x88,0x9f,0xc0,0x92,0x5e,0x14]-	  )-	, ( B.replicate 32 2-	  , B.replicate 16 1-	  , B.pack [0x24,0x61,0x53,0x5d,0x16,0x1c,0x15,0x39,0x88,0x32,0x77,0x29,0xc5,0x8c,0xc0,0x3a]-	  )-	, ( B.replicate 32 3-	  , B.replicate 16 2-	  , B.pack [0x30,0xc9,0x1c,0xce,0xfe,0x89,0x30,0xcf,0xff,0x31,0xdb,0xcc,0xfc,0x11,0xc5,0x23]-	  )-	]+    [ ( B.replicate 32 0+      , B.replicate 16 0+      , B.pack [0x67,0x67,0x1c,0xe1,0xfa,0x91,0xdd,0xeb,0x0f,0x8f,0xbb,0xb3,0x66,0xb5,0x31,0xb4]+      )+    , ( B.replicate 32 0+      , B.replicate 16 1+      , B.pack [0xcc,0x09,0x21,0xa3,0xc5,0xca,0x17,0xf7,0x48,0xb7,0xc2,0x7b,0x73,0xba,0x87,0xa2]+      )+    , ( B.replicate 32 1+      , B.replicate 16 2+      , B.pack [0xc0,0x4b,0x27,0x90,0x1a,0x50,0xcf,0xfa,0xf1,0xbb,0x88,0x9f,0xc0,0x92,0x5e,0x14]+      )+    , ( B.replicate 32 2+      , B.replicate 16 1+      , B.pack [0x24,0x61,0x53,0x5d,0x16,0x1c,0x15,0x39,0x88,0x32,0x77,0x29,0xc5,0x8c,0xc0,0x3a]+      )+    , ( B.replicate 32 3+      , B.replicate 16 2+      , B.pack [0x30,0xc9,0x1c,0xce,0xfe,0x89,0x30,0xcf,0xff,0x31,0xdb,0xcc,0xfc,0x11,0xc5,0x23]+      )+    ]
tests/KAT_PubKey/ECC.hs view
@@ -142,13 +142,13 @@ eccTests = testGroup "ECC"     [ testGroup "valid-point" $ map doPointValidTest (zip [katZero..] vectorsPoint)     , testGroup "property" $-        [ testProperty "point-add" $ \curve (QAInteger r1) (QAInteger r2) ->-            let curveN   = ECC.ecc_n . ECC.common_curve $ curve-                curveGen = ECC.ecc_g . ECC.common_curve $ curve-                p1       = ECC.pointMul curve r1 curveGen-                p2       = ECC.pointMul curve r2 curveGen-                pR       = ECC.pointMul curve ((r1 + r2) `mod` curveN) curveGen-             in pR `propertyEq` ECC.pointAdd curve p1 p2+        [ testProperty "point-add" $ \aCurve (QAInteger r1) (QAInteger r2) ->+            let curveN   = ECC.ecc_n . ECC.common_curve $ aCurve+                curveGen = ECC.ecc_g . ECC.common_curve $ aCurve+                p1       = ECC.pointMul aCurve r1 curveGen+                p2       = ECC.pointMul aCurve r2 curveGen+                pR       = ECC.pointMul aCurve ((r1 + r2) `mod` curveN) curveGen+             in pR `propertyEq` ECC.pointAdd aCurve p1 p2         ]     ]