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

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

Crypto.Hash

Contents

Description

Crypto hash main module

Synopsis

Types

class HashAlgorithm a where #

Class representing hashing algorithms.

The hash algorithm is built over 3 primitives:

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

Methods

hashBlockSize :: Context a -> Int #

Block size in bytes the hash algorithm operates on

hashInit :: Context a #

Initialize a new context for this hash algorithm

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

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

hashFinalize :: Context a -> Digest a #

Finalize a context and return a digest.

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

Try to convert a binary digest bytestring to a digest.

Instances
HashAlgorithm Skein512_512 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm Skein512_384 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm Skein512_256 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm Skein512_224 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm Skein256_256 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm Skein256_224 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA3_512 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA3_384 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA3_256 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA3_224 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm Tiger # 
Instance details

Defined in Crypto.Hash

HashAlgorithm Whirlpool # 
Instance details

Defined in Crypto.Hash

HashAlgorithm RIPEMD160 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA512 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA384 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA256 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA224 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm SHA1 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm MD5 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm MD4 # 
Instance details

Defined in Crypto.Hash

HashAlgorithm MD2 # 
Instance details

Defined in Crypto.Hash

type HashFunctionBS a = ByteString -> Digest a #

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

type HashFunctionLBS a = ByteString -> Digest a #

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

data Context a #

Represent a context for a given hash algorithm.

Instances
Byteable (Context a) # 
Instance details

Defined in Crypto.Hash.Types

Methods

toBytes :: Context a -> ByteString #

byteableLength :: Context a -> Int #

withBytePtr :: Context a -> (Ptr Word8 -> IO b) -> IO b #

data Digest a #

Represent a digest for a given hash algorithm.

Instances
Eq (Digest a) # 
Instance details

Defined in Crypto.Hash.Types

Methods

(==) :: Digest a -> Digest a -> Bool #

(/=) :: Digest a -> Digest a -> Bool #

Ord (Digest a) # 
Instance details

Defined in Crypto.Hash.Types

Methods

compare :: Digest a -> Digest a -> Ordering #

(<) :: Digest a -> Digest a -> Bool #

(<=) :: Digest a -> Digest a -> Bool #

(>) :: Digest a -> Digest a -> Bool #

(>=) :: Digest a -> Digest a -> Bool #

max :: Digest a -> Digest a -> Digest a #

min :: Digest a -> Digest a -> Digest a #

Show (Digest a) # 
Instance details

Defined in Crypto.Hash.Types

Methods

showsPrec :: Int -> Digest a -> ShowS #

show :: Digest a -> String #

showList :: [Digest a] -> ShowS #

Byteable (Digest a) # 
Instance details

Defined in Crypto.Hash.Types

Methods

toBytes :: Digest a -> ByteString #

byteableLength :: Digest a -> Int #

withBytePtr :: Digest a -> (Ptr Word8 -> IO b) -> IO b #

Functions

digestToByteString :: Digest a -> ByteString #

Deprecated: use toBytes from byteable:Data.Byteable

return the binary bytestring. deprecated use toBytes.

digestToHexByteString :: Digest a -> ByteString #

Return the hexadecimal (base16) bytestring of the digest

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

Hash a strict bytestring into a digest.

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

Hash a lazy bytestring into a digest.

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

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

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

Initialize a new context for a specified hash algorithm

hash algorithms

data MD2 #

MD2 cryptographic hash

Constructors

MD2 
Instances
Show MD2 # 
Instance details

Defined in Crypto.Hash

Methods

showsPrec :: Int -> MD2 -> ShowS #

show :: MD2 -> String #

showList :: [MD2] -> ShowS #

HashAlgorithm MD2 # 
Instance details

Defined in Crypto.Hash

data MD4 #

MD4 cryptographic hash

Constructors

MD4 
Instances
Show MD4 # 
Instance details

Defined in Crypto.Hash

Methods

showsPrec :: Int -> MD4 -> ShowS #

show :: MD4 -> String #

showList :: [MD4] -> ShowS #

HashAlgorithm MD4 # 
Instance details

Defined in Crypto.Hash

data MD5 #

MD5 cryptographic hash

Constructors

MD5 
Instances
Show MD5 # 
Instance details

Defined in Crypto.Hash

Methods

showsPrec :: Int -> MD5 -> ShowS #

show :: MD5 -> String #

showList :: [MD5] -> ShowS #

HashAlgorithm MD5 # 
Instance details

Defined in Crypto.Hash

data SHA1 #

SHA1 cryptographic hash

Constructors

SHA1 

data SHA224 #

SHA224 cryptographic hash

Constructors

SHA224 

data SHA256 #

SHA256 cryptographic hash

Constructors

SHA256 

data SHA384 #

SHA384 cryptographic hash

Constructors

SHA384 

data SHA512 #

SHA512 cryptographic hash

Constructors

SHA512 

data Tiger #

Tiger cryptographic hash

Constructors

Tiger 

data SHA3_224 #

SHA3 (224 bits version) cryptographic hash

Constructors

SHA3_224 

data SHA3_256 #

SHA3 (256 bits version) cryptographic hash

Constructors

SHA3_256 

data SHA3_384 #

SHA3 (384 bits version) cryptographic hash

Constructors

SHA3_384 

data SHA3_512 #

SHA3 (512 bits version) cryptographic hash

Constructors

SHA3_512 

MAC algorithms

newtype HMAC a #

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

Instances
Eq (HMAC a) # 
Instance details

Defined in Crypto.Hash

Methods

(==) :: HMAC a -> HMAC a -> Bool #

(/=) :: HMAC a -> HMAC a -> Bool #

Byteable (HMAC a) # 
Instance details

Defined in Crypto.Hash

Methods

toBytes :: HMAC a -> ByteString #

byteableLength :: HMAC a -> Int #

withBytePtr :: HMAC a -> (Ptr Word8 -> IO b) -> IO b #

hmac #

Arguments

:: HashAlgorithm a 
=> ByteString

Secret key

-> ByteString

Message to MAC

-> HMAC a 

compute a MAC using the supplied hashing function

hmacAlg #

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