cryptonite-0.27: Cryptography Primitives sink
License BSD-style
Maintainer Vincent Hanquez <vincent@snarc.org>
Stability Stable
Portability Excellent
Safe Haskell None
Language Haskell2010

Crypto.Cipher.Types

Description

Symmetric cipher basic types

Synopsis

Cipher classes

class Cipher cipher where Source #

Symmetric cipher class.

Methods

cipherInit :: ByteArray key => key -> CryptoFailable cipher Source #

Initialize a cipher context from a key

cipherName :: cipher -> String Source #

Cipher name

cipherKeySize :: cipher -> KeySizeSpecifier Source #

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

Instances

Instances details
Cipher DES_EDE2 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

Cipher DES_EEE2 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

Cipher DES_EDE3 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

Cipher DES_EEE3 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

Cipher DES Source #
Instance details

Defined in Crypto.Cipher.DES

Cipher AES256 Source #
Instance details

Defined in Crypto.Cipher.AES

Cipher AES192 Source #
Instance details

Defined in Crypto.Cipher.AES

Cipher AES128 Source #
Instance details

Defined in Crypto.Cipher.AES

Cipher Twofish256 Source #
Instance details

Defined in Crypto.Cipher.Twofish

Cipher Twofish192 Source #
Instance details

Defined in Crypto.Cipher.Twofish

Cipher Twofish128 Source #
Instance details

Defined in Crypto.Cipher.Twofish

Cipher CAST5 Source #
Instance details

Defined in Crypto.Cipher.CAST5

Cipher Blowfish448 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

Cipher Blowfish256 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

Cipher Blowfish128 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

Cipher Blowfish64 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

Cipher Blowfish Source #
Instance details

Defined in Crypto.Cipher.Blowfish

Cipher Camellia128 Source #
Instance details

Defined in Crypto.Cipher.Camellia

class Cipher cipher => BlockCipher cipher where Source #

Symmetric block cipher class

Minimal complete definition

blockSize , ecbEncrypt , ecbDecrypt

Methods

blockSize :: cipher -> Int Source #

Return the size of block required for this block cipher

ecbEncrypt :: ByteArray ba => cipher -> ba -> ba Source #

Encrypt blocks

the input string need to be multiple of the block size

ecbDecrypt :: ByteArray ba => cipher -> ba -> ba Source #

Decrypt blocks

the input string need to be multiple of the block size

cbcEncrypt :: ByteArray ba => cipher -> IV cipher -> ba -> ba Source #

encrypt using the CBC mode.

input need to be a multiple of the blocksize

cbcDecrypt :: ByteArray ba => cipher -> IV cipher -> ba -> ba Source #

decrypt using the CBC mode.

input need to be a multiple of the blocksize

cfbEncrypt :: ByteArray ba => cipher -> IV cipher -> ba -> ba Source #

encrypt using the CFB mode.

input need to be a multiple of the blocksize

cfbDecrypt :: ByteArray ba => cipher -> IV cipher -> ba -> ba Source #

decrypt using the CFB mode.

input need to be a multiple of the blocksize

ctrCombine :: ByteArray ba => cipher -> IV cipher -> ba -> ba Source #

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

aeadInit :: ByteArrayAccess iv => AEADMode -> cipher -> iv -> CryptoFailable ( AEAD cipher) Source #

Initialize a new AEAD State

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

Instances

Instances details
BlockCipher DES_EDE2 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

BlockCipher DES_EEE2 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

BlockCipher DES_EDE3 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

BlockCipher DES_EEE3 Source #
Instance details

Defined in Crypto.Cipher.TripleDES

BlockCipher DES Source #
Instance details

Defined in Crypto.Cipher.DES

BlockCipher AES256 Source #
Instance details

Defined in Crypto.Cipher.AES

BlockCipher AES192 Source #
Instance details

Defined in Crypto.Cipher.AES

BlockCipher AES128 Source #
Instance details

Defined in Crypto.Cipher.AES

BlockCipher Twofish256 Source #
Instance details

Defined in Crypto.Cipher.Twofish

BlockCipher Twofish192 Source #
Instance details

Defined in Crypto.Cipher.Twofish

BlockCipher Twofish128 Source #
Instance details

Defined in Crypto.Cipher.Twofish

BlockCipher CAST5 Source #
Instance details

Defined in Crypto.Cipher.CAST5

BlockCipher Blowfish448 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

BlockCipher Blowfish256 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

BlockCipher Blowfish128 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

BlockCipher Blowfish64 Source #
Instance details

Defined in Crypto.Cipher.Blowfish

BlockCipher Blowfish Source #
Instance details

Defined in Crypto.Cipher.Blowfish

BlockCipher Camellia128 Source #
Instance details

Defined in Crypto.Cipher.Camellia

class BlockCipher cipher => BlockCipher128 cipher where Source #

class of block cipher with a 128 bits block size

Minimal complete definition

Nothing

Methods

xtsEncrypt Source #

Arguments

:: ByteArray ba
=> (cipher, cipher)
-> IV cipher

Usually represent the Data Unit (e.g. disk sector)

-> DataUnitOffset

Offset in the data unit in number of blocks

-> ba

Plaintext

-> ba

Ciphertext

encrypt using the XTS mode.

input need to be a multiple of the blocksize, and the cipher need to process 128 bits block only

xtsDecrypt Source #

Arguments

:: ByteArray ba
=> (cipher, cipher)
-> IV cipher

Usually represent the Data Unit (e.g. disk sector)

-> DataUnitOffset

Offset in the data unit in number of blocks

-> ba

Ciphertext

-> ba

Plaintext

decrypt using the XTS mode.

input need to be a multiple of the blocksize, and the cipher need to process 128 bits block only

class Cipher cipher => StreamCipher cipher where Source #

Symmetric stream cipher class

Methods

streamCombine :: ByteArray ba => cipher -> ba -> (ba, cipher) Source #

Combine using the stream cipher

type DataUnitOffset = Word32 Source #

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

AEAD functions

data AEADModeImpl st Source #

AEAD Implementation

Constructors

AEADModeImpl

Fields

data AEAD cipher Source #

Authenticated Encryption with Associated Data algorithms

Constructors

forall st. AEAD

aeadAppendHeader :: ByteArrayAccess aad => AEAD cipher -> aad -> AEAD cipher Source #

Append some header information to an AEAD context

aeadEncrypt :: ByteArray ba => AEAD cipher -> ba -> (ba, AEAD cipher) Source #

Encrypt some data and update the AEAD context

aeadDecrypt :: ByteArray ba => AEAD cipher -> ba -> (ba, AEAD cipher) Source #

Decrypt some data and update the AEAD context

aeadFinalize :: AEAD cipher -> Int -> AuthTag Source #

Finalize the AEAD context and return the authentication tag

aeadSimpleEncrypt Source #

Arguments

:: ( ByteArrayAccess aad, ByteArray ba)
=> AEAD a

A new AEAD Context

-> aad

Optional Authentication data header

-> ba

Optional Plaintext

-> Int

Tag length

-> ( AuthTag , ba)

Authentication tag and ciphertext

Simple AEAD encryption

aeadSimpleDecrypt Source #

Arguments

:: ( ByteArrayAccess aad, ByteArray ba)
=> AEAD a

A new AEAD Context

-> aad

Optional Authentication data header

-> ba

Ciphertext

-> AuthTag

The authentication tag

-> Maybe ba

Plaintext

Simple AEAD decryption

Initial Vector type and constructor

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

Create an IV for a specified block cipher

nullIV :: BlockCipher c => IV c Source #

Create an IV that is effectively representing the number 0

ivAdd :: IV c -> Int -> IV c Source #

Increment an IV by a number.

Assume the IV is in Big Endian format.

Authentification Tag