{-# LINE 1 "src/Crypto/Hash/BLAKE2/BLAKE2bp.hsc" #-}
module Crypto.Hash.BLAKE2.BLAKE2bp
(
BLAKE2bpState,
initialize,
initialize',
update,
finalize,
hash
) where
import Data.ByteString (ByteString)
import Foreign.C.Types (CInt(..), CSize(..))
import Foreign.ForeignPtr (ForeignPtr)
import Foreign.Storable (Storable(..))
import Crypto.Hash.BLAKE2.Internal
data BLAKE2bpStruct
instance Storable BLAKE2bpStruct where
sizeOf _ = (1768)
{-# LINE 32 "src/Crypto/Hash/BLAKE2/BLAKE2bp.hsc" #-}
alignment _ = 8
{-# LINE 33 "src/Crypto/Hash/BLAKE2/BLAKE2bp.hsc" #-}
peek = error "peek not implemented"
poke = error "poke not implemented"
type BLAKE2bpState = ForeignPtr BLAKE2bpStruct
initialize :: Int
-> BLAKE2bpState
initialize = initializer c_blake2bp_init
{-# INLINE initialize #-}
initialize' :: Int
-> ByteString
-> BLAKE2bpState
initialize' = initializer' c_blake2bp_init_key
{-# INLINE initialize' #-}
update :: ByteString
-> BLAKE2bpState
-> BLAKE2bpState
update = updater c_blake2bp_update
{-# INLINE update #-}
finalize :: Int
-> BLAKE2bpState
-> ByteString
finalize = finalizer c_blake2bp_final
{-# INLINE finalize #-}
hash :: Int
-> ByteString
-> ByteString
-> ByteString
hash = hasher c_blake2bp
{-# INLINE hash #-}
foreign import ccall unsafe "blake2.h blake2bp"
c_blake2bp :: HashFunc
foreign import ccall unsafe "blake2.h blake2bp_init"
c_blake2bp_init :: InitFunc BLAKE2bpStruct
foreign import ccall unsafe "blake2.h blake2bp_init_key"
c_blake2bp_init_key :: InitKeyFunc BLAKE2bpStruct
foreign import ccall unsafe "blake2.h blake2bp_update"
c_blake2bp_update :: UpdateFunc BLAKE2bpStruct
foreign import ccall unsafe "blake2.h blake2bp_final"
c_blake2bp_final :: FinalFunc BLAKE2bpStruct