crypto-cipher-types-0.0.1: Generic cryptography cipher types

PortabilityExcellent
StabilityStable
MaintainerVincent Hanquez <vincent@snarc.org>
Safe HaskellNone

Crypto.Cipher.Types

Contents

Description

symmetric cipher basic types

Synopsis

Cipher classes

class Cipher cipher whereSource

Symmetric cipher class.

Methods

cipherInit :: Key cipher -> cipherSource

Initialize a cipher context from a key

cipherName :: cipher -> StringSource

Cipher name

cipherKeySize :: cipher -> Maybe IntSource

return the size of the key required for this cipher. Some cipher accept any size for key

class Cipher cipher => BlockCipher cipher whereSource

Symmetric block cipher class

Methods

blockSize :: cipher -> IntSource

Return the size of block required for this block cipher

ecbEncrypt :: cipher -> ByteString -> ByteStringSource

Encrypt using the ECB mode.

input need to be a multiple of the blocksize

ecbDecrypt :: cipher -> ByteString -> ByteStringSource

Decrypt using the ECB mode.

input need to be a multiple of the blocksize

cbcEncrypt :: cipher -> IV cipher -> ByteString -> ByteStringSource

encrypt using the CBC mode.

input need to be a multiple of the blocksize

cbcDecrypt :: cipher -> IV cipher -> ByteString -> ByteStringSource

decrypt using the CBC mode.

input need to be a multiple of the blocksize

ctrCombine :: cipher -> IV cipher -> ByteString -> ByteStringSource

combine using the CTR mode.

CTR mode produce a stream of randomized data that is combined (by XOR operation) with the input stream.

encryption and decryption are the same operation.

input can be of any size

xtsEncrypt :: (cipher, cipher) -> IV cipher -> DataUnitOffset -> ByteString -> ByteStringSource

encrypt using the XTS mode.

input need to be a multiple of the blocksize

xtsDecrypt :: (cipher, cipher) -> IV cipher -> DataUnitOffset -> ByteString -> ByteStringSource

decrypt using the XTS mode.

input need to be a multiple of the blocksize

aeadInit :: Byteable iv => AEADMode -> cipher -> iv -> Maybe (AEAD cipher)Source

Initialize a new AEAD State

When Nothing is returns, it means the mode is not handled.

class Cipher cipher => StreamCipher cipher whereSource

Symmetric stream cipher class

Methods

streamEncrypt :: cipher -> ByteString -> (ByteString, cipher)Source

Encrypt using the stream cipher

streamDecrypt :: cipher -> ByteString -> (ByteString, cipher)Source

Decrypt using the stream cipher

type DataUnitOffset = Word32Source

Offset inside an XTS data unit, measured in block size.

data AEAD cipher Source

Authenticated Encryption with Associated Data algorithms

Constructors

AEAD cipher (AEADState cipher) 

data AEADState cipher Source

Wrapper for any AEADState

Constructors

forall st . AEADModeImpl cipher st => AEADState st 

data AEADMode Source

AEAD Mode

Instances

class BlockCipher cipher => AEADModeImpl cipher state whereSource

Class of AEAD Mode implementation

Methods

aeadStateAppendHeader :: cipher -> state -> ByteString -> stateSource

aeadStateEncrypt :: cipher -> state -> ByteString -> (ByteString, state)Source

aeadStateDecrypt :: cipher -> state -> ByteString -> (ByteString, state)Source

aeadStateFinalize :: cipher -> state -> Int -> AuthTagSource

AEAD

aeadAppendHeader :: BlockCipher a => AEAD a -> ByteString -> AEAD aSource

Append associated data into the AEAD state

aeadEncrypt :: BlockCipher a => AEAD a -> ByteString -> (ByteString, AEAD a)Source

Encrypt input and append into the AEAD state

aeadDecrypt :: BlockCipher a => AEAD a -> ByteString -> (ByteString, AEAD a)Source

Decrypt input and append into the AEAD state

aeadFinalize :: BlockCipher a => AEAD a -> Int -> AuthTagSource

Finalize the AEAD state and create an authentification tag

aeadSimpleEncryptSource

Arguments

:: BlockCipher a 
=> AEAD a

A new AEAD Context

-> ByteString

Optional Authentified Header

-> ByteString

Optional Plaintext

-> Int

Tag length

-> (AuthTag, ByteString)

Authentification tag and ciphertext

Simple AEAD encryption

aeadSimpleDecryptSource

Arguments

:: BlockCipher a 
=> AEAD a

A new AEAD Context

-> ByteString

Optional Authentified Header

-> ByteString

Optional Plaintext

-> AuthTag

Tag length

-> Maybe ByteString

Plaintext

Simple AEAD decryption

Key type and constructor

data Key c Source

a Key parametrized by the cipher

Instances

Eq (Key c) 
Byteable (Key c) 
ToSecureMem (Key c) 

makeKey :: (ToSecureMem b, Cipher c) => b -> Maybe (Key c)Source

Create a Key for a specified cipher

Initial Vector type and constructor

data IV c Source

an IV parametrized by the cipher

Instances

Eq (IV c) 
Byteable (IV c) 

makeIV :: (Byteable b, BlockCipher c) => b -> Maybe (IV c)Source

Create an IV for a specified block cipher

nullIV :: BlockCipher c => IV cSource

Create an IV that is effectively representing the number 0

ivAdd :: BlockCipher c => IV c -> Int -> IV cSource

Increment an IV by a number.

Assume the IV is in Big Endian format.

Authentification Tag

newtype AuthTag Source

Authentification Tag for AE cipher mode

Constructors

AuthTag ByteString