cryptohash-0.11.6: collection of crypto hashes, fast, pure and practical

License | BSD-style
Maintainer | Vincent Hanquez <vincent@snarc.org>
Stability | experimental
Portability | unknown
Safe Haskell | Trustworthy
Language | Haskell98

Crypto.Hash

Contents

- Types
- Functions
- hash algorithms
- MAC algorithms

Description

Generalized cryptographic hash interface, that you can use with cryptographic hash algorithm that belong to the HashAlgorithm type class.

    import Crypto.Hash

    sha1 :: ByteString -> Digest SHA1
    sha1 = hash

    hexSha3_512 :: ByteString -> String
    hexSha3_512 bs = show (hash bs :: Digest SHA3_512)

Synopsis

- class HashAlgorithm a where
  - hashBlockSize :: Context a -> Int
  - hashInit :: Context a
  - hashUpdates :: Context a -> [ByteString] -> Context a
  - hashFinalize :: Context a -> Digest a
  - digestFromByteString :: ByteString -> Maybe (Digest a)
- type HashFunctionBS a = ByteString -> Digest a
- type HashFunctionLBS a = ByteString -> Digest a
- data Context a
- data Digest a
- digestToByteString :: Digest a -> ByteString
- digestToHexByteString :: Digest a -> ByteString
- hash :: HashAlgorithm a => ByteString -> Digest a
- hashlazy :: HashAlgorithm a => ByteString -> Digest a
- hashUpdate :: HashAlgorithm a => Context a -> ByteString -> Context a
- hashInitAlg :: HashAlgorithm alg => alg -> Context alg
- data MD2 = MD2
- data MD4 = MD4
- data MD5 = MD5
- data SHA1 = SHA1
- data SHA224 = SHA224
- data SHA256 = SHA256
- data SHA384 = SHA384
- data SHA512 = SHA512
- data RIPEMD160 = RIPEMD160
- data Tiger = Tiger
- data SHA3_224 = SHA3_224
- data SHA3_256 = SHA3_256
- data SHA3_384 = SHA3_384
- data SHA3_512 = SHA3_512
- data Skein256_224 = Skein256_224
- data Skein256_256 = Skein256_256
- data Skein512_224 = Skein512_224
- data Skein512_256 = Skein512_256
- data Skein512_384 = Skein512_384
- data Skein512_512 = Skein512_512
- data Whirlpool = Whirlpool
- newtype HMAC a = HMAC {
  - hmacGetDigest :: Digest a
  }
- hmac :: HashAlgorithm a => ByteString -> ByteString -> HMAC a
- hmacAlg :: HashAlgorithm a => a -> ByteString -> ByteString -> HMAC a

# Types

class HashAlgorithm a where Source

Class representing hashing algorithms.

The hash algorithm is built over 3 primitives:

- init : create a new hashing context
- updates : update the hashing context with some strict bytestrings and return the new context
- finalize : finalize the context into a digest

Methods

hashBlockSize :: Context a -> Int Source

Block size in bytes the hash algorithm operates on

hashInit :: Context a Source

Initialize a new context for this hash algorithm

hashUpdates :: Context a -> [ByteString] -> Context a Source

Update the context with a list of strict bytestring, and return a new context with the updates.

hashFinalize :: Context a -> Digest a Source

Finalize a context and return a digest.

digestFromByteString :: ByteString -> Maybe (Digest a) Source

Try to convert a binary digest bytestring to a digest.

Instances

HashAlgorithm Skein512_512 Source |
HashAlgorithm Skein512_384 Source |
HashAlgorithm Skein512_256 Source |
HashAlgorithm Skein512_224 Source |
HashAlgorithm Skein256_256 Source |
HashAlgorithm Skein256_224 Source |
HashAlgorithm SHA3_512 Source |
HashAlgorithm SHA3_384 Source |
HashAlgorithm SHA3_256 Source |
HashAlgorithm SHA3_224 Source |
HashAlgorithm Tiger Source |
HashAlgorithm Whirlpool Source |
HashAlgorithm RIPEMD160 Source |
HashAlgorithm SHA512 Source |
HashAlgorithm SHA384 Source |
HashAlgorithm SHA256 Source |
HashAlgorithm SHA224 Source |
HashAlgorithm SHA1 Source |
HashAlgorithm MD5 Source |
HashAlgorithm MD4 Source |
HashAlgorithm MD2 Source |

type HashFunctionBS a = ByteString -> Digest a Source

Alias to a single pass hash function that operate on a strict bytestring

type HashFunctionLBS a = ByteString -> Digest a Source

Alias to a single pass hash function that operate on a lazy bytestring

data Context a Source

Represent a context for a given hash algorithm.

Instances

Byteable (Context a) Source |

data Digest a Source

Represent a digest for a given hash algorithm.

Instances

Eq (Digest a) Source |
Ord (Digest a) Source |
Show (Digest a) Source |
Byteable (Digest a) Source |

# Functions

digestToByteString :: Digest a -> ByteString Source

Deprecated: use toBytes from byteable:Data.Byteable

return the binary bytestring. deprecated use toBytes.

digestToHexByteString :: Digest a -> ByteString Source

Return the hexadecimal (base16) bytestring of the digest

hash :: HashAlgorithm a => ByteString -> Digest a Source

Hash a strict bytestring into a digest.

hashlazy :: HashAlgorithm a => ByteString -> Digest a Source

Hash a lazy bytestring into a digest.

hashUpdate :: HashAlgorithm a => Context a -> ByteString -> Context a Source

run hashUpdates on one single bytestring and return the updated context.

hashInitAlg :: HashAlgorithm alg => alg -> Context alg Source

Initialize a new context for a specified hash algorithm

# hash algorithms

data MD2 Source

MD2 cryptographic hash

Constructors

MD2 |

Instances

Show MD2 Source |
HashAlgorithm MD2 Source |

data MD4 Source

MD4 cryptographic hash

Constructors

MD4 |

Instances

Show MD4 Source |
HashAlgorithm MD4 Source |

data MD5 Source

MD5 cryptographic hash

Constructors

MD5 |

Instances

Show MD5 Source |
HashAlgorithm MD5 Source |

data SHA1 Source

SHA1 cryptographic hash

Constructors

SHA1 |

Instances

Show SHA1 Source |
HashAlgorithm SHA1 Source |

data SHA224 Source

SHA224 cryptographic hash

Constructors

SHA224 |

Instances

Show SHA224 Source |
HashAlgorithm SHA224 Source |

data SHA256 Source

SHA256 cryptographic hash

Constructors

SHA256 |

Instances

Show SHA256 Source |
HashAlgorithm SHA256 Source |

data SHA384 Source

SHA384 cryptographic hash

Constructors

SHA384 |

Instances

Show SHA384 Source |
HashAlgorithm SHA384 Source |

data SHA512 Source

SHA512 cryptographic hash

Constructors

SHA512 |

Instances

Show SHA512 Source |
HashAlgorithm SHA512 Source |

data RIPEMD160 Source

RIPEMD160 cryptographic hash

Constructors

RIPEMD160 |

Instances

Show RIPEMD160 Source |
HashAlgorithm RIPEMD160 Source |

data Tiger Source

Tiger cryptographic hash

Constructors

Tiger |

Instances

Show Tiger Source |
HashAlgorithm Tiger Source |

data SHA3_224 Source

SHA3 (224 bits version) cryptographic hash

Constructors

SHA3_224 |

Instances

Show SHA3_224 Source |
HashAlgorithm SHA3_224 Source |

data SHA3_256 Source

SHA3 (256 bits version) cryptographic hash

Constructors

SHA3_256 |

Instances

Show SHA3_256 Source |
HashAlgorithm SHA3_256 Source |

data SHA3_384 Source

SHA3 (384 bits version) cryptographic hash

Constructors

SHA3_384 |

Instances

Show SHA3_384 Source |
HashAlgorithm SHA3_384 Source |

data SHA3_512 Source

SHA3 (512 bits version) cryptographic hash

Constructors

SHA3_512 |

Instances

Show SHA3_512 Source |
HashAlgorithm SHA3_512 Source |

data Skein256_224 Source

Skein256 (224 bits version) cryptographic hash

Constructors

Skein256_224 |

Instances

Show Skein256_224 Source |
HashAlgorithm Skein256_224 Source |

data Skein256_256 Source

Skein256 (256 bits version) cryptographic hash

Constructors

Skein256_256 |

Instances

Show Skein256_256 Source |
HashAlgorithm Skein256_256 Source |

data Skein512_224 Source

Skein512 (224 bits version) cryptographic hash

Constructors

Skein512_224 |

Instances

Show Skein512_224 Source |
HashAlgorithm Skein512_224 Source |

data Skein512_256 Source

Skein512 (256 bits version) cryptographic hash

Constructors

Skein512_256 |

Instances

Show Skein512_256 Source |
HashAlgorithm Skein512_256 Source |

data Skein512_384 Source

Skein512 (384 bits version) cryptographic hash

Constructors

Skein512_384 |

Instances

Show Skein512_384 Source |
HashAlgorithm Skein512_384 Source |

data Skein512_512 Source

Skein512 (512 bits version) cryptographic hash

Constructors

Skein512_512 |

Instances

Show Skein512_512 Source |
HashAlgorithm Skein512_512 Source |

data Whirlpool Source

Whirlpool cryptographic hash

Constructors

Whirlpool |

Instances

Show Whirlpool Source |
HashAlgorithm Whirlpool Source |

# MAC algorithms

newtype HMAC a Source

Represent an HMAC that is a phantom type with the hash used to produce the mac.

The Eq instance is constant time.

Constructors

HMAC |

Fields

hmacGetDigest :: Digest a

Instances

Eq (HMAC a) Source |
Byteable (HMAC a) Source |

hmac Source

Arguments

:: HashAlgorithm a |
=> ByteString | Secret key
-> ByteString | Message to MAC
-> HMAC a |

compute a MAC using the supplied hashing function

hmacAlg Source

Arguments

:: HashAlgorithm a |
=> a | the hash algorithm the actual value is unused.
-> ByteString | Secret key
-> ByteString | Message to MAC
-> HMAC a |

compute a HMAC using a specified algorithm