cryptonite-0.10: 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
  - hashBlockSize :: a -> Int
  - hashDigestSize :: a -> Int
  - hashInternalContextSize :: a -> Int
  - hashInternalInit :: Ptr (Context a) -> IO ()
  - hashInternalUpdate :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
  - hashInternalFinalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
- 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 :: HashAlgorithm a => MutableContext a -> IO (Digest a)
- hashMutableReset :: HashAlgorithm a => MutableContext a -> IO ()

# 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.

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

HashAlgorithm Blake2s_256 Source |
HashAlgorithm Blake2sp_256 Source |
HashAlgorithm Blake2b_512 Source |
HashAlgorithm Blake2bp_512 Source |
HashAlgorithm MD2 Source |
HashAlgorithm MD4 Source |
HashAlgorithm MD5 Source |
HashAlgorithm SHA1 Source |
HashAlgorithm SHA224 Source |
HashAlgorithm SHA256 Source |
HashAlgorithm SHA384 Source |
HashAlgorithm SHA512 Source |
HashAlgorithm SHA512t_256 Source |
HashAlgorithm SHA512t_224 Source |
HashAlgorithm SHA3_512 Source |
HashAlgorithm SHA3_384 Source |
HashAlgorithm SHA3_256 Source |
HashAlgorithm SHA3_224 Source |
HashAlgorithm Keccak_512 Source |
HashAlgorithm Keccak_384 Source |
HashAlgorithm Keccak_256 Source |
HashAlgorithm Keccak_224 Source |
HashAlgorithm RIPEMD160 Source |
HashAlgorithm Tiger Source |
HashAlgorithm Skein256_256 Source |
HashAlgorithm Skein256_224 Source |
HashAlgorithm Skein512_512 Source |
HashAlgorithm Skein512_384 Source |
HashAlgorithm Skein512_256 Source |
HashAlgorithm Skein512_224 Source |
HashAlgorithm Whirlpool Source |

data MutableContext a Source

A Mutable hash context

Instances

ByteArrayAccess (MutableContext a) Source |

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