nettle-0.1.0: safe nettle binding

Portabilityportable
Stabilityexperimental
Maintainerstbuehler@web.de
Safe HaskellNone

Crypto.Nettle.UMAC

Description

This module exports the UMAC algorithms supported by nettle: http://www.lysator.liu.se/~nisse/nettle/

Synopsis

Documentation

class UMAC u whereSource

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

Methods

umacDigestSize :: Tagged u IntSource

digest size in bytes

umacName :: Tagged u StringSource

umac name (UMAC ++ digest size in bits)

umacInitSource

Arguments

:: B.ByteString

key argument

-> u 

initialize a new context from a key with a zero nonce

umacSetNonceSource

Arguments

:: u 
-> B.ByteString

nonce argument

-> u 

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

umacUpdateSource

Arguments

:: u 
-> B.ByteString

message argument

-> u 

append message data to be hashed

umacUpdateLazySource

Arguments

:: u 
-> L.ByteString

message argument

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

data UMAC32 Source

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

data UMAC64 Source

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

data UMAC96 Source

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

data UMAC128 Source

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

umacInitKeyedHashSource

Arguments

:: (UMAC u, KeyedHashAlgorithm u) 
=> B.ByteString

key argument

-> B.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.