cipher-aes128-0.7.0.2: AES and common modes using AES-NI when available.

Safe HaskellNone
LanguageHaskell2010

Crypto.Cipher.AES128

Contents

Synopsis

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

Minimal complete definition

blockSize, encryptBlock, decryptBlock, buildKey, keyLength

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.

data GCMCtx k Source #

A tuple of key and precomputed data for use by GCM

data AuthTag Source #

Constructors

AuthTag 

Instances

encryptGCM Source #

Arguments

:: AES_GCM k 
=> GCMCtx k 
-> ByteString

IV

-> ByteString

Plaintext

-> ByteString

AAD

-> (ByteString, AuthTag) 

Encrypts multiple-of-block-sized input, returning a bytestring and tag.

decryptGCM Source #

Arguments

:: 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].

Orphan instances

Serialize AESKey256 Source # 
Serialize AESKey192 Source # 
Serialize AESKey128 Source # 
BlockCipher AESKey256 Source # 

Methods

blockSize :: Tagged * AESKey256 BitLength #

encryptBlock :: AESKey256 -> ByteString -> ByteString #

decryptBlock :: AESKey256 -> ByteString -> ByteString #

buildKey :: ByteString -> Maybe AESKey256 #

keyLength :: Tagged * AESKey256 BitLength #

ecb :: AESKey256 -> ByteString -> ByteString #

unEcb :: AESKey256 -> ByteString -> ByteString #

cbc :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unCbc :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

ctr :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unCtr :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

ctrLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unCtrLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

cfb :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unCfb :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

ofb :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unOfb :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

cbcLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unCbcLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

sivLazy :: AESKey256 -> AESKey256 -> [ByteString] -> ByteString -> Maybe ByteString #

unSivLazy :: AESKey256 -> AESKey256 -> [ByteString] -> ByteString -> Maybe ByteString #

siv :: AESKey256 -> AESKey256 -> [ByteString] -> ByteString -> Maybe ByteString #

unSiv :: AESKey256 -> AESKey256 -> [ByteString] -> ByteString -> Maybe ByteString #

ecbLazy :: AESKey256 -> ByteString -> ByteString #

unEcbLazy :: AESKey256 -> ByteString -> ByteString #

cfbLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unCfbLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

ofbLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

unOfbLazy :: AESKey256 -> IV AESKey256 -> ByteString -> (ByteString, IV AESKey256) #

BlockCipher AESKey192 Source # 

Methods

blockSize :: Tagged * AESKey192 BitLength #

encryptBlock :: AESKey192 -> ByteString -> ByteString #

decryptBlock :: AESKey192 -> ByteString -> ByteString #

buildKey :: ByteString -> Maybe AESKey192 #

keyLength :: Tagged * AESKey192 BitLength #

ecb :: AESKey192 -> ByteString -> ByteString #

unEcb :: AESKey192 -> ByteString -> ByteString #

cbc :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unCbc :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

ctr :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unCtr :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

ctrLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unCtrLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

cfb :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unCfb :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

ofb :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unOfb :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

cbcLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unCbcLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

sivLazy :: AESKey192 -> AESKey192 -> [ByteString] -> ByteString -> Maybe ByteString #

unSivLazy :: AESKey192 -> AESKey192 -> [ByteString] -> ByteString -> Maybe ByteString #

siv :: AESKey192 -> AESKey192 -> [ByteString] -> ByteString -> Maybe ByteString #

unSiv :: AESKey192 -> AESKey192 -> [ByteString] -> ByteString -> Maybe ByteString #

ecbLazy :: AESKey192 -> ByteString -> ByteString #

unEcbLazy :: AESKey192 -> ByteString -> ByteString #

cfbLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unCfbLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

ofbLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

unOfbLazy :: AESKey192 -> IV AESKey192 -> ByteString -> (ByteString, IV AESKey192) #

BlockCipher AESKey128 Source # 

Methods

blockSize :: Tagged * AESKey128 BitLength #

encryptBlock :: AESKey128 -> ByteString -> ByteString #

decryptBlock :: AESKey128 -> ByteString -> ByteString #

buildKey :: ByteString -> Maybe AESKey128 #

keyLength :: Tagged * AESKey128 BitLength #

ecb :: AESKey128 -> ByteString -> ByteString #

unEcb :: AESKey128 -> ByteString -> ByteString #

cbc :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unCbc :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

ctr :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unCtr :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

ctrLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unCtrLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

cfb :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unCfb :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

ofb :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unOfb :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

cbcLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unCbcLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

sivLazy :: AESKey128 -> AESKey128 -> [ByteString] -> ByteString -> Maybe ByteString #

unSivLazy :: AESKey128 -> AESKey128 -> [ByteString] -> ByteString -> Maybe ByteString #

siv :: AESKey128 -> AESKey128 -> [ByteString] -> ByteString -> Maybe ByteString #

unSiv :: AESKey128 -> AESKey128 -> [ByteString] -> ByteString -> Maybe ByteString #

ecbLazy :: AESKey128 -> ByteString -> ByteString #

unEcbLazy :: AESKey128 -> ByteString -> ByteString #

cfbLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unCfbLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

ofbLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #

unOfbLazy :: AESKey128 -> IV AESKey128 -> ByteString -> (ByteString, IV AESKey128) #