cryptonite-0.25: 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

- class HashAlgorithm a where
  - type HashBlockSize a :: Nat
  - type HashDigestSize a :: Nat
  - type HashInternalContextSize a :: Nat
- data MutableContext a
- hashMutableInit :: HashAlgorithm alg => IO (MutableContext alg)
- hashMutableInitWith :: HashAlgorithm alg => alg -> IO (MutableContext alg)
- hashMutableUpdate :: (ByteArrayAccess ba, HashAlgorithm a) => MutableContext a -> ba -> IO ()
- hashMutableFinalize :: forall a. HashAlgorithm a => MutableContext a -> IO (Digest a)
- hashMutableReset :: HashAlgorithm a => MutableContext a -> IO ()

# Documentation

class HashAlgorithm a where #

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.

Minimal complete definition

hashBlockSize, hashDigestSize, hashInternalContextSize, hashInternalInit, hashInternalUpdate, hashInternalFinalize

Associated Types

type HashBlockSize a :: Nat #

Associated type for the block size of the hash algorithm

type HashDigestSize a :: Nat #

Associated type for the digest size of the hash algorithm

type HashInternalContextSize a :: Nat #

Associated type for the internal context size of the hash algorithm

Methods

hashBlockSize :: a -> Int #

Get the block size of a hash algorithm

hashDigestSize :: a -> Int #

Get the digest size of a hash algorithm

hashInternalContextSize :: a -> Int #

Get the size of the context used for a hash algorithm

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

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

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

Update the context with some raw data

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

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

Instances

HashAlgorithm Whirlpool # |
Instance details Defined in Crypto.Hash.Whirlpool Associated Types type HashBlockSize Whirlpool :: Nat # type HashDigestSize Whirlpool :: Nat # type HashInternalContextSize Whirlpool :: Nat # Methods hashBlockSize :: Whirlpool -> Int # hashDigestSize :: Whirlpool -> Int # hashInternalContextSize :: Whirlpool -> Int # hashInternalInit :: Ptr (Context Whirlpool) -> IO () # hashInternalUpdate :: Ptr (Context Whirlpool) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Whirlpool) -> Ptr (Digest Whirlpool) -> IO () #
HashAlgorithm Tiger # |
Instance details Defined in Crypto.Hash.Tiger Associated Types type HashBlockSize Tiger :: Nat # type HashDigestSize Tiger :: Nat # type HashInternalContextSize Tiger :: Nat # Methods hashBlockSize :: Tiger -> Int # hashDigestSize :: Tiger -> Int # hashInternalContextSize :: Tiger -> Int # hashInternalInit :: Ptr (Context Tiger) -> IO () # hashInternalUpdate :: Ptr (Context Tiger) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Tiger) -> Ptr (Digest Tiger) -> IO () #
HashAlgorithm Skein512_512 # |
Instance details Defined in Crypto.Hash.Skein512 Associated Types type HashBlockSize Skein512_512 :: Nat # type HashDigestSize Skein512_512 :: Nat # type HashInternalContextSize Skein512_512 :: Nat # Methods hashBlockSize :: Skein512_512 -> Int # hashDigestSize :: Skein512_512 -> Int # hashInternalContextSize :: Skein512_512 -> Int # hashInternalInit :: Ptr (Context Skein512_512) -> IO () # hashInternalUpdate :: Ptr (Context Skein512_512) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Skein512_512) -> Ptr (Digest Skein512_512) -> IO () #
HashAlgorithm Skein512_384 # |
Instance details Defined in Crypto.Hash.Skein512 Associated Types type HashBlockSize Skein512_384 :: Nat # type HashDigestSize Skein512_384 :: Nat # type HashInternalContextSize Skein512_384 :: Nat # Methods hashBlockSize :: Skein512_384 -> Int # hashDigestSize :: Skein512_384 -> Int # hashInternalContextSize :: Skein512_384 -> Int # hashInternalInit :: Ptr (Context Skein512_384) -> IO () # hashInternalUpdate :: Ptr (Context Skein512_384) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Skein512_384) -> Ptr (Digest Skein512_384) -> IO () #
HashAlgorithm Skein512_256 # |
Instance details Defined in Crypto.Hash.Skein512 Associated Types type HashBlockSize Skein512_256 :: Nat # type HashDigestSize Skein512_256 :: Nat # type HashInternalContextSize Skein512_256 :: Nat # Methods hashBlockSize :: Skein512_256 -> Int # hashDigestSize :: Skein512_256 -> Int # hashInternalContextSize :: Skein512_256 -> Int # hashInternalInit :: Ptr (Context Skein512_256) -> IO () # hashInternalUpdate :: Ptr (Context Skein512_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Skein512_256) -> Ptr (Digest Skein512_256) -> IO () #
HashAlgorithm Skein512_224 # |
Instance details Defined in Crypto.Hash.Skein512 Associated Types type HashBlockSize Skein512_224 :: Nat # type HashDigestSize Skein512_224 :: Nat # type HashInternalContextSize Skein512_224 :: Nat # Methods hashBlockSize :: Skein512_224 -> Int # hashDigestSize :: Skein512_224 -> Int # hashInternalContextSize :: Skein512_224 -> Int # hashInternalInit :: Ptr (Context Skein512_224) -> IO () # hashInternalUpdate :: Ptr (Context Skein512_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Skein512_224) -> Ptr (Digest Skein512_224) -> IO () #
HashAlgorithm Skein256_256 # |
Instance details Defined in Crypto.Hash.Skein256 Associated Types type HashBlockSize Skein256_256 :: Nat # type HashDigestSize Skein256_256 :: Nat # type HashInternalContextSize Skein256_256 :: Nat # Methods hashBlockSize :: Skein256_256 -> Int # hashDigestSize :: Skein256_256 -> Int # hashInternalContextSize :: Skein256_256 -> Int # hashInternalInit :: Ptr (Context Skein256_256) -> IO () # hashInternalUpdate :: Ptr (Context Skein256_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Skein256_256) -> Ptr (Digest Skein256_256) -> IO () #
HashAlgorithm Skein256_224 # |
Instance details Defined in Crypto.Hash.Skein256 Associated Types type HashBlockSize Skein256_224 :: Nat # type HashDigestSize Skein256_224 :: Nat # type HashInternalContextSize Skein256_224 :: Nat # Methods hashBlockSize :: Skein256_224 -> Int # hashDigestSize :: Skein256_224 -> Int # hashInternalContextSize :: Skein256_224 -> Int # hashInternalInit :: Ptr (Context Skein256_224) -> IO () # hashInternalUpdate :: Ptr (Context Skein256_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Skein256_224) -> Ptr (Digest Skein256_224) -> IO () #
HashAlgorithm SHA512t_256 # |
Instance details Defined in Crypto.Hash.SHA512t Associated Types type HashBlockSize SHA512t_256 :: Nat # type HashDigestSize SHA512t_256 :: Nat # type HashInternalContextSize SHA512t_256 :: Nat # Methods hashBlockSize :: SHA512t_256 -> Int # hashDigestSize :: SHA512t_256 -> Int # hashInternalContextSize :: SHA512t_256 -> Int # hashInternalInit :: Ptr (Context SHA512t_256) -> IO () # hashInternalUpdate :: Ptr (Context SHA512t_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA512t_256) -> Ptr (Digest SHA512t_256) -> IO () #
HashAlgorithm SHA512t_224 # |
Instance details Defined in Crypto.Hash.SHA512t Associated Types type HashBlockSize SHA512t_224 :: Nat # type HashDigestSize SHA512t_224 :: Nat # type HashInternalContextSize SHA512t_224 :: Nat # Methods hashBlockSize :: SHA512t_224 -> Int # hashDigestSize :: SHA512t_224 -> Int # hashInternalContextSize :: SHA512t_224 -> Int # hashInternalInit :: Ptr (Context SHA512t_224) -> IO () # hashInternalUpdate :: Ptr (Context SHA512t_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA512t_224) -> Ptr (Digest SHA512t_224) -> IO () #
HashAlgorithm SHA512 # |
Instance details Defined in Crypto.Hash.SHA512 Associated Types type HashBlockSize SHA512 :: Nat # type HashDigestSize SHA512 :: Nat # type HashInternalContextSize SHA512 :: Nat # Methods hashBlockSize :: SHA512 -> Int # hashDigestSize :: SHA512 -> Int # hashInternalContextSize :: SHA512 -> Int # hashInternalInit :: Ptr (Context SHA512) -> IO () # hashInternalUpdate :: Ptr (Context SHA512) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA512) -> Ptr (Digest SHA512) -> IO () #
HashAlgorithm SHA384 # |
Instance details Defined in Crypto.Hash.SHA384 Associated Types type HashBlockSize SHA384 :: Nat # type HashDigestSize SHA384 :: Nat # type HashInternalContextSize SHA384 :: Nat # Methods hashBlockSize :: SHA384 -> Int # hashDigestSize :: SHA384 -> Int # hashInternalContextSize :: SHA384 -> Int # hashInternalInit :: Ptr (Context SHA384) -> IO () # hashInternalUpdate :: Ptr (Context SHA384) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA384) -> Ptr (Digest SHA384) -> IO () #
HashAlgorithm SHA3_512 # |
Instance details Defined in Crypto.Hash.SHA3 Associated Types type HashBlockSize SHA3_512 :: Nat # type HashDigestSize SHA3_512 :: Nat # type HashInternalContextSize SHA3_512 :: Nat # Methods hashBlockSize :: SHA3_512 -> Int # hashDigestSize :: SHA3_512 -> Int # hashInternalContextSize :: SHA3_512 -> Int # hashInternalInit :: Ptr (Context SHA3_512) -> IO () # hashInternalUpdate :: Ptr (Context SHA3_512) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA3_512) -> Ptr (Digest SHA3_512) -> IO () #
HashAlgorithm SHA3_384 # |
Instance details Defined in Crypto.Hash.SHA3 Associated Types type HashBlockSize SHA3_384 :: Nat # type HashDigestSize SHA3_384 :: Nat # type HashInternalContextSize SHA3_384 :: Nat # Methods hashBlockSize :: SHA3_384 -> Int # hashDigestSize :: SHA3_384 -> Int # hashInternalContextSize :: SHA3_384 -> Int # hashInternalInit :: Ptr (Context SHA3_384) -> IO () # hashInternalUpdate :: Ptr (Context SHA3_384) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA3_384) -> Ptr (Digest SHA3_384) -> IO () #
HashAlgorithm SHA3_256 # |
Instance details Defined in Crypto.Hash.SHA3 Associated Types type HashBlockSize SHA3_256 :: Nat # type HashDigestSize SHA3_256 :: Nat # type HashInternalContextSize SHA3_256 :: Nat # Methods hashBlockSize :: SHA3_256 -> Int # hashDigestSize :: SHA3_256 -> Int # hashInternalContextSize :: SHA3_256 -> Int # hashInternalInit :: Ptr (Context SHA3_256) -> IO () # hashInternalUpdate :: Ptr (Context SHA3_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA3_256) -> Ptr (Digest SHA3_256) -> IO () #
HashAlgorithm SHA3_224 # |
Instance details Defined in Crypto.Hash.SHA3 Associated Types type HashBlockSize SHA3_224 :: Nat # type HashDigestSize SHA3_224 :: Nat # type HashInternalContextSize SHA3_224 :: Nat # Methods hashBlockSize :: SHA3_224 -> Int # hashDigestSize :: SHA3_224 -> Int # hashInternalContextSize :: SHA3_224 -> Int # hashInternalInit :: Ptr (Context SHA3_224) -> IO () # hashInternalUpdate :: Ptr (Context SHA3_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA3_224) -> Ptr (Digest SHA3_224) -> IO () #
HashAlgorithm SHA256 # |
Instance details Defined in Crypto.Hash.SHA256 Associated Types type HashBlockSize SHA256 :: Nat # type HashDigestSize SHA256 :: Nat # type HashInternalContextSize SHA256 :: Nat # Methods hashBlockSize :: SHA256 -> Int # hashDigestSize :: SHA256 -> Int # hashInternalContextSize :: SHA256 -> Int # hashInternalInit :: Ptr (Context SHA256) -> IO () # hashInternalUpdate :: Ptr (Context SHA256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA256) -> Ptr (Digest SHA256) -> IO () #
HashAlgorithm SHA224 # |
Instance details Defined in Crypto.Hash.SHA224 Associated Types type HashBlockSize SHA224 :: Nat # type HashDigestSize SHA224 :: Nat # type HashInternalContextSize SHA224 :: Nat # Methods hashBlockSize :: SHA224 -> Int # hashDigestSize :: SHA224 -> Int # hashInternalContextSize :: SHA224 -> Int # hashInternalInit :: Ptr (Context SHA224) -> IO () # hashInternalUpdate :: Ptr (Context SHA224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA224) -> Ptr (Digest SHA224) -> IO () #
HashAlgorithm SHA1 # |
Instance details Defined in Crypto.Hash.SHA1 Associated Types type HashBlockSize SHA1 :: Nat # type HashDigestSize SHA1 :: Nat # type HashInternalContextSize SHA1 :: Nat # Methods hashBlockSize :: SHA1 -> Int # hashDigestSize :: SHA1 -> Int # hashInternalContextSize :: SHA1 -> Int # hashInternalInit :: Ptr (Context SHA1) -> IO () # hashInternalUpdate :: Ptr (Context SHA1) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context SHA1) -> Ptr (Digest SHA1) -> IO () #
HashAlgorithm RIPEMD160 # |
Instance details Defined in Crypto.Hash.RIPEMD160 Associated Types type HashBlockSize RIPEMD160 :: Nat # type HashDigestSize RIPEMD160 :: Nat # type HashInternalContextSize RIPEMD160 :: Nat # Methods hashBlockSize :: RIPEMD160 -> Int # hashDigestSize :: RIPEMD160 -> Int # hashInternalContextSize :: RIPEMD160 -> Int # hashInternalInit :: Ptr (Context RIPEMD160) -> IO () # hashInternalUpdate :: Ptr (Context RIPEMD160) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context RIPEMD160) -> Ptr (Digest RIPEMD160) -> IO () #
HashAlgorithm MD5 # |
Instance details Defined in Crypto.Hash.MD5 Associated Types type HashBlockSize MD5 :: Nat # type HashDigestSize MD5 :: Nat # type HashInternalContextSize MD5 :: Nat # Methods hashBlockSize :: MD5 -> Int # hashDigestSize :: MD5 -> Int # hashInternalContextSize :: MD5 -> Int # hashInternalInit :: Ptr (Context MD5) -> IO () # hashInternalUpdate :: Ptr (Context MD5) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context MD5) -> Ptr (Digest MD5) -> IO () #
HashAlgorithm MD4 # |
Instance details Defined in Crypto.Hash.MD4 Associated Types type HashBlockSize MD4 :: Nat # type HashDigestSize MD4 :: Nat # type HashInternalContextSize MD4 :: Nat # Methods hashBlockSize :: MD4 -> Int # hashDigestSize :: MD4 -> Int # hashInternalContextSize :: MD4 -> Int # hashInternalInit :: Ptr (Context MD4) -> IO () # hashInternalUpdate :: Ptr (Context MD4) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context MD4) -> Ptr (Digest MD4) -> IO () #
HashAlgorithm MD2 # |
Instance details Defined in Crypto.Hash.MD2 Associated Types type HashBlockSize MD2 :: Nat # type HashDigestSize MD2 :: Nat # type HashInternalContextSize MD2 :: Nat # Methods hashBlockSize :: MD2 -> Int # hashDigestSize :: MD2 -> Int # hashInternalContextSize :: MD2 -> Int # hashInternalInit :: Ptr (Context MD2) -> IO () # hashInternalUpdate :: Ptr (Context MD2) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context MD2) -> Ptr (Digest MD2) -> IO () #
HashAlgorithm Keccak_512 # |
Instance details Defined in Crypto.Hash.Keccak Associated Types type HashBlockSize Keccak_512 :: Nat # type HashDigestSize Keccak_512 :: Nat # type HashInternalContextSize Keccak_512 :: Nat # Methods hashBlockSize :: Keccak_512 -> Int # hashDigestSize :: Keccak_512 -> Int # hashInternalContextSize :: Keccak_512 -> Int # hashInternalInit :: Ptr (Context Keccak_512) -> IO () # hashInternalUpdate :: Ptr (Context Keccak_512) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Keccak_512) -> Ptr (Digest Keccak_512) -> IO () #
HashAlgorithm Keccak_384 # |
Instance details Defined in Crypto.Hash.Keccak Associated Types type HashBlockSize Keccak_384 :: Nat # type HashDigestSize Keccak_384 :: Nat # type HashInternalContextSize Keccak_384 :: Nat # Methods hashBlockSize :: Keccak_384 -> Int # hashDigestSize :: Keccak_384 -> Int # hashInternalContextSize :: Keccak_384 -> Int # hashInternalInit :: Ptr (Context Keccak_384) -> IO () # hashInternalUpdate :: Ptr (Context Keccak_384) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Keccak_384) -> Ptr (Digest Keccak_384) -> IO () #
HashAlgorithm Keccak_256 # |
Instance details Defined in Crypto.Hash.Keccak Associated Types type HashBlockSize Keccak_256 :: Nat # type HashDigestSize Keccak_256 :: Nat # type HashInternalContextSize Keccak_256 :: Nat # Methods hashBlockSize :: Keccak_256 -> Int # hashDigestSize :: Keccak_256 -> Int # hashInternalContextSize :: Keccak_256 -> Int # hashInternalInit :: Ptr (Context Keccak_256) -> IO () # hashInternalUpdate :: Ptr (Context Keccak_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Keccak_256) -> Ptr (Digest Keccak_256) -> IO () #
HashAlgorithm Keccak_224 # |
Instance details Defined in Crypto.Hash.Keccak Associated Types type HashBlockSize Keccak_224 :: Nat # type HashDigestSize Keccak_224 :: Nat # type HashInternalContextSize Keccak_224 :: Nat # Methods hashBlockSize :: Keccak_224 -> Int # hashDigestSize :: Keccak_224 -> Int # hashInternalContextSize :: Keccak_224 -> Int # hashInternalInit :: Ptr (Context Keccak_224) -> IO () # hashInternalUpdate :: Ptr (Context Keccak_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Keccak_224) -> Ptr (Digest Keccak_224) -> IO () #
HashAlgorithm Blake2sp_256 # |
Instance details Defined in Crypto.Hash.Blake2sp Associated Types type HashBlockSize Blake2sp_256 :: Nat # type HashDigestSize Blake2sp_256 :: Nat # type HashInternalContextSize Blake2sp_256 :: Nat # Methods hashBlockSize :: Blake2sp_256 -> Int # hashDigestSize :: Blake2sp_256 -> Int # hashInternalContextSize :: Blake2sp_256 -> Int # hashInternalInit :: Ptr (Context Blake2sp_256) -> IO () # hashInternalUpdate :: Ptr (Context Blake2sp_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2sp_256) -> Ptr (Digest Blake2sp_256) -> IO () #
HashAlgorithm Blake2sp_224 # |
Instance details Defined in Crypto.Hash.Blake2sp Associated Types type HashBlockSize Blake2sp_224 :: Nat # type HashDigestSize Blake2sp_224 :: Nat # type HashInternalContextSize Blake2sp_224 :: Nat # Methods hashBlockSize :: Blake2sp_224 -> Int # hashDigestSize :: Blake2sp_224 -> Int # hashInternalContextSize :: Blake2sp_224 -> Int # hashInternalInit :: Ptr (Context Blake2sp_224) -> IO () # hashInternalUpdate :: Ptr (Context Blake2sp_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2sp_224) -> Ptr (Digest Blake2sp_224) -> IO () #
HashAlgorithm Blake2s_256 # |
Instance details Defined in Crypto.Hash.Blake2s Associated Types type HashBlockSize Blake2s_256 :: Nat # type HashDigestSize Blake2s_256 :: Nat # type HashInternalContextSize Blake2s_256 :: Nat # Methods hashBlockSize :: Blake2s_256 -> Int # hashDigestSize :: Blake2s_256 -> Int # hashInternalContextSize :: Blake2s_256 -> Int # hashInternalInit :: Ptr (Context Blake2s_256) -> IO () # hashInternalUpdate :: Ptr (Context Blake2s_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2s_256) -> Ptr (Digest Blake2s_256) -> IO () #
HashAlgorithm Blake2s_224 # |
Instance details Defined in Crypto.Hash.Blake2s Associated Types type HashBlockSize Blake2s_224 :: Nat # type HashDigestSize Blake2s_224 :: Nat # type HashInternalContextSize Blake2s_224 :: Nat # Methods hashBlockSize :: Blake2s_224 -> Int # hashDigestSize :: Blake2s_224 -> Int # hashInternalContextSize :: Blake2s_224 -> Int # hashInternalInit :: Ptr (Context Blake2s_224) -> IO () # hashInternalUpdate :: Ptr (Context Blake2s_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2s_224) -> Ptr (Digest Blake2s_224) -> IO () #
HashAlgorithm Blake2s_160 # |
Instance details Defined in Crypto.Hash.Blake2s Associated Types type HashBlockSize Blake2s_160 :: Nat # type HashDigestSize Blake2s_160 :: Nat # type HashInternalContextSize Blake2s_160 :: Nat # Methods hashBlockSize :: Blake2s_160 -> Int # hashDigestSize :: Blake2s_160 -> Int # hashInternalContextSize :: Blake2s_160 -> Int # hashInternalInit :: Ptr (Context Blake2s_160) -> IO () # hashInternalUpdate :: Ptr (Context Blake2s_160) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2s_160) -> Ptr (Digest Blake2s_160) -> IO () #
HashAlgorithm Blake2bp_512 # |
Instance details Defined in Crypto.Hash.Blake2bp Associated Types type HashBlockSize Blake2bp_512 :: Nat # type HashDigestSize Blake2bp_512 :: Nat # type HashInternalContextSize Blake2bp_512 :: Nat # Methods hashBlockSize :: Blake2bp_512 -> Int # hashDigestSize :: Blake2bp_512 -> Int # hashInternalContextSize :: Blake2bp_512 -> Int # hashInternalInit :: Ptr (Context Blake2bp_512) -> IO () # hashInternalUpdate :: Ptr (Context Blake2bp_512) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2bp_512) -> Ptr (Digest Blake2bp_512) -> IO () #
HashAlgorithm Blake2b_512 # |
Instance details Defined in Crypto.Hash.Blake2b Associated Types type HashBlockSize Blake2b_512 :: Nat # type HashDigestSize Blake2b_512 :: Nat # type HashInternalContextSize Blake2b_512 :: Nat # Methods hashBlockSize :: Blake2b_512 -> Int # hashDigestSize :: Blake2b_512 -> Int # hashInternalContextSize :: Blake2b_512 -> Int # hashInternalInit :: Ptr (Context Blake2b_512) -> IO () # hashInternalUpdate :: Ptr (Context Blake2b_512) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2b_512) -> Ptr (Digest Blake2b_512) -> IO () #
HashAlgorithm Blake2b_384 # |
Instance details Defined in Crypto.Hash.Blake2b Associated Types type HashBlockSize Blake2b_384 :: Nat # type HashDigestSize Blake2b_384 :: Nat # type HashInternalContextSize Blake2b_384 :: Nat # Methods hashBlockSize :: Blake2b_384 -> Int # hashDigestSize :: Blake2b_384 -> Int # hashInternalContextSize :: Blake2b_384 -> Int # hashInternalInit :: Ptr (Context Blake2b_384) -> IO () # hashInternalUpdate :: Ptr (Context Blake2b_384) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2b_384) -> Ptr (Digest Blake2b_384) -> IO () #
HashAlgorithm Blake2b_256 # |
Instance details Defined in Crypto.Hash.Blake2b Associated Types type HashBlockSize Blake2b_256 :: Nat # type HashDigestSize Blake2b_256 :: Nat # type HashInternalContextSize Blake2b_256 :: Nat # Methods hashBlockSize :: Blake2b_256 -> Int # hashDigestSize :: Blake2b_256 -> Int # hashInternalContextSize :: Blake2b_256 -> Int # hashInternalInit :: Ptr (Context Blake2b_256) -> IO () # hashInternalUpdate :: Ptr (Context Blake2b_256) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2b_256) -> Ptr (Digest Blake2b_256) -> IO () #
HashAlgorithm Blake2b_224 # |
Instance details Defined in Crypto.Hash.Blake2b Associated Types type HashBlockSize Blake2b_224 :: Nat # type HashDigestSize Blake2b_224 :: Nat # type HashInternalContextSize Blake2b_224 :: Nat # Methods hashBlockSize :: Blake2b_224 -> Int # hashDigestSize :: Blake2b_224 -> Int # hashInternalContextSize :: Blake2b_224 -> Int # hashInternalInit :: Ptr (Context Blake2b_224) -> IO () # hashInternalUpdate :: Ptr (Context Blake2b_224) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2b_224) -> Ptr (Digest Blake2b_224) -> IO () #
HashAlgorithm Blake2b_160 # |
Instance details Defined in Crypto.Hash.Blake2b Associated Types type HashBlockSize Blake2b_160 :: Nat # type HashDigestSize Blake2b_160 :: Nat # type HashInternalContextSize Blake2b_160 :: Nat # Methods hashBlockSize :: Blake2b_160 -> Int # hashDigestSize :: Blake2b_160 -> Int # hashInternalContextSize :: Blake2b_160 -> Int # hashInternalInit :: Ptr (Context Blake2b_160) -> IO () # hashInternalUpdate :: Ptr (Context Blake2b_160) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context Blake2b_160) -> Ptr (Digest Blake2b_160) -> IO () #
(IsDivisibleBy8 bitlen, KnownNat bitlen) => HashAlgorithm (SHAKE256 bitlen) # |
Instance details Defined in Crypto.Hash.SHAKE Associated Types type HashBlockSize (SHAKE256 bitlen) :: Nat # type HashDigestSize (SHAKE256 bitlen) :: Nat # type HashInternalContextSize (SHAKE256 bitlen) :: Nat # Methods hashBlockSize :: SHAKE256 bitlen -> Int # hashDigestSize :: SHAKE256 bitlen -> Int # hashInternalContextSize :: SHAKE256 bitlen -> Int # hashInternalInit :: Ptr (Context (SHAKE256 bitlen)) -> IO () # hashInternalUpdate :: Ptr (Context (SHAKE256 bitlen)) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context (SHAKE256 bitlen)) -> Ptr (Digest (SHAKE256 bitlen)) -> IO () #
(IsDivisibleBy8 bitlen, KnownNat bitlen) => HashAlgorithm (SHAKE128 bitlen) # |
Instance details Defined in Crypto.Hash.SHAKE Associated Types type HashBlockSize (SHAKE128 bitlen) :: Nat # type HashDigestSize (SHAKE128 bitlen) :: Nat # type HashInternalContextSize (SHAKE128 bitlen) :: Nat # Methods hashBlockSize :: SHAKE128 bitlen -> Int # hashDigestSize :: SHAKE128 bitlen -> Int # hashInternalContextSize :: SHAKE128 bitlen -> Int # hashInternalInit :: Ptr (Context (SHAKE128 bitlen)) -> IO () # hashInternalUpdate :: Ptr (Context (SHAKE128 bitlen)) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context (SHAKE128 bitlen)) -> Ptr (Digest (SHAKE128 bitlen)) -> IO () #
(IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 512) => HashAlgorithm (Blake2bp bitlen) # |
Instance details Defined in Crypto.Hash.Blake2 Associated Types type HashBlockSize (Blake2bp bitlen) :: Nat # type HashDigestSize (Blake2bp bitlen) :: Nat # type HashInternalContextSize (Blake2bp bitlen) :: Nat # Methods hashBlockSize :: Blake2bp bitlen -> Int # hashDigestSize :: Blake2bp bitlen -> Int # hashInternalContextSize :: Blake2bp bitlen -> Int # hashInternalInit :: Ptr (Context (Blake2bp bitlen)) -> IO () # hashInternalUpdate :: Ptr (Context (Blake2bp bitlen)) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context (Blake2bp bitlen)) -> Ptr (Digest (Blake2bp bitlen)) -> IO () #
(IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 256) => HashAlgorithm (Blake2sp bitlen) # |
Instance details Defined in Crypto.Hash.Blake2 Associated Types type HashBlockSize (Blake2sp bitlen) :: Nat # type HashDigestSize (Blake2sp bitlen) :: Nat # type HashInternalContextSize (Blake2sp bitlen) :: Nat # Methods hashBlockSize :: Blake2sp bitlen -> Int # hashDigestSize :: Blake2sp bitlen -> Int # hashInternalContextSize :: Blake2sp bitlen -> Int # hashInternalInit :: Ptr (Context (Blake2sp bitlen)) -> IO () # hashInternalUpdate :: Ptr (Context (Blake2sp bitlen)) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context (Blake2sp bitlen)) -> Ptr (Digest (Blake2sp bitlen)) -> IO () #
(IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 512) => HashAlgorithm (Blake2b bitlen) # |
Instance details Defined in Crypto.Hash.Blake2 Associated Types type HashBlockSize (Blake2b bitlen) :: Nat # type HashDigestSize (Blake2b bitlen) :: Nat # type HashInternalContextSize (Blake2b bitlen) :: Nat # Methods hashBlockSize :: Blake2b bitlen -> Int # hashDigestSize :: Blake2b bitlen -> Int # hashInternalContextSize :: Blake2b bitlen -> Int # hashInternalInit :: Ptr (Context (Blake2b bitlen)) -> IO () # hashInternalUpdate :: Ptr (Context (Blake2b bitlen)) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context (Blake2b bitlen)) -> Ptr (Digest (Blake2b bitlen)) -> IO () #
(IsDivisibleBy8 bitlen, KnownNat bitlen, IsAtLeast bitlen 8, IsAtMost bitlen 256) => HashAlgorithm (Blake2s bitlen) # |
Instance details Defined in Crypto.Hash.Blake2 Associated Types type HashBlockSize (Blake2s bitlen) :: Nat # type HashDigestSize (Blake2s bitlen) :: Nat # type HashInternalContextSize (Blake2s bitlen) :: Nat # Methods hashBlockSize :: Blake2s bitlen -> Int # hashDigestSize :: Blake2s bitlen -> Int # hashInternalContextSize :: Blake2s bitlen -> Int # hashInternalInit :: Ptr (Context (Blake2s bitlen)) -> IO () # hashInternalUpdate :: Ptr (Context (Blake2s bitlen)) -> Ptr Word8 -> Word32 -> IO () # hashInternalFinalize :: Ptr (Context (Blake2s bitlen)) -> Ptr (Digest (Blake2s bitlen)) -> IO () #

data MutableContext a #

A Mutable hash context

Instances

ByteArrayAccess (MutableContext a) # |
Instance details Defined in Crypto.Hash.IO Methods length :: MutableContext a -> Int # withByteArray :: MutableContext a -> (Ptr p -> IO a0) -> IO a0 # copyByteArrayToPtr :: MutableContext a -> Ptr p -> IO () #

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

Create a new mutable hash context.

the algorithm used is automatically determined from the return constraint.

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

Create a new mutable hash context.

The algorithm is explicitely passed as parameter

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

Update a mutable hash context in place

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

Finalize a mutable hash context and compute a digest

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

Reset the mutable context to the initial state of the hash