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

Crypto.Hash.IO

Description

Generalized impure cryptographic hash interface

Synopsis

Documentation

class HashAlgorithm a where Source #

Class representing hashing algorithms.

The interface presented here is update in place and lowlevel. the Hash module takes care of hidding the mutable interface properly.

Associated Types

type HashBlockSize a :: Nat Source #

Associated type for the block size of the hash algorithm

type HashDigestSize a :: Nat Source #

Associated type for the digest size of the hash algorithm

type HashInternalContextSize a :: Nat Source #

Associated type for the internal context size of the hash algorithm

Methods

hashBlockSize :: a -> Int Source #

Get the block size of a hash algorithm

hashDigestSize :: a -> Int Source #

Get the digest size of a hash algorithm

hashInternalContextSize :: a -> Int Source #

Get the size of the context used for a hash algorithm

hashInternalInit :: Ptr ( Context a) -> IO () Source #

Initialize a context pointer to the initial state of a hash algorithm

hashInternalUpdate :: Ptr ( Context a) -> Ptr Word8 -> Word32 -> IO () Source #

Update the context with some raw data

hashInternalFinalize :: Ptr ( Context a) -> Ptr ( Digest a) -> IO () Source #

Finalize the context and set the digest raw memory to the right value

Instances

Instances details
HashAlgorithm Whirlpool Source #
Instance details

Defined in Crypto.Hash.Whirlpool

HashAlgorithm Tiger Source #
Instance details

Defined in Crypto.Hash.Tiger

HashAlgorithm Skein512_512 Source #
Instance details

Defined in Crypto.Hash.Skein512

HashAlgorithm Skein512_384 Source #
Instance details

Defined in Crypto.Hash.Skein512

HashAlgorithm Skein512_256 Source #
Instance details

Defined in Crypto.Hash.Skein512

HashAlgorithm Skein512_224 Source #
Instance details

Defined in Crypto.Hash.Skein512

HashAlgorithm Skein256_256 Source #
Instance details

Defined in Crypto.Hash.Skein256

HashAlgorithm Skein256_224 Source #
Instance details

Defined in Crypto.Hash.Skein256

HashAlgorithm SHA512t_256 Source #
Instance details

Defined in Crypto.Hash.SHA512t

HashAlgorithm SHA512t_224 Source #
Instance details

Defined in Crypto.Hash.SHA512t

HashAlgorithm SHA512 Source #
Instance details

Defined in Crypto.Hash.SHA512

HashAlgorithm SHA384 Source #
Instance details

Defined in Crypto.Hash.SHA384

HashAlgorithm SHA3_512 Source #
Instance details

Defined in Crypto.Hash.SHA3

HashAlgorithm SHA3_384 Source #
Instance details

Defined in Crypto.Hash.SHA3

HashAlgorithm SHA3_256 Source #
Instance details

Defined in Crypto.Hash.SHA3

HashAlgorithm SHA3_224 Source #
Instance details

Defined in Crypto.Hash.SHA3

HashAlgorithm SHA256 Source #
Instance details

Defined in Crypto.Hash.SHA256

HashAlgorithm SHA224 Source #
Instance details

Defined in Crypto.Hash.SHA224

HashAlgorithm SHA1 Source #
Instance details

Defined in Crypto.Hash.SHA1

HashAlgorithm RIPEMD160 Source #
Instance details

Defined in Crypto.Hash.RIPEMD160

HashAlgorithm MD5 Source #
Instance details

Defined in Crypto.Hash.MD5

HashAlgorithm MD4 Source #
Instance details

Defined in Crypto.Hash.MD4

HashAlgorithm MD2 Source #
Instance details

Defined in Crypto.Hash.MD2

HashAlgorithm Keccak_512 Source #
Instance details

Defined in Crypto.Hash.Keccak

HashAlgorithm Keccak_384 Source #
Instance details

Defined in Crypto.Hash.Keccak

HashAlgorithm Keccak_256 Source #
Instance details

Defined in Crypto.Hash.Keccak

HashAlgorithm Keccak_224 Source #
Instance details

Defined in Crypto.Hash.Keccak

HashAlgorithm Blake2sp_256 Source #
Instance details

Defined in Crypto.Hash.Blake2sp

HashAlgorithm Blake2sp_224 Source #
Instance details

Defined in Crypto.Hash.Blake2sp

HashAlgorithm Blake2s_256 Source #
Instance details

Defined in Crypto.Hash.Blake2s

HashAlgorithm Blake2s_224 Source #
Instance details

Defined in Crypto.Hash.Blake2s

HashAlgorithm Blake2s_160 Source #
Instance details

Defined in Crypto.Hash.Blake2s

HashAlgorithm Blake2bp_512 Source #
Instance details

Defined in Crypto.Hash.Blake2bp

HashAlgorithm Blake2b_512 Source #
Instance details

Defined in Crypto.Hash.Blake2b

HashAlgorithm Blake2b_384 Source #
Instance details

Defined in Crypto.Hash.Blake2b

HashAlgorithm Blake2b_256 Source #
Instance details

Defined in Crypto.Hash.Blake2b

HashAlgorithm Blake2b_224 Source #
Instance details

Defined in Crypto.Hash.Blake2b

HashAlgorithm Blake2b_160 Source #
Instance details

Defined in Crypto.Hash.Blake2b

KnownNat bitlen => HashAlgorithm ( SHAKE256 bitlen) Source #
Instance details

Defined in Crypto.Hash.SHAKE

KnownNat bitlen => HashAlgorithm ( SHAKE128 bitlen) Source #
Instance details

Defined in Crypto.Hash.SHAKE

( IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 512) => HashAlgorithm ( Blake2bp bitlen) Source #
Instance details

Defined in Crypto.Hash.Blake2

( IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 256) => HashAlgorithm ( Blake2sp bitlen) Source #
Instance details

Defined in Crypto.Hash.Blake2

( IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 512) => HashAlgorithm ( Blake2b bitlen) Source #
Instance details

Defined in Crypto.Hash.Blake2

( IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 256) => HashAlgorithm ( Blake2s bitlen) Source #
Instance details

Defined in Crypto.Hash.Blake2

hashMutableInit :: HashAlgorithm alg => IO ( MutableContext alg) Source #

Create a new mutable hash context.

the algorithm used is automatically determined from the return constraint.

hashMutableInitWith :: HashAlgorithm alg => alg -> IO ( MutableContext alg) Source #

Create a new mutable hash context.

The algorithm is explicitely passed as parameter

hashMutableUpdate :: ( ByteArrayAccess ba, HashAlgorithm a) => MutableContext a -> ba -> IO () Source #

Update a mutable hash context in place

hashMutableFinalize :: forall a. HashAlgorithm a => MutableContext a -> IO ( Digest a) Source #

Finalize a mutable hash context and compute a digest

hashMutableReset :: HashAlgorithm a => MutableContext a -> IO () Source #

Reset the mutable context to the initial state of the hash