License | BSD-style |
---|---|
Maintainer | Vincent Hanquez <vincent@snarc.org> |
Stability | experimental |
Portability | unknown |
Safe Haskell | None |
Language | Haskell2010 |
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
:: (ByteArrayAccess key, ByteArrayAccess message, HashAlgorithm a) | |
=> key | Secret key |
-> message | Message to MAC |
-> HMAC a |
compute a MAC using the supplied hashing function
Represent an HMAC that is a phantom type with the hash used to produce the mac.
The Eq instance is constant time. No Show instance is provided, to avoid printing by mistake.
HMAC | |
|
Instances
Incremental
Represent an ongoing HMAC state, that can be appended with update
and finalize to an HMAC with hmacFinalize
:: (ByteArrayAccess key, HashAlgorithm a) | |
=> key | Secret key |
-> Context a |
Initialize a new incremental HMAC context
:: (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
:: (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.