Crypto.Cipher.ChaCha

crypton-1.0.1: Cryptography Primitives sink

License | BSD-style
Maintainer | Vincent Hanquez <vincent@snarc.org>
Stability | stable
Portability | good
Safe Haskell | None
Language | Haskell2010

Crypto.Cipher.ChaCha

Contents

- Simple interface for DRG purpose

Description

Synopsis

- initialize :: (ByteArrayAccess key, ByteArrayAccess nonce) => Int -> key -> nonce -> State
- initializeX :: (ByteArrayAccess key, ByteArrayAccess nonce) => Int -> key -> nonce -> State
- combine :: ByteArray ba => State -> ba -> (ba, State)
- generate :: ByteArray ba => State -> Int -> (ba, State)
- data State
- initializeSimple :: ByteArrayAccess seed => seed -> StateSimple
- generateSimple :: ByteArray ba => StateSimple -> Int -> (ba, StateSimple)
- data StateSimple

# Documentation

initialize #

Arguments

:: (ByteArrayAccess key, ByteArrayAccess nonce) |
=> Int | number of rounds (8,12,20)
-> key | the key (128 or 256 bits)
-> nonce | the nonce (64 or 96 bits)
-> State | the initial ChaCha state

Initialize a new ChaCha context with the number of rounds, the key and the nonce associated.

initializeX #

Arguments

:: (ByteArrayAccess key, ByteArrayAccess nonce) |
=> Int | number of rounds (8,12,20)
-> key | the key (256 bits)
-> nonce | the nonce (192 bits)
-> State | the initial ChaCha state

Initialize a new XChaCha context with the number of rounds, the key and the nonce associated.

An XChaCha state can be used like a regular ChaCha state after initialisation.

combine #

Arguments

:: ByteArray ba |
=> State | the current ChaCha state
-> ba | the source to xor with the generator
-> (ba, State) |

Combine the chacha output and an arbitrary message with a xor, and return the combined output and the new state.

generate #

Arguments

:: ByteArray ba |
=> State | the current ChaCha state
-> Int | the length of data to generate
-> (ba, State) |

Generate a number of bytes from the ChaCha output directly

data State #

ChaCha context

#### Instances

Instances details

NFData State # |
Instance details Defined in Crypto.Cipher.ChaCha Methods rnf :: State -> () #

# Simple interface for DRG purpose

initializeSimple #

Arguments

:: ByteArrayAccess seed |
=> seed | a 40 bytes long seed
-> StateSimple |

Initialize simple ChaCha State

The seed need to be at least 40 bytes long

generateSimple :: ByteArray ba => StateSimple -> Int -> (ba, StateSimple) #

similar to `generate` but assume certains values

data StateSimple #

ChaCha context for DRG purpose (see Crypto.Random.ChaChaDRG)

#### Instances

Instances details

NFData StateSimple # |
Instance details Defined in Crypto.Cipher.ChaCha Methods rnf :: StateSimple -> () #