raaz-0.0.1: Raaz/Hash/Sha224.hs
{-|
This module exposes combinators to compute the SHA224 hash and the
associated HMAC for some common types.
-}
module Raaz.Hash.Sha224
( -- * The SHA224 cryptographic hash
SHA224
, sha224, sha224File, sha224Source
-- * HMAC computation using SHA224
, hmacSha224, hmacSha224File, hmacSha224Source
) where
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as L
import Raaz.Core
import Raaz.Hash.Internal ( hashSource, hash, hashFile )
import Raaz.Hash.Internal.HMAC ( hmacSource, hmac, hmacFile, HMAC )
import Raaz.Hash.Sha224.Internal ( SHA224 )
import Raaz.Hash.Sha224.Recommendation()
-- | Compute the sha224 hash of an instance of `PureByteSource`. Use
-- this for computing the sha224 hash of a strict or lazy byte string.
sha224 :: PureByteSource src => src -> SHA224
sha224 = hash
{-# SPECIALIZE sha224 :: B.ByteString -> SHA224 #-}
{-# SPECIALIZE sha224 :: L.ByteString -> SHA224 #-}
-- | Compute the sha224 hash of a file.
sha224File :: FilePath -> IO SHA224
sha224File = hashFile
-- | Compute the sha224 hash of a general byte source.
sha224Source :: ByteSource src => src -> IO SHA224
sha224Source = hashSource
-- | Compute the message authentication code using hmac-sha224.
hmacSha224 :: PureByteSource src
=> Key (HMAC SHA224) -- ^ Key to use
-> src -- ^ pure source whose hmac is to be
-- computed
-> HMAC SHA224
hmacSha224 = hmac
-- | Compute the message authentication code for a file.
hmacSha224File :: Key (HMAC SHA224) -- ^ Key to use
-> FilePath -- ^ File whose hmac is to be computed
-> IO (HMAC SHA224)
hmacSha224File = hmacFile
-- | Compute the message authetication code for a generic byte source.
hmacSha224Source :: ByteSource src
=> Key (HMAC SHA224)
-> src
-> IO (HMAC SHA224)
hmacSha224Source = hmacSource