Crypto.MAC.HMAC

cryptonite-0.13: Cryptography Primitives sink

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

Crypto.MAC.HMAC

Contents

- incremental

Description

provide the HMAC (Hash based Message Authentification Code) base algorithm. http://en.wikipedia.org/wiki/HMAC

Synopsis

- hmac :: (ByteArrayAccess key, ByteArrayAccess message, HashAlgorithm a) => key -> message -> HMAC a
- newtype HMAC a = HMAC {
  - hmacGetDigest :: Digest a
  }
- data Context hashalg = Context !(Context hashalg) !(Context hashalg)
- initialize :: (ByteArrayAccess key, HashAlgorithm a) => key -> Context a
- update :: (ByteArrayAccess message, HashAlgorithm a) => Context a -> message -> Context a
- updates :: (ByteArrayAccess message, HashAlgorithm a) => Context a -> [message] -> Context a
- finalize :: HashAlgorithm a => Context a -> HMAC a

# Documentation

hmac

Arguments

:: (ByteArrayAccess key, ByteArrayAccess message, HashAlgorithm a) |
=> key | Secret key
-> message | Message to MAC
-> HMAC a |

compute a MAC using the supplied hashing function

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) |
ByteArrayAccess (HMAC a) |

# incremental

data Context hashalg

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

Constructors

Context !(Context hashalg) !(Context hashalg) |

initialize

Arguments

:: (ByteArrayAccess key, HashAlgorithm a) |
=> key | Secret key
-> Context a |

Initialize a new incremental HMAC context

update

Arguments

:: (ByteArrayAccess message, HashAlgorithm a) |
=> Context a | Current HMAC context
-> message | Message to append to the MAC
-> Context a | Updated HMAC context

Incrementally update a HMAC context

updates

Arguments

:: (ByteArrayAccess message, HashAlgorithm a) |
=> Context a | Current HMAC context
-> [message] | Messages to append to the MAC
-> Context a | Updated HMAC context

Increamentally update a HMAC context with multiple inputs

finalize :: HashAlgorithm a => Context a -> HMAC a

Finalize a HMAC context and return the HMAC.