raaz-0.2.0: Raaz/Hash/Sha224/Internal.hs
{-|
This module exposes the `SHA224` hash constructor. You would hardly
need to import the module directly as you would want to treat the
`SHA224` type as an opaque type for type safety. This module is
exported only for special uses like writing a test case or defining a
binary instance etc.
-}
{-# LANGUAGE CPP #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE FlexibleInstances #-}
{-# LANGUAGE MultiParamTypeClasses #-}
{-# CFILES raaz/hash/sha1/portable.c #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Raaz.Hash.Sha224.Internal
( SHA224(..)
) where
import Data.String
import Data.Word
import Foreign.Storable ( Storable )
import Raaz.Core
import Raaz.Hash.Internal
----------------------------- SHA224 -------------------------------------------
-- | Sha224 hash value which consist of 7 32bit words.
newtype SHA224 = SHA224 (Tuple 7 (BE Word32))
deriving (Eq, Equality, Storable, EndianStore)
instance Encodable SHA224
instance IsString SHA224 where
fromString = fromBase16
instance Show SHA224 where
show = showBase16
instance Primitive SHA224 where
blockSize _ = BYTES 64
type Implementation SHA224 = SomeHashI SHA224
instance Hash SHA224 where
additionalPadBlocks _ = toEnum 1