License | BSD-style |
---|---|
Maintainer | Vincent Hanquez <vincent@snarc.org> |
Stability | experimental |
Portability | unknown |
Safe Haskell | None |
Language | Haskell2010 |
Generalized impure cryptographic hash interface
- class HashAlgorithm a where
- hashBlockSize :: a -> Int
- hashDigestSize :: a -> Int
- hashInternalContextSize :: a -> Int
- hashInternalInit :: Ptr (Context a) -> IO ()
- hashInternalUpdate :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO ()
- hashInternalFinalize :: Ptr (Context a) -> Ptr (Digest a) -> IO ()
- data MutableContext a
- hashMutableInit :: HashAlgorithm alg => IO (MutableContext alg)
- hashMutableInitWith :: HashAlgorithm alg => alg -> IO (MutableContext alg)
- hashMutableUpdate :: (ByteArrayAccess ba, HashAlgorithm a) => MutableContext a -> ba -> IO ()
- hashMutableFinalize :: HashAlgorithm a => MutableContext a -> IO (Digest a)
- hashMutableReset :: HashAlgorithm a => MutableContext a -> IO ()
Documentation
class HashAlgorithm a where Source
Class representing hashing algorithms.
The interface presented here is update in place and lowlevel. the Hash module takes care of hidding the mutable interface properly.
hashBlockSize :: a -> Int Source
Get the block size of a hash algorithm
hashDigestSize :: a -> Int Source
Get the digest size of a hash algorithm
hashInternalContextSize :: a -> Int Source
Get the size of the context used for a hash algorithm
hashInternalInit :: Ptr (Context a) -> IO () Source
Initialize a context pointer to the initial state of a hash algorithm
hashInternalUpdate :: Ptr (Context a) -> Ptr Word8 -> Word32 -> IO () Source
Update the context with some raw data
hashInternalFinalize :: Ptr (Context a) -> Ptr (Digest a) -> IO () Source
Finalize the context and set the digest raw memory to the right value
hashMutableInit :: HashAlgorithm alg => IO (MutableContext alg) Source
Create a new mutable hash context.
the algorithm used is automatically determined from the return constraint.
hashMutableInitWith :: HashAlgorithm alg => alg -> IO (MutableContext alg) Source
Create a new mutable hash context.
The algorithm is explicitely passed as parameter
hashMutableUpdate :: (ByteArrayAccess ba, HashAlgorithm a) => MutableContext a -> ba -> IO () Source
Update a mutable hash context in place
hashMutableFinalize :: HashAlgorithm a => MutableContext a -> IO (Digest a) Source
Finalize a mutable hash context and compute a digest
hashMutableReset :: HashAlgorithm a => MutableContext a -> IO () Source
Reset the mutable context to the initial state of the hash