cryptonite-0.28: Cryptography Primitives sink
LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
Stabilityexperimental
Portabilityunknown
Safe HaskellNone
LanguageHaskell2010

Crypto.KDF.Argon2

Description

Argon2 hashing function (P-H-C winner)

Recommended to use this module qualified

File started from Argon2.hs, from Oliver Charles at https://github.com/ocharles/argon2

Synopsis

Documentation

data Options Source #

Parameters that can be adjusted to change the runtime performance of the hashing.

Constructors

Options 

Fields

Instances

Instances details
Eq Options Source # 
Instance details

Defined in Crypto.KDF.Argon2

Methods

(==) :: Options -> Options -> Bool #

(/=) :: Options -> Options -> Bool #

Ord Options Source # 
Instance details

Defined in Crypto.KDF.Argon2

Read Options Source # 
Instance details

Defined in Crypto.KDF.Argon2

Show Options Source # 
Instance details

Defined in Crypto.KDF.Argon2

type TimeCost = Word32 Source #

The time cost, which defines the amount of computation realized and therefore the execution time, given in number of iterations.

ARGON2_MIN_TIME <= hashIterations <= ARGON2_MAX_TIME

type MemoryCost = Word32 Source #

The memory cost, which defines the memory usage, given in kibibytes.

max ARGON2_MIN_MEMORY (8 * hashParallelism) <= hashMemory <= ARGON2_MAX_MEMORY

type Parallelism = Word32 Source #

A parallelism degree, which defines the number of parallel threads.

ARGON2_MIN_LANES <= hashParallelism <= ARGON2_MAX_LANES && ARGON_MIN_THREADS <= hashParallelism <= ARGON2_MAX_THREADS

data Variant Source #

Which variant of Argon2 to use. You should choose the variant that is most applicable to your intention to hash inputs.

Constructors

Argon2d

Argon2d is faster than Argon2i and uses data-depending memory access, which makes it suitable for cryptocurrencies and applications with no threats from side-channel timing attacks.

Argon2i

Argon2i uses data-independent memory access, which is preferred for password hashing and password-based key derivation. Argon2i is slower as it makes more passes over the memory to protect from tradeoff attacks.

Argon2id

Argon2id is a hybrid of Argon2i and Argon2d, using a combination of data-depending and data-independent memory accesses, which gives some of Argon2i's resistance to side-channel cache timing attacks and much of Argon2d's resistance to GPU cracking attacks

Instances

Instances details
Bounded Variant Source # 
Instance details

Defined in Crypto.KDF.Argon2

Enum Variant Source # 
Instance details

Defined in Crypto.KDF.Argon2

Eq Variant Source # 
Instance details

Defined in Crypto.KDF.Argon2

Methods

(==) :: Variant -> Variant -> Bool #

(/=) :: Variant -> Variant -> Bool #

Ord Variant Source # 
Instance details

Defined in Crypto.KDF.Argon2

Read Variant Source # 
Instance details

Defined in Crypto.KDF.Argon2

Show Variant Source # 
Instance details

Defined in Crypto.KDF.Argon2

data Version Source #

Which version of Argon2 to use

Constructors

Version10 
Version13 

Instances

Instances details
Bounded Version Source # 
Instance details

Defined in Crypto.KDF.Argon2

Enum Version Source # 
Instance details

Defined in Crypto.KDF.Argon2

Eq Version Source # 
Instance details

Defined in Crypto.KDF.Argon2

Methods

(==) :: Version -> Version -> Bool #

(/=) :: Version -> Version -> Bool #

Ord Version Source # 
Instance details

Defined in Crypto.KDF.Argon2

Read Version Source # 
Instance details

Defined in Crypto.KDF.Argon2

Show Version Source # 
Instance details

Defined in Crypto.KDF.Argon2

Hashing function

hash :: (ByteArrayAccess password, ByteArrayAccess salt, ByteArray out) => Options -> password -> salt -> Int -> CryptoFailable out Source #