{-| This module exposes combinators to compute the SHA1 hash and the associated HMAC for some common types. -} module Raaz.Hash.Sha1 {-# DEPRECATED "sha1 and its hmac is mostly broken. Avoid if possible" #-} ( -- * The SHA1 cryptographic hash SHA1 , sha1, sha1File, sha1Source -- * HMAC computation using SHA1 , hmacSha1, hmacSha1File, hmacSha1Source ) 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.Sha1.Internal ( SHA1 ) import Raaz.Hash.Sha1.Recommendation() {-# DEPRECATED sha1, sha1File, sha1Source "SHA1 is almost broken, avoid it as much as possible" #-} -- | Compute the sha1 hash of an instance of `PureByteSource`. Use -- this for computing the sha1 hash of a strict or lazy byte string. sha1 :: PureByteSource src => src -> SHA1 sha1 = hash {-# SPECIALIZE sha1 :: B.ByteString -> SHA1 #-} {-# SPECIALIZE sha1 :: L.ByteString -> SHA1 #-} -- | Compute the sha1 hash of a file. sha1File :: FilePath -> IO SHA1 sha1File = hashFile -- | Compute the sha1 hash of a general byte source. sha1Source :: ByteSource src => src -> IO SHA1 sha1Source = hashSource {-# DEPRECATED hmacSha1, hmacSha1File, hmacSha1Source "SHA1 is almost broken, avoid it for hmac-ing" #-} -- | Compute the message authentication code using hmac-sha1. hmacSha1 :: PureByteSource src => Key (HMAC SHA1) -> src -> HMAC SHA1 hmacSha1 = hmac -- | Compute the message authentication code for a file. hmacSha1File :: Key (HMAC SHA1) -> FilePath -> IO (HMAC SHA1) hmacSha1File = hmacFile -- | Compute the message authetication code for a generic byte source. hmacSha1Source :: ByteSource src => Key (HMAC SHA1) -> src -> IO (HMAC SHA1) hmacSha1Source = hmacSource