Portability | portable |
---|---|
Stability | experimental |
Maintainer | stbuehler@web.de |
Safe Haskell | Safe-Inferred |
Generic interface to calculate key based hashes.
- class KeyedHashAlgorithm k where
- implKeyedHashDigestSize :: Tagged k Int
- implKeyedHashName :: Tagged k String
- implKeyedHashInit :: ByteString -> k
- implKeyedHashUpdate :: k -> ByteString -> k
- implKeyedHashUpdateLazy :: k -> ByteString -> k
- implKeyedHashFinalize :: k -> ByteString
- data KeyedHash = forall k . KeyedHashAlgorithm k => KeyedHash !k
- keyedHashDigestSize :: KeyedHashAlgorithm k => k -> Int
- keyedHashDigestSize' :: KeyedHash -> Int
- keyedHashName :: KeyedHashAlgorithm k => k -> String
- keyedHashName' :: KeyedHash -> String
- keyedHashInit :: KeyedHashAlgorithm k => ByteString -> Tagged k KeyedHash
- keyedHashInit' :: KeyedHashAlgorithm k => k -> ByteString -> KeyedHash
- keyedHashUpdate :: KeyedHash -> ByteString -> KeyedHash
- keyedHashUpdateLazy :: KeyedHash -> ByteString -> KeyedHash
- keyedHashFinalize :: KeyedHash -> ByteString
- keyedHash :: KeyedHashAlgorithm k => ByteString -> ByteString -> Tagged k ByteString
- keyedHash' :: KeyedHashAlgorithm k => k -> ByteString -> ByteString -> ByteString
- keyedHashLazy :: KeyedHashAlgorithm k => ByteString -> ByteString -> Tagged k ByteString
- keyedHashLazy' :: KeyedHashAlgorithm k => k -> ByteString -> ByteString -> ByteString
Documentation
class KeyedHashAlgorithm k whereSource
KeyedHashAlgorithm
is a class for keyed hash algorithms that take a key and a message to produce a digest.
The most popular example is HMAC
.
implKeyedHashDigestSize :: Tagged k IntSource
Digest size in bytes the keyed hash algorithm returns
implKeyedHashName :: Tagged k StringSource
Name
implKeyedHashInit :: ByteString -> kSource
Initialize state from a key
implKeyedHashUpdate :: k -> ByteString -> kSource
Add more message data to the state
implKeyedHashUpdateLazy :: k -> ByteString -> kSource
Add more lazy message data to the state
implKeyedHashFinalize :: k -> ByteStringSource
Produce final digest
KeyedHash
hides the KeyedHashAlgorithm
implementation.
forall k . KeyedHashAlgorithm k => KeyedHash !k |
keyedHashDigestSize :: KeyedHashAlgorithm k => k -> IntSource
Untagged variant of implKeyedHashDigestSize
; takes a (possible undefined
) key typed value from a KeyedHashAlgorithm
instance as parameter.
keyedHashDigestSize' :: KeyedHash -> IntSource
Get implKeyedHashDigestSize
from a KeyedHash
keyedHashName :: KeyedHashAlgorithm k => k -> StringSource
Untagged variant of implKeyedHashName
; takes a (possible undefined
) key typed value from a KeyedHashAlgorithm
instance as parameter.
keyedHashName' :: KeyedHash -> StringSource
Get implKeyedHashName
from a KeyedHash
:: KeyedHashAlgorithm k | |
=> ByteString |
|
-> Tagged k KeyedHash |
Initialize a KeyedHash
context from a key
keyedHashInit' :: KeyedHashAlgorithm k => k -> ByteString -> KeyedHashSource
Untagged variant of keyedHashInit
; takes a (possible undefined
) key typed value from a KeyedHashAlgorithm
instance as parameter.
keyedHashUpdate :: KeyedHash -> ByteString -> KeyedHashSource
Add more message data to the context
keyedHashUpdateLazy :: KeyedHash -> ByteString -> KeyedHashSource
Add more lazy message data to the context
keyedHashFinalize :: KeyedHash -> ByteStringSource
Produce final digest
keyedHash :: KeyedHashAlgorithm k => ByteString -> ByteString -> Tagged k ByteStringSource
Helper to hash key
and message
in one step
Example:
untag (keyedHash (fromString "secretkey") (fromString "secret message") :: Tagged (HMAC SHA256) B.ByteString)
keyedHash' :: KeyedHashAlgorithm k => k -> ByteString -> ByteString -> ByteStringSource
Untagged variant of keyedHash
; takes a (possible undefined
) key typed value from a KeyedHashAlgorithm
instance as parameter.
Example:
keyedHash' (undefined :: HMAC SHA256) (fromString "secretkey") (fromString "secret message")
keyedHashLazy :: KeyedHashAlgorithm k => ByteString -> ByteString -> Tagged k ByteStringSource
Helper to hash key
and lazy message
in one step
Example:
untag (keyedHashLazy (fromString "secretkey") (fromString "secret message") :: Tagged (HMAC SHA256) B.ByteString)
keyedHashLazy' :: KeyedHashAlgorithm k => k -> ByteString -> ByteString -> ByteStringSource
Untagged variant of keyedHashLazy
; takes a (possible undefined
) key typed value from a KeyedHashAlgorithm
instance as parameter.
Example:
keyedHashLazy' (undefined :: HMAC SHA256) (fromString "secretkey") (fromString "secret message")