cryptohash-0.11.9: 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.MAC

Contents

- MAC algorithms
  - Incremental MAC algorithms

Description

Crypto hash generic MAC (Message Authentification Code) module

Synopsis

- newtype HMAC a = HMAC {
  - hmacGetDigest :: Digest a
  }
- hmac :: HashAlgorithm a => ByteString -> ByteString -> HMAC a
- hmacAlg :: HashAlgorithm a => a -> ByteString -> ByteString -> HMAC a
- data HMACContext hashalg
- hmacInit :: HashAlgorithm a => ByteString -> HMACContext a
- hmacInitAlg :: HashAlgorithm a => a -> ByteString -> HMACContext a
- hmacUpdate :: HashAlgorithm a => HMACContext a -> ByteString -> HMACContext a
- hmacFinalize :: HashAlgorithm a => HMACContext a -> HMAC a

# 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 hmacGetDigest :: Digest a

Instances

Eq (HMAC a) # |
Methods (==) :: HMAC a -> HMAC a -> Bool # (/=) :: HMAC a -> HMAC a -> Bool #
Byteable (HMAC a) # |
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

## Incremental MAC algorithms

data HMACContext hashalg #

Represent an ongoing HMAC state, that can be appended with `hmacUpdate` and finalize to an HMAC with `hmacFinalize`

hmacInit #

Arguments

:: HashAlgorithm a |
=> ByteString | Secret key
-> HMACContext a |

Initialize a new incremental HMAC context

hmacInitAlg #

Arguments

:: HashAlgorithm a |
=> a | the hash algorithm the actual value is unused.
-> ByteString | Secret key
-> HMACContext a |

Initialize a new incremental HMAC context with a given hash algorithm.

hmacUpdate #

Arguments

:: HashAlgorithm a |
=> HMACContext a |
-> ByteString | Message to Mac
-> HMACContext a |

Incrementally update a HMAC context

hmacFinalize :: HashAlgorithm a => HMACContext a -> HMAC a #

Finalize a HMAC context and return the HMAC.