|
Packit |
141393 |
-- |
|
|
Packit |
141393 |
-- Module : Crypto.Hash.RIPEMD160
|
|
Packit |
141393 |
-- License : BSD-style
|
|
Packit |
141393 |
-- Maintainer : Vincent Hanquez <vincent@snarc.org>
|
|
Packit |
141393 |
-- Stability : experimental
|
|
Packit |
141393 |
-- Portability : unknown
|
|
Packit |
141393 |
--
|
|
Packit |
141393 |
-- module containing the binding functions to work with the
|
|
Packit |
141393 |
-- RIPEMD160 cryptographic hash.
|
|
Packit |
141393 |
--
|
|
Packit |
141393 |
{-# LANGUAGE ForeignFunctionInterface #-}
|
|
Packit |
141393 |
{-# LANGUAGE DeriveDataTypeable #-}
|
|
Packit |
141393 |
{-# LANGUAGE DataKinds #-}
|
|
Packit |
141393 |
{-# LANGUAGE TypeFamilies #-}
|
|
Packit |
141393 |
module Crypto.Hash.RIPEMD160 ( RIPEMD160 (..) ) where
|
|
Packit |
141393 |
|
|
Packit |
141393 |
import Crypto.Hash.Types
|
|
Packit |
141393 |
import Foreign.Ptr (Ptr)
|
|
Packit |
141393 |
import Data.Data
|
|
Packit |
141393 |
import Data.Typeable
|
|
Packit |
141393 |
import Data.Word (Word8, Word32)
|
|
Packit |
141393 |
|
|
Packit |
141393 |
-- | RIPEMD160 cryptographic hash algorithm
|
|
Packit |
141393 |
data RIPEMD160 = RIPEMD160
|
|
Packit |
141393 |
deriving (Show,Data,Typeable)
|
|
Packit |
141393 |
|
|
Packit |
141393 |
instance HashAlgorithm RIPEMD160 where
|
|
Packit |
141393 |
type HashBlockSize RIPEMD160 = 64
|
|
Packit |
141393 |
type HashDigestSize RIPEMD160 = 20
|
|
Packit |
141393 |
type HashInternalContextSize RIPEMD160 = 128
|
|
Packit |
141393 |
hashBlockSize _ = 64
|
|
Packit |
141393 |
hashDigestSize _ = 20
|
|
Packit |
141393 |
hashInternalContextSize _ = 128
|
|
Packit |
141393 |
hashInternalInit = c_ripemd160_init
|
|
Packit |
141393 |
hashInternalUpdate = c_ripemd160_update
|
|
Packit |
141393 |
hashInternalFinalize = c_ripemd160_finalize
|
|
Packit |
141393 |
|
|
Packit |
141393 |
foreign import ccall unsafe "cryptonite_ripemd160_init"
|
|
Packit |
141393 |
c_ripemd160_init :: Ptr (Context a)-> IO ()
|
|
Packit |
141393 |
|
|
Packit |
141393 |
foreign import ccall "cryptonite_ripemd160_update"
|
|
Packit |
141393 |
c_ripemd160_update :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
|
|
Packit |
141393 |
|
|
Packit |
141393 |
foreign import ccall unsafe "cryptonite_ripemd160_finalize"
|
|
Packit |
141393 |
c_ripemd160_finalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
|