cryptonite-0.27: Cryptography Primitives sink
License BSD-style
Maintainer Olivier Chéron <olivier.cheron@gmail.com>
Stability experimental
Portability unknown
Safe Haskell None
Language Haskell2010

Crypto.MAC.KMAC

Contents

Description

Provide the KMAC (Keccak Message Authentication Code) algorithm, derived from the SHA-3 base algorithm Keccak and defined in NIST SP800-185.

Synopsis

Documentation

class HashAlgorithm a => HashSHAKE a Source #

Type class of SHAKE algorithms.

Minimal complete definition

cshakeInternalFinalize, cshakeOutputLength

kmac :: ( HashSHAKE a, ByteArrayAccess string, ByteArrayAccess key, ByteArrayAccess ba) => string -> key -> ba -> KMAC a Source #

Compute a KMAC using the supplied customization string and key.

newtype KMAC a Source #

Represent a KMAC 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.

Constructors

KMAC

Incremental

data Context a Source #

Represent an ongoing KMAC state, that can be appended with update and finalized to a KMAC with finalize .

initialize :: forall a string key. ( HashSHAKE a, ByteArrayAccess string, ByteArrayAccess key) => string -> key -> Context a Source #

Initialize a new incremental KMAC context with the supplied customization string and key.

update :: ( HashSHAKE a, ByteArrayAccess ba) => Context a -> ba -> Context a Source #

Incrementally update a KMAC context.

updates :: ( HashSHAKE a, ByteArrayAccess ba) => Context a -> [ba] -> Context a Source #

Incrementally update a KMAC context with multiple inputs.

finalize :: forall a. HashSHAKE a => Context a -> KMAC a Source #

Finalize a KMAC context and return the KMAC.