raaz-0.2.0: Raaz/Hash/Blake2.hs
{-|
This module exposes combinators to compute the BLAKE2b hash and the
associated HMAC for some common types.
-}
module Raaz.Hash.Blake2
( -- * The BLAKE2 cryptographic hashes
BLAKE2b, BLAKE2s
, blake2b, blake2bFile, blake2bSource
) 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.Blake2.Internal
import Raaz.Hash.Blake2.Recommendation()
-- | Compute the blake2b hash of an instance of `PureByteSource`. Use
-- this for computing the sha1 hash of a strict or lazy byte string.
blake2b :: PureByteSource src => src -> BLAKE2b
blake2b = hash
{-# SPECIALIZE blake2b :: B.ByteString -> BLAKE2b #-}
{-# SPECIALIZE blake2b :: L.ByteString -> BLAKE2b #-}
-- | Compute the blake2b hash of a file.
blake2bFile :: FilePath -> IO BLAKE2b
blake2bFile = hashFile
-- | Compute the blake2b hash of a general byte source.
blake2bSource :: ByteSource src => src -> IO BLAKE2b
blake2bSource = hashSource