| Copyright | (c) 2013 Stefan Bühler |
|---|---|
| License | MIT-style (see the file COPYING) |
| Maintainer | stbuehler@web.de |
| Stability | experimental |
| Portability | portable |
| Safe Haskell | None |
| Language | Haskell98 |
Crypto.Nettle.UMAC
Description
This module exports the UMAC algorithms supported by nettle: http://www.lysator.liu.se/~nisse/nettle/
- class UMAC u where
- data UMAC32
- data UMAC64
- data UMAC96
- data UMAC128
- umacInitKeyedHash :: (UMAC u, KeyedHashAlgorithm u) => B.ByteString -> B.ByteString -> Tagged u KeyedHash
Documentation
UMAC is a class of keyed hash algorithms that take an additional nonce.
Keys for UMAC are always 16 bytes; there are different digest sizes: 4, 8, 12 and 16 bytes (32, 64, 96 and 128 bits),
and the variants are named after the digest length in bits.
On initialization the nonce is set to 0; each finalize returns a new state with an incremented nonce. The nonce is interpreted as 16-byte (128-bit) big-endian integer (and for string shorter than 16 bytes padded with zeroes on the left; setting empty nonces is not allowed).
Minimal complete definition
umacDigestSize, umacInit, umacSetNonce, umacUpdate, umacFinalize
Methods
umacDigestSize :: Tagged u Int Source #
digest size in bytes
umacName :: Tagged u String Source #
umac name (UMAC ++ digest size in bits)
Arguments
| :: B.ByteString |
|
| -> u |
initialize a new context from a key with a zero nonce
Arguments
| :: u | |
| -> B.ByteString |
|
| -> u |
set a nonce; can be called anytime before producing the digest
Arguments
| :: u | |
| -> B.ByteString |
|
| -> u |
append message data to be hashed
Arguments
| :: u | |
| -> L.ByteString |
|
| -> u |
append lazy message data to be hashed
umacFinalize :: u -> (B.ByteString, u) Source #
produce a digest, and return a new state with incremented nonce
UMAC32 is the 32-bit (4 byte) digest variant. See umacInitKeyedHash for the KeyedHashAlgorithm instance.
UMAC64 is the 64-bit (8 byte) digest variant. See umacInitKeyedHash for the KeyedHashAlgorithm instance.
UMAC96 is the 96-bit (12 byte) digest variant. See umacInitKeyedHash for the KeyedHashAlgorithm instance.
UMAC128 is the 128-bit (16 byte) digest variant. See umacInitKeyedHash for the KeyedHashAlgorithm instance.
Arguments
| :: (UMAC u, KeyedHashAlgorithm u) | |
| => B.ByteString |
|
| -> B.ByteString |
|
| -> Tagged u KeyedHash |
The default KeyedHash generated for UMAC KeyedHashAlgorithm instances use a zero nonce; to set a different nonce you need to use this initialization function (or use the UMAC interface).
Once the UMAC lives as KeyedHash the nonce cannot be changed anymore, as KeyedHash hides all internal state.