-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Fast, pure and practical SHA-512 implementation
--   
--   A practical incremental and one-pass, pure API to the <a>SHA-512 hash
--   algorithm</a> (including <a>HMAC</a> support) with performance close
--   to the fastest implementations available in other languages.
--   
--   The implementation is made in C with a haskell FFI wrapper that hides
--   the C implementation.
--   
--   NOTE: This package has been forked off <tt>cryptohash-0.11.7</tt>
--   because the <tt>cryptohash</tt> package has been deprecated and so
--   this package continues to satisfy the need for a lightweight package
--   providing the SHA512 hash algorithm without any dependencies on
--   packages other than <tt>base</tt> and <tt>bytestring</tt>.
--   
--   Consequently, this package can be used as a drop-in replacement for
--   <tt>cryptohash</tt>'s <a>Crypto.Hash.SHA512</a> module, though with a
--   clearly smaller footprint.
@package cryptohash-sha512
@version 0.11.100.1


-- | A module containing <a>SHA-512</a> bindings
module Crypto.Hash.SHA512

-- | SHA-512 Context
--   
--   The context data is exactly 208 bytes long, however the data in the
--   context is stored in host-endianness.
--   
--   The context data is made up of
--   
--   <ul>
--   <li>Two <a>Word64</a>s representing the number of bytes already feed
--   to hash algorithm so far (lower word first),</li>
--   <li>a 128-element <a>Word8</a> buffer holding partial input-chunks,
--   and finally</li>
--   <li>a 8-element <a>Word64</a> array holding the current
--   work-in-progress digest-value.</li>
--   </ul>
--   
--   Consequently, a SHA-512 digest as produced by <a>hash</a>,
--   <a>hashlazy</a>, or <a>finalize</a> is 64 bytes long.
newtype Ctx
Ctx :: ByteString -> Ctx

-- | create a new hash context
init :: Ctx

-- | update a context with a bytestring
update :: Ctx -> ByteString -> Ctx

-- | updates a context with multiple bytestrings
updates :: Ctx -> [ByteString] -> Ctx

-- | finalize the context into a digest bytestring (64 bytes)
finalize :: Ctx -> ByteString

-- | hash a strict bytestring into a digest bytestring (64 bytes)
hash :: ByteString -> ByteString

-- | hash a lazy bytestring into a digest bytestring (64 bytes)
hashlazy :: ByteString -> ByteString

-- | Compute 64-byte <a>RFC2104</a>-compatible HMAC-SHA-512 digest for a
--   strict bytestring message
hmac :: ByteString -> ByteString -> ByteString

-- | Compute 64-byte <a>RFC2104</a>-compatible HMAC-SHA-512 digest for a
--   lazy bytestring message
hmaclazy :: ByteString -> ByteString -> ByteString
