nettle-0.1.0: safe nettle binding

Portabilityportable
Stabilityexperimental
Maintainerstbuehler@web.de
Safe HaskellSafe-Inferred

Crypto.Nettle.HMAC

Description

Generic HMAC implementation based on the HashAlgorithm class, implementing the KeyedHashAlgorithm class.

Synopsis

Documentation

data HMAC a Source

HMAC is a generic KeyedHashAlgorithm instance to calculate the HMAC based on a HashAlgorithm

hmacInitSource

Arguments

:: HashAlgorithm a 
=> ByteString

key argument

-> Tagged a KeyedHash 

hmacInit is the default implementation for hashHMAC and initializes a KeyedHash to calculate the HMAC for a message with the given key.

Example:

 let c = untag (hmacInit (fromString "secretkey") :: Tagged SHA256 KeyedHash) in keyedHashFinalize $ keyedHashUpdate c (fromString "secret message")

hmacInit' :: HashAlgorithm a => a -> ByteString -> KeyedHashSource

Untagged variant of hmacInit; takes a (possible undefined) typed HashAlgorithm context as parameter.

Example:

 keyedHashFinalize $ flip keyedHashUpdate (fromString "secret message") $ hmacInit' (undefined :: SHA256) (fromString "secretkey")

hmacSource

Arguments

:: HashAlgorithm a 
=> ByteString

key argument

-> ByteString

message argument

-> Tagged a ByteString 

calculate HMAC with a HashAlgorithm for a key and message

Example:

 untag (hmac (fromString "secretkey") (fromString "secret message") :: Tagged SHA256 B.ByteString)

hmac' :: HashAlgorithm a => a -> ByteString -> ByteString -> ByteStringSource

Untagged variant of hmac; takes a (possible undefined) typed HashAlgorithm context as parameter.

Example:

 hmac' (undefined :: SHA256) (fromString "secretkey") (fromString "secret message")

hmacLazySource

Arguments

:: HashAlgorithm a 
=> ByteString

key argument

-> ByteString

message argument

-> Tagged a ByteString 

calculate HMAC with a HashAlgorithm for a key and lazy message

Example:

 untag (hmacLazy (fromString "secretkey") (fromString "secret message") :: Tagged SHA256 B.ByteString)

hmacLazy' :: HashAlgorithm a => a -> ByteString -> ByteString -> ByteStringSource

Untagged variant of hmacLazy; takes a (possible undefined) typed HashAlgorithm context as parameter.

Example:

 hmacLazy' (undefined :: SHA256) (fromString "secretkey") (fromString "secret message")