Safe Haskell | None |
---|---|
Language | Haskell2010 |
- data AESKey128
- data AESKey192
- data AESKey256
- class Serialize k => BlockCipher k where
- blockSize :: Tagged * k BitLength
- encryptBlock :: k -> ByteString -> ByteString
- decryptBlock :: k -> ByteString -> ByteString
- buildKey :: ByteString -> Maybe k
- keyLength :: Tagged * k BitLength
- ecb :: k -> ByteString -> ByteString
- unEcb :: k -> ByteString -> ByteString
- cbc :: k -> IV k -> ByteString -> (ByteString, IV k)
- unCbc :: k -> IV k -> ByteString -> (ByteString, IV k)
- ctr :: k -> IV k -> ByteString -> (ByteString, IV k)
- unCtr :: k -> IV k -> ByteString -> (ByteString, IV k)
- ctrLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- unCtrLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- cfb :: k -> IV k -> ByteString -> (ByteString, IV k)
- unCfb :: k -> IV k -> ByteString -> (ByteString, IV k)
- ofb :: k -> IV k -> ByteString -> (ByteString, IV k)
- unOfb :: k -> IV k -> ByteString -> (ByteString, IV k)
- cbcLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- unCbcLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- sivLazy :: k -> k -> [ByteString] -> ByteString -> Maybe ByteString
- unSivLazy :: k -> k -> [ByteString] -> ByteString -> Maybe ByteString
- siv :: k -> k -> [ByteString] -> ByteString -> Maybe ByteString
- unSiv :: k -> k -> [ByteString] -> ByteString -> Maybe ByteString
- ecbLazy :: k -> ByteString -> ByteString
- unEcbLazy :: k -> ByteString -> ByteString
- cfbLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- unCfbLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- ofbLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- unOfbLazy :: k -> IV k -> ByteString -> (ByteString, IV k)
- buildKeyIO :: BlockCipher k => IO k
- zeroIV :: BlockCipher k => IV k
- makeGCMCtx :: AES_GCM k => ByteString -> Maybe (GCMCtx k)
- aesKeyToGCM :: AES_GCM k => k -> GCMCtx k
- data GCMCtx k
- data AuthTag = AuthTag {}
- class (BlockCipher k, GetExpanded k) => AES_GCM k
- encryptGCM :: AES_GCM k => GCMCtx k -> ByteString -> ByteString -> ByteString -> (ByteString, AuthTag)
- decryptGCM :: AES_GCM k => GCMCtx k -> ByteString -> ByteString -> ByteString -> (ByteString, AuthTag)
Key types with crypto-api instances
class Serialize k => BlockCipher k where #
The BlockCipher class is intended as the generic interface targeted by maintainers of Haskell cipher implementations.
Minimum complete definition: blockSize, encryptBlock, decryptBlock, buildKey, and keyLength.
Instances must handle unaligned data
buildKeyIO :: BlockCipher k => IO k #
Build a symmetric key using the system entropy (see Entropy
)
zeroIV :: BlockCipher k => IV k #
Obtain an IV
made only of zeroes
GCM Operations
makeGCMCtx :: AES_GCM k => ByteString -> Maybe (GCMCtx k) Source #
Given key material produce a context useful for GCM operations
aesKeyToGCM :: AES_GCM k => k -> GCMCtx k Source #
Given an AESKey produce a GCM Context.
class (BlockCipher k, GetExpanded k) => AES_GCM k Source #
:: AES_GCM k | |
=> GCMCtx k | |
-> ByteString | IV |
-> ByteString | Plaintext |
-> ByteString | AAD |
-> (ByteString, AuthTag) |
Encrypts multiple-of-block-sized input, returning a bytestring and tag.
:: AES_GCM k | |
=> GCMCtx k | |
-> ByteString | IV |
-> ByteString | Ciphertext |
-> ByteString | AAD |
-> (ByteString, AuthTag) | Plaintext and incremented context (or an error) |
Decrypts multiple-of-block-sized input, returing a bytestring of the [ctr, ct, tag].