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

LicenseBSD-style
MaintainerVincent Hanquez <vincent@snarc.org>
Stabilityexperimental
Portabilityunknown
Safe HaskellTrustworthy
LanguageHaskell98

Crypto.Hash

Contents

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

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 Whirlpool Source

Whirlpool cryptographic hash

HashAlgorithm Skein512_224 Source

Skein512 (224 bits version) cryptographic hash

HashAlgorithm Skein512_256 Source

Skein512 (256 bits version) cryptographic hash

HashAlgorithm Skein512_384 Source

Skein512 (384 bits version) cryptographic hash

HashAlgorithm Skein512_512 Source

Skein512 (512 bits version) cryptographic hash

HashAlgorithm Skein256_224 Source

Skein256 (224 bits version) cryptographic hash

HashAlgorithm Skein256_256 Source

Skein256 (256 bits version) cryptographic hash

HashAlgorithm Tiger Source

Tiger cryptographic hash

HashAlgorithm RIPEMD160 Source

RIPEMD160 cryptographic hash

HashAlgorithm SHA3_224 Source

SHA3 (224 bits version) cryptographic hash

HashAlgorithm SHA3_256 Source

SHA3 (256 bits version) cryptographic hash

HashAlgorithm SHA3_384 Source

SHA3 (384 bits version) cryptographic hash

HashAlgorithm SHA3_512 Source

SHA3 (512 bits version) cryptographic hash

HashAlgorithm SHA512 Source

SHA512 cryptographic hash

HashAlgorithm SHA384 Source

SHA384 cryptographic hash

HashAlgorithm SHA256 Source

SHA256 cryptographic hash

HashAlgorithm SHA224 Source

SHA224 cryptographic hash

HashAlgorithm SHA1 Source

SHA1 cryptographic hash

HashAlgorithm MD5 Source

MD5 cryptographic hash

HashAlgorithm MD4 Source

MD4 cryptographic hash

HashAlgorithm MD2 Source

MD2 cryptographic hash

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

data Digest a Source

Represent a digest for a given hash algorithm.

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

MD2 cryptographic hash algorithm

Constructors

MD2 

Instances

Show MD2 
HashAlgorithm MD2 
HashAlgorithm MD2 Source

MD2 cryptographic hash

data MD4 :: *

MD4 cryptographic hash algorithm

Constructors

MD4 

Instances

Show MD4 
HashAlgorithm MD4 
HashAlgorithm MD4 Source

MD4 cryptographic hash

data MD5 :: *

MD5 cryptographic hash algorithm

Constructors

MD5 

Instances

Show MD5 
HashAlgorithm MD5 
HashAlgorithm MD5 Source

MD5 cryptographic hash

data SHA1 :: *

SHA1 cryptographic hash algorithm

Constructors

SHA1 

Instances

data SHA224 :: *

SHA224 cryptographic hash algorithm

Constructors

SHA224 

Instances

data SHA256 :: *

SHA256 cryptographic hash algorithm

Constructors

SHA256 

Instances

data SHA384 :: *

SHA384 cryptographic hash algorithm

Constructors

SHA384 

Instances

data SHA512 :: *

SHA512 cryptographic hash algorithm

Constructors

SHA512 

Instances

data RIPEMD160 :: *

RIPEMD160 cryptographic hash algorithm

Constructors

RIPEMD160 

Instances

data Tiger :: *

Tiger cryptographic hash algorithm

Constructors

Tiger 

Instances

data SHA3_224 :: *

SHA3 (224 bits) cryptographic hash algorithm

Constructors

SHA3_224 

Instances

Show SHA3_224 
HashAlgorithm SHA3_224 
HashAlgorithm SHA3_224 Source

SHA3 (224 bits version) cryptographic hash

data SHA3_256 :: *

SHA3 (256 bits) cryptographic hash algorithm

Constructors

SHA3_256 

Instances

Show SHA3_256 
HashAlgorithm SHA3_256 
HashAlgorithm SHA3_256 Source

SHA3 (256 bits version) cryptographic hash

data SHA3_384 :: *

SHA3 (384 bits) cryptographic hash algorithm

Constructors

SHA3_384 

Instances

Show SHA3_384 
HashAlgorithm SHA3_384 
HashAlgorithm SHA3_384 Source

SHA3 (384 bits version) cryptographic hash

data SHA3_512 :: *

SHA3 (512 bits) cryptographic hash algorithm

Constructors

SHA3_512 

Instances

Show SHA3_512 
HashAlgorithm SHA3_512 
HashAlgorithm SHA3_512 Source

SHA3 (512 bits version) cryptographic hash

data Skein256_224 :: *

Skein256 (224 bits) cryptographic hash algorithm

Constructors

Skein256_224 

Instances

Show Skein256_224 
HashAlgorithm Skein256_224 
HashAlgorithm Skein256_224 Source

Skein256 (224 bits version) cryptographic hash

data Skein256_256 :: *

Skein256 (256 bits) cryptographic hash algorithm

Constructors

Skein256_256 

Instances

Show Skein256_256 
HashAlgorithm Skein256_256 
HashAlgorithm Skein256_256 Source

Skein256 (256 bits version) cryptographic hash

data Skein512_224 :: *

Skein512 (224 bits) cryptographic hash algorithm

Constructors

Skein512_224 

Instances

Show Skein512_224 
HashAlgorithm Skein512_224 
HashAlgorithm Skein512_224 Source

Skein512 (224 bits version) cryptographic hash

data Skein512_256 :: *

Skein512 (256 bits) cryptographic hash algorithm

Constructors

Skein512_256 

Instances

Show Skein512_256 
HashAlgorithm Skein512_256 
HashAlgorithm Skein512_256 Source

Skein512 (256 bits version) cryptographic hash

data Skein512_384 :: *

Skein512 (384 bits) cryptographic hash algorithm

Constructors

Skein512_384 

Instances

Show Skein512_384 
HashAlgorithm Skein512_384 
HashAlgorithm Skein512_384 Source

Skein512 (384 bits version) cryptographic hash

data Skein512_512 :: *

Skein512 (512 bits) cryptographic hash algorithm

Constructors

Skein512_512 

Instances

Show Skein512_512 
HashAlgorithm Skein512_512 
HashAlgorithm Skein512_512 Source

Skein512 (512 bits version) cryptographic hash

data Whirlpool :: *

Whirlpool cryptographic hash algorithm

Constructors

Whirlpool 

Instances

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

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