nettle-0.1.1: safe nettle binding

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/

Synopsis

- class UMAC u where
  - umacDigestSize :: Tagged u Int
  - umacName :: Tagged u String
  - umacInit :: ByteString -> u
  - umacSetNonce :: u -> ByteString -> u
  - umacUpdate :: u -> ByteString -> u
  - umacUpdateLazy :: u -> ByteString -> u
  - umacFinalize :: u -> (ByteString, u)
- data UMAC32
- data UMAC64
- data UMAC96
- data UMAC128
- umacInitKeyedHash :: (UMAC u, KeyedHashAlgorithm u) => ByteString -> ByteString -> Tagged u KeyedHash

# Documentation

class UMAC u where Source

`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)

umacInit Source

Arguments

:: ByteString | `key` argument
-> u |

initialize a new context from a `key` with a zero `nonce`

umacSetNonce Source

Arguments

:: u |
-> ByteString | `nonce` argument
-> u |

set a `nonce`; can be called anytime before producing the digest

umacUpdate Source

Arguments

:: u |
-> ByteString | `message` argument
-> u |

append `message` data to be hashed

umacUpdateLazy Source

Arguments

:: u |
-> ByteString | `message` argument
-> u |

append lazy `message` data to be hashed

umacFinalize :: u -> (ByteString, u) Source

produce a digest, and return a new state with incremented nonce

Instances

UMAC UMAC128 Source |
UMAC UMAC96 Source |
UMAC UMAC64 Source |
UMAC UMAC32 Source |

data UMAC32 Source

`UMAC32` is the 32-bit (4 byte) digest variant. See `umacInitKeyedHash` for the `KeyedHashAlgorithm` instance.

Instances

KeyedHashAlgorithm UMAC32 Source |
UMAC UMAC32 Source |

data UMAC64 Source

`UMAC64` is the 32-bit (4 byte) digest variant. See `umacInitKeyedHash` for the `KeyedHashAlgorithm` instance.

Instances

KeyedHashAlgorithm UMAC64 Source |
UMAC UMAC64 Source |

data UMAC96 Source

`UMAC96` is the 32-bit (4 byte) digest variant. See `umacInitKeyedHash` for the `KeyedHashAlgorithm` instance.

Instances

KeyedHashAlgorithm UMAC96 Source |
UMAC UMAC96 Source |

data UMAC128 Source

`UMAC128` is the 32-bit (4 byte) digest variant. See `umacInitKeyedHash` for the `KeyedHashAlgorithm` instance.

Instances

KeyedHashAlgorithm UMAC128 Source |
UMAC UMAC128 Source |

umacInitKeyedHash Source

Arguments

:: (UMAC u, KeyedHashAlgorithm u) |
=> ByteString | `key` argument
-> ByteString | `nonce` argument
-> 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.