-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/

-- | collection of crypto hashes, fast, pure and practical
--   
--   A collection of crypto hashes, with a practical incremental and
--   one-pass, pure APIs, with performance close to the fastest
--   implementations available in other languages.
--   
--   The implementations are made in C with a haskell FFI wrapper that hide
--   the C implementation.
--   
--   Simple examples using the unified API:
--   
--   
--   import Crypto.Hash
--   
--   sha1 :: ByteString -> Digest SHA1
--   sha1 = hash
--   
--   hexSha3_512 :: ByteString -> String
--   hexSha3_512 bs = show (hash bs :: Digest SHA3_512)
--   
--   
--   Simple examples using the module API:
--   
--   
--   import qualified Crypto.Hash.SHA1 as SHA1
--   
--   main = putStrLn $ show $ SHA1.hash (Data.ByteString.pack [0..255])
--   
--   
--   
--   import qualified Crypto.Hash.SHA3 as SHA3
--   
--   main = putStrLn $ show $ digest
--     where digest = SHA3.finalize ctx
--           ctx    = foldl' SHA3.update iCtx (map Data.ByteString.pack [ [1,2,3], [4,5,6] ]
--           iCtx   = SHA3.init 224
--   
@package cryptohash
@version 0.11.6

-- | provide the HMAC (Hash based Message Authentification Code) base
--   algorithm. http://en.wikipedia.org/wiki/HMAC
module Crypto.MAC.HMAC

-- | compute a MAC using the supplied hashing function
--   
--   An incremental API can be found in the module Crypto.Hash.
hmac :: (ByteString -> ByteString) -> Int -> ByteString -> ByteString -> ByteString

-- | A module containing Whirlpool bindings
module Crypto.Hash.Whirlpool

-- | Whirlpool Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing Skein512 bindings
module Crypto.Hash.Skein512

-- | Skein512 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Int -> Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: Int -> ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: Int -> ByteString -> ByteString

-- | A module containing Skein256 bindings
module Crypto.Hash.Skein256

-- | Skein256 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Int -> Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: Int -> ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: Int -> ByteString -> ByteString

-- | A module containing Tiger bindings
module Crypto.Hash.Tiger

-- | Tiger Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing RIPEMD160 bindings
module Crypto.Hash.RIPEMD160

-- | RIPEMD160 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing SHA3 bindings
module Crypto.Hash.SHA3

-- | SHA3 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Int -> Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: Int -> ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: Int -> ByteString -> ByteString

-- | A module containing SHA512 bindings
module Crypto.Hash.SHA512

-- | SHA512 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | init a context using FIPS 180-4 for truncated SHA512
init_t :: Int -> Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing SHA512/t
module Crypto.Hash.SHA512t

-- | SHA512 Context with variable size output
data Ctx
Ctx :: !Int -> !Ctx -> Ctx

-- | init a context
init :: Int -> Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: Int -> ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: Int -> ByteString -> ByteString

-- | A module containing SHA384 bindings
module Crypto.Hash.SHA384

-- | SHA384 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing SHA256 bindings
module Crypto.Hash.SHA256

-- | SHA256 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing SHA224 bindings
module Crypto.Hash.SHA224

-- | SHA224 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing SHA1 bindings
module Crypto.Hash.SHA1

-- | SHA1 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing MD5 bindings
module Crypto.Hash.MD5

-- | MD5 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing MD4 bindings
module Crypto.Hash.MD4

-- | MD4 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | A module containing MD2 bindings
module Crypto.Hash.MD2

-- | MD2 Context
newtype Ctx
Ctx :: ByteString -> Ctx

-- | init a context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiples bytestring
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring
hashlazy :: ByteString -> ByteString

-- | Crypto hash types definitions
module Crypto.Hash.Types

-- | Class representing hashing algorithms.
--   
--   The hash algorithm is built over 3 primitives:
--   
--   
--   
- init : create a new hashing context
--   
- updates : update the hashing context with some strict bytestrings
--   and return the new context
--   
- finalize : finalize the context into a digest
--   
class HashAlgorithm a

-- | Block size in bytes the hash algorithm operates on
hashBlockSize :: HashAlgorithm a => Context a -> Int

-- | Initialize a new context for this hash algorithm
hashInit :: HashAlgorithm a => Context a

-- | Update the context with a list of strict bytestring, and return a new
--   context with the updates.
hashUpdates :: HashAlgorithm a => Context a -> [ByteString] -> Context a

-- | Finalize a context and return a digest.
hashFinalize :: HashAlgorithm a => Context a -> Digest a

-- | Try to convert a binary digest bytestring to a digest.
digestFromByteString :: HashAlgorithm a => ByteString -> Maybe (Digest a)

-- | Represent a context for a given hash algorithm.
newtype Context a
Context :: ByteString -> Context a

-- | Represent a digest for a given hash algorithm.
newtype Digest a
Digest :: ByteString -> Digest a

-- | return the binary bytestring. deprecated use toBytes.
contextToByteString :: Context a -> ByteString

-- | return the binary bytestring. deprecated use toBytes.

-- | Deprecated: use toBytes from byteable:Data.Byteable
digestToByteString :: Digest a -> ByteString
instance GHC.Classes.Ord (Crypto.Hash.Types.Digest a)
instance GHC.Classes.Eq (Crypto.Hash.Types.Digest a)
instance Data.Byteable.Byteable (Crypto.Hash.Types.Context a)
instance Data.Byteable.Byteable (Crypto.Hash.Types.Digest a)
instance GHC.Show.Show (Crypto.Hash.Types.Digest a)

-- | Generalized cryptographic hash interface, that you can use with
--   cryptographic hash algorithm that belong to the HashAlgorithm type
--   class.
--   
--   
--   import Crypto.Hash
--   
--   sha1 :: ByteString -> Digest SHA1
--   sha1 = hash
--   
--   hexSha3_512 :: ByteString -> String
--   hexSha3_512 bs = show (hash bs :: Digest SHA3_512)
--   
module Crypto.Hash

-- | Class representing hashing algorithms.
--   
--   The hash algorithm is built over 3 primitives:
--   
--   
--   
- init : create a new hashing context
--   
- updates : update the hashing context with some strict bytestrings
--   and return the new context
--   
- finalize : finalize the context into a digest
--   
class HashAlgorithm a

-- | Block size in bytes the hash algorithm operates on
hashBlockSize :: HashAlgorithm a => Context a -> Int

-- | Initialize a new context for this hash algorithm
hashInit :: HashAlgorithm a => Context a

-- | Update the context with a list of strict bytestring, and return a new
--   context with the updates.
hashUpdates :: HashAlgorithm a => Context a -> [ByteString] -> Context a

-- | Finalize a context and return a digest.
hashFinalize :: HashAlgorithm a => Context a -> Digest a

-- | Try to convert a binary digest bytestring to a digest.
digestFromByteString :: HashAlgorithm a => ByteString -> Maybe (Digest a)

-- | Alias to a single pass hash function that operate on a strict
--   bytestring
type HashFunctionBS a = ByteString -> Digest a

-- | Alias to a single pass hash function that operate on a lazy bytestring
type HashFunctionLBS a = ByteString -> Digest a

-- | Represent a context for a given hash algorithm.
data Context a

-- | Represent a digest for a given hash algorithm.
data Digest a

-- | return the binary bytestring. deprecated use toBytes.

-- | Deprecated: use toBytes from byteable:Data.Byteable
digestToByteString :: Digest a -> ByteString

-- | Return the hexadecimal (base16) bytestring of the digest
digestToHexByteString :: Digest a -> ByteString

-- | Hash a strict bytestring into a digest.
hash :: HashAlgorithm a => ByteString -> Digest a

-- | Hash a lazy bytestring into a digest.
hashlazy :: HashAlgorithm a => ByteString -> Digest a

-- | run hashUpdates on one single bytestring and return the updated
--   context.
hashUpdate :: HashAlgorithm a => Context a -> ByteString -> Context a

-- | Initialize a new context for a specified hash algorithm
hashInitAlg :: HashAlgorithm alg => alg -> Context alg

-- | MD2 cryptographic hash
data MD2
MD2 :: MD2

-- | MD4 cryptographic hash
data MD4
MD4 :: MD4

-- | MD5 cryptographic hash
data MD5
MD5 :: MD5

-- | SHA1 cryptographic hash
data SHA1
SHA1 :: SHA1

-- | SHA224 cryptographic hash
data SHA224
SHA224 :: SHA224

-- | SHA256 cryptographic hash
data SHA256
SHA256 :: SHA256

-- | SHA384 cryptographic hash
data SHA384
SHA384 :: SHA384

-- | SHA512 cryptographic hash
data SHA512
SHA512 :: SHA512

-- | RIPEMD160 cryptographic hash
data RIPEMD160
RIPEMD160 :: RIPEMD160

-- | Tiger cryptographic hash
data Tiger
Tiger :: Tiger

-- | SHA3 (224 bits version) cryptographic hash
data SHA3_224
SHA3_224 :: SHA3_224

-- | SHA3 (256 bits version) cryptographic hash
data SHA3_256
SHA3_256 :: SHA3_256

-- | SHA3 (384 bits version) cryptographic hash
data SHA3_384
SHA3_384 :: SHA3_384

-- | SHA3 (512 bits version) cryptographic hash
data SHA3_512
SHA3_512 :: SHA3_512

-- | Skein256 (224 bits version) cryptographic hash
data Skein256_224
Skein256_224 :: Skein256_224

-- | Skein256 (256 bits version) cryptographic hash
data Skein256_256
Skein256_256 :: Skein256_256

-- | Skein512 (224 bits version) cryptographic hash
data Skein512_224
Skein512_224 :: Skein512_224

-- | Skein512 (256 bits version) cryptographic hash
data Skein512_256
Skein512_256 :: Skein512_256

-- | Skein512 (384 bits version) cryptographic hash
data Skein512_384
Skein512_384 :: Skein512_384

-- | Skein512 (512 bits version) cryptographic hash
data Skein512_512
Skein512_512 :: Skein512_512

-- | Whirlpool cryptographic hash
data Whirlpool
Whirlpool :: Whirlpool

-- | Represent an HMAC that is a phantom type with the hash used to produce
--   the mac.
--   
--   The Eq instance is constant time.
newtype HMAC a
HMAC :: Digest a -> HMAC a
[hmacGetDigest] :: HMAC a -> Digest a

-- | compute a MAC using the supplied hashing function
hmac :: HashAlgorithm a => ByteString -> ByteString -> HMAC a

-- | compute a HMAC using a specified algorithm
hmacAlg :: HashAlgorithm a => a -> ByteString -> ByteString -> HMAC a
instance GHC.Show.Show Crypto.Hash.Skein512_512
instance GHC.Show.Show Crypto.Hash.Skein512_384
instance GHC.Show.Show Crypto.Hash.Skein512_256
instance GHC.Show.Show Crypto.Hash.Skein512_224
instance GHC.Show.Show Crypto.Hash.Skein256_256
instance GHC.Show.Show Crypto.Hash.Skein256_224
instance GHC.Show.Show Crypto.Hash.SHA3_512
instance GHC.Show.Show Crypto.Hash.SHA3_384
instance GHC.Show.Show Crypto.Hash.SHA3_256
instance GHC.Show.Show Crypto.Hash.SHA3_224
instance GHC.Show.Show Crypto.Hash.Tiger
instance GHC.Show.Show Crypto.Hash.Whirlpool
instance GHC.Show.Show Crypto.Hash.RIPEMD160
instance GHC.Show.Show Crypto.Hash.SHA512
instance GHC.Show.Show Crypto.Hash.SHA384
instance GHC.Show.Show Crypto.Hash.SHA256
instance GHC.Show.Show Crypto.Hash.SHA224
instance GHC.Show.Show Crypto.Hash.SHA1
instance GHC.Show.Show Crypto.Hash.MD5
instance GHC.Show.Show Crypto.Hash.MD4
instance GHC.Show.Show Crypto.Hash.MD2
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.MD2
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.MD4
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.MD5
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA1
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA224
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA256
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA384
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA512
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.RIPEMD160
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Whirlpool
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Tiger
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA3_224
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA3_256
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA3_384
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.SHA3_512
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Skein256_224
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Skein256_256
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Skein512_224
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Skein512_256
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Skein512_384
instance Crypto.Hash.Types.HashAlgorithm Crypto.Hash.Skein512_512
instance Data.Byteable.Byteable (Crypto.Hash.HMAC a)
instance GHC.Classes.Eq (Crypto.Hash.HMAC a)

-- | Crypto hash generic MAC (Message Authentification Code) module
module Crypto.MAC

-- | Represent an HMAC that is a phantom type with the hash used to produce
--   the mac.
--   
--   The Eq instance is constant time.
newtype HMAC a
HMAC :: Digest a -> HMAC a
[hmacGetDigest] :: HMAC a -> Digest a

-- | compute a MAC using the supplied hashing function
hmac :: HashAlgorithm a => ByteString -> ByteString -> HMAC a

-- | compute a HMAC using a specified algorithm
hmacAlg :: HashAlgorithm a => a -> ByteString -> ByteString -> HMAC a

-- | Represent an ongoing HMAC state, that can be appended with
--   hmacUpdate and finalize to an HMAC with hmacFinalize
data HMACContext hashalg

-- | Initialize a new incremental HMAC context
hmacInit :: HashAlgorithm a => ByteString -> HMACContext a

-- | Initialize a new incremental HMAC context with a given hash algorithm.
hmacInitAlg :: HashAlgorithm a => a -> ByteString -> HMACContext a

-- | Incrementally update a HMAC context
hmacUpdate :: HashAlgorithm a => HMACContext a -> ByteString -> HMACContext a

-- | Finalize a HMAC context and return the HMAC.
hmacFinalize :: HashAlgorithm a => HMACContext a -> HMAC a

-- | provide a simple SHA3 MAC mechanism with
--   
--   
--   mac = hash(key|message)
--   
module Crypto.MAC.SHA3

-- | SHA3_512 MAC
data MAC512
MAC512 :: Digest SHA3_512 -> MAC512
[getDigest512] :: MAC512 -> Digest SHA3_512

-- | SHA3_384 MAC
data MAC384
MAC384 :: Digest SHA3_384 -> MAC384
[getDigest384] :: MAC384 -> Digest SHA3_384

-- | SHA3_256 MAC
data MAC256
MAC256 :: Digest SHA3_256 -> MAC256
[getDigest256] :: MAC256 -> Digest SHA3_256

-- | SHA3_224 MAC
data MAC224
MAC224 :: Digest SHA3_224 -> MAC224
[getDigest224] :: MAC224 -> Digest SHA3_224

-- | compute a MAC using a simple SHA3_512 key|msg
mac512 :: ByteString -> ByteString -> MAC512

-- | compute a MAC using a simple SHA3_384 key|msg
mac384 :: ByteString -> ByteString -> MAC384

-- | compute a MAC using a simple SHA3_256 key|msg
mac256 :: ByteString -> ByteString -> MAC256

-- | compute a MAC using a simple SHA3_224 key|msg
mac224 :: ByteString -> ByteString -> MAC224
instance Data.Byteable.Byteable Crypto.MAC.SHA3.MAC512
instance GHC.Classes.Eq Crypto.MAC.SHA3.MAC512
instance Data.Byteable.Byteable Crypto.MAC.SHA3.MAC384
instance GHC.Classes.Eq Crypto.MAC.SHA3.MAC384
instance Data.Byteable.Byteable Crypto.MAC.SHA3.MAC256
instance GHC.Classes.Eq Crypto.MAC.SHA3.MAC256
instance Data.Byteable.Byteable Crypto.MAC.SHA3.MAC224
instance GHC.Classes.Eq Crypto.MAC.SHA3.MAC224
