just like poly1305, add a way to mac multiple inputs
This commit is contained in:
parent
022f16eeef
commit
bd1c010df9
@ -16,6 +16,7 @@ module Crypto.MAC.HMAC
|
|||||||
, Context(..)
|
, Context(..)
|
||||||
, initialize
|
, initialize
|
||||||
, update
|
, update
|
||||||
|
, updates
|
||||||
, finalize
|
, finalize
|
||||||
) where
|
) where
|
||||||
|
|
||||||
@ -54,7 +55,7 @@ hmac secret msg = doHMAC hashInit
|
|||||||
hashF = hashFinalize . hashUpdate ctxInit
|
hashF = hashFinalize . hashUpdate ctxInit
|
||||||
blockSize = hashBlockSize ctxInit
|
blockSize = hashBlockSize ctxInit
|
||||||
|
|
||||||
-- | Represent an ongoing HMAC state, that can be appended with 'hmacUpdate'
|
-- | Represent an ongoing HMAC state, that can be appended with 'update'
|
||||||
-- and finalize to an HMAC with 'hmacFinalize'
|
-- and finalize to an HMAC with 'hmacFinalize'
|
||||||
data Context hashalg = Context !(Hash.Context hashalg) !(Hash.Context hashalg)
|
data Context hashalg = Context !(Hash.Context hashalg) !(Hash.Context hashalg)
|
||||||
|
|
||||||
@ -78,11 +79,19 @@ initialize secret = Context octx ictx
|
|||||||
-- | Incrementally update a HMAC context
|
-- | Incrementally update a HMAC context
|
||||||
update :: HashAlgorithm a
|
update :: HashAlgorithm a
|
||||||
=> Context a -- ^ Current HMAC context
|
=> Context a -- ^ Current HMAC context
|
||||||
-> ByteString -- ^ Message to Mac
|
-> ByteString -- ^ Message to append to the MAC
|
||||||
-> Context a -- ^ Updated HMAC context
|
-> Context a -- ^ Updated HMAC context
|
||||||
update (Context octx ictx) msg =
|
update (Context octx ictx) msg =
|
||||||
Context octx (hashUpdate ictx msg)
|
Context octx (hashUpdate ictx msg)
|
||||||
|
|
||||||
|
-- | Increamentally update a HMAC context with multiple inputs
|
||||||
|
updates :: HashAlgorithm a
|
||||||
|
=> Context a -- ^ Current HMAC context
|
||||||
|
-> [ByteString] -- ^ Messages to append to the MAC
|
||||||
|
-> Context a -- ^ Updated HMAC context
|
||||||
|
updates (Context octx ictx) msgs =
|
||||||
|
Context octx (hashUpdates ictx msgs)
|
||||||
|
|
||||||
-- | Finalize a HMAC context and return the HMAC.
|
-- | Finalize a HMAC context and return the HMAC.
|
||||||
finalize :: HashAlgorithm a
|
finalize :: HashAlgorithm a
|
||||||
=> Context a
|
=> Context a
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user