{-# LINE 1 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}

module Crypto.Nettle.Hash.ForeignImports
	( NettleHashInit
	, NettleHashUpdate
	, NettleHashDigest

	, c_sha256_ctx_size
	, c_sha256_digest_size
	, c_sha256_block_size
	, c_sha256_init
	, c_sha256_update
	, c_sha256_digest

	, c_sha224_ctx_size
	, c_sha224_digest_size
	, c_sha224_block_size
	, c_sha224_init
	, c_sha224_update
	, c_sha224_digest

	, c_sha512_ctx_size
	, c_sha512_digest_size
	, c_sha512_block_size
	, c_sha512_init
	, c_sha512_update
	, c_sha512_digest

	, c_sha384_ctx_size
	, c_sha384_digest_size
	, c_sha384_block_size
	, c_sha384_init
	, c_sha384_update
	, c_sha384_digest

	, c_sha3_224_ctx_size
	, c_sha3_224_digest_size
	, c_sha3_224_block_size
	, c_sha3_224_init
	, c_sha3_224_update
	, c_sha3_224_digest

	, c_sha3_256_ctx_size
	, c_sha3_256_digest_size
	, c_sha3_256_block_size
	, c_sha3_256_init
	, c_sha3_256_update
	, c_sha3_256_digest

	, c_sha3_384_ctx_size
	, c_sha3_384_digest_size
	, c_sha3_384_block_size
	, c_sha3_384_init
	, c_sha3_384_update
	, c_sha3_384_digest

	, c_sha3_512_ctx_size
	, c_sha3_512_digest_size
	, c_sha3_512_block_size
	, c_sha3_512_init
	, c_sha3_512_update
	, c_sha3_512_digest

	, c_md5_ctx_size
	, c_md5_digest_size
	, c_md5_block_size
	, c_md5_init
	, c_md5_update
	, c_md5_digest

	, c_md2_ctx_size
	, c_md2_digest_size
	, c_md2_block_size
	, c_md2_init
	, c_md2_update
	, c_md2_digest

	, c_md4_ctx_size
	, c_md4_digest_size
	, c_md4_block_size
	, c_md4_init
	, c_md4_update
	, c_md4_digest

	, c_ripemd160_ctx_size
	, c_ripemd160_digest_size
	, c_ripemd160_block_size
	, c_ripemd160_init
	, c_ripemd160_update
	, c_ripemd160_digest

	, c_sha1_ctx_size
	, c_sha1_digest_size
	, c_sha1_block_size
	, c_sha1_init
	, c_sha1_update
	, c_sha1_digest

	, c_gosthash94_ctx_size
	, c_gosthash94_digest_size
	, c_gosthash94_block_size
	, c_gosthash94_init
	, c_gosthash94_update
	, c_gosthash94_digest

	, c_umac32_ctx_size
	, c_umac32_digest_size
	, c_umac32_set_key
	, c_umac32_set_nonce
	, c_umac32_update
	, c_umac32_digest

	, c_umac64_ctx_size
	, c_umac64_digest_size
	, c_umac64_set_key
	, c_umac64_set_nonce
	, c_umac64_update
	, c_umac64_digest

	, c_umac96_ctx_size
	, c_umac96_digest_size
	, c_umac96_set_key
	, c_umac96_set_nonce
	, c_umac96_update
	, c_umac96_digest

	, c_umac128_ctx_size
	, c_umac128_digest_size
	, c_umac128_set_key
	, c_umac128_set_nonce
	, c_umac128_update
	, c_umac128_digest
	) where

import Nettle.Utils

-- internal functions are not camelCase on purpose
{-# ANN module "HLint: ignore Use camelCase" #-}



type NettleHashInit = Ptr Word8 -> IO ()
type NettleHashUpdate = Ptr Word8 -> Word -> Ptr Word8 -> IO ()
type NettleHashDigest = Ptr Word8 -> Word -> Ptr Word8 -> IO ()

c_sha256_ctx_size :: Int
c_sha256_ctx_size = (112)
{-# LINE 148 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha256_digest_size :: Int
c_sha256_digest_size = 32
{-# LINE 150 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha256_block_size :: Int
c_sha256_block_size = 64
{-# LINE 152 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha256_init"
	c_sha256_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha256_update"
	c_sha256_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_sha256_digest"
	c_sha256_digest :: NettleHashDigest

c_sha224_ctx_size :: Int
c_sha224_ctx_size = (112)
{-# LINE 161 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha224_digest_size :: Int
c_sha224_digest_size = 28
{-# LINE 163 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha224_block_size :: Int
c_sha224_block_size = 64
{-# LINE 165 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha224_init"
	c_sha224_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha256_update"
	c_sha224_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_sha224_digest"
	c_sha224_digest :: NettleHashDigest

c_sha512_ctx_size :: Int
c_sha512_ctx_size = (216)
{-# LINE 174 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha512_digest_size :: Int
c_sha512_digest_size = 64
{-# LINE 176 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha512_block_size :: Int
c_sha512_block_size = 128
{-# LINE 178 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha512_init"
	c_sha512_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha512_update"
	c_sha512_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_sha512_digest"
	c_sha512_digest :: NettleHashDigest

c_sha384_ctx_size :: Int
c_sha384_ctx_size = (216)
{-# LINE 187 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha384_digest_size :: Int
c_sha384_digest_size = 48
{-# LINE 189 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha384_block_size :: Int
c_sha384_block_size = 128
{-# LINE 191 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha384_init"
	c_sha384_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha512_update"
	c_sha384_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_sha384_digest"
	c_sha384_digest :: NettleHashDigest

c_sha3_224_ctx_size :: Int
c_sha3_224_ctx_size = (352)
{-# LINE 200 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_224_digest_size :: Int
c_sha3_224_digest_size = 28
{-# LINE 202 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_224_block_size :: Int
c_sha3_224_block_size = 144
{-# LINE 204 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha3_224_init"
	c_sha3_224_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha3_224_update"
	c_sha3_224_update :: NettleHashUpdate
foreign import ccall unsafe "hs_nettle_sha3_224_digest"
	c_sha3_224_digest :: NettleHashDigest

c_sha3_256_ctx_size :: Int
c_sha3_256_ctx_size = (344)
{-# LINE 213 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_256_digest_size :: Int
c_sha3_256_digest_size = 32
{-# LINE 215 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_256_block_size :: Int
c_sha3_256_block_size = 136
{-# LINE 217 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha3_256_init"
	c_sha3_256_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha3_256_update"
	c_sha3_256_update :: NettleHashUpdate
foreign import ccall unsafe "hs_nettle_sha3_256_digest"
	c_sha3_256_digest :: NettleHashDigest

c_sha3_384_ctx_size :: Int
c_sha3_384_ctx_size = (312)
{-# LINE 226 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_384_digest_size :: Int
c_sha3_384_digest_size = 48
{-# LINE 228 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_384_block_size :: Int
c_sha3_384_block_size = 104
{-# LINE 230 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha3_384_init"
	c_sha3_384_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha3_384_update"
	c_sha3_384_update :: NettleHashUpdate
foreign import ccall unsafe "hs_nettle_sha3_384_digest"
	c_sha3_384_digest :: NettleHashDigest

c_sha3_512_ctx_size :: Int
c_sha3_512_ctx_size = (280)
{-# LINE 239 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_512_digest_size :: Int
c_sha3_512_digest_size = 64
{-# LINE 241 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha3_512_block_size :: Int
c_sha3_512_block_size = 72
{-# LINE 243 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha3_512_init"
	c_sha3_512_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha3_512_update"
	c_sha3_512_update :: NettleHashUpdate
foreign import ccall unsafe "hs_nettle_sha3_512_digest"
	c_sha3_512_digest :: NettleHashDigest

c_md5_ctx_size :: Int
c_md5_ctx_size = (96)
{-# LINE 252 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_md5_digest_size :: Int
c_md5_digest_size = 16
{-# LINE 254 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_md5_block_size :: Int
c_md5_block_size = 64
{-# LINE 256 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_md5_init"
	c_md5_init :: NettleHashInit
foreign import ccall unsafe "nettle_md5_update"
	c_md5_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_md5_digest"
	c_md5_digest :: NettleHashDigest

c_md2_ctx_size :: Int
c_md2_ctx_size = (84)
{-# LINE 265 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_md2_digest_size :: Int
c_md2_digest_size = 16
{-# LINE 267 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_md2_block_size :: Int
c_md2_block_size = 16
{-# LINE 269 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_md2_init"
	c_md2_init :: NettleHashInit
foreign import ccall unsafe "nettle_md2_update"
	c_md2_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_md2_digest"
	c_md2_digest :: NettleHashDigest

c_md4_ctx_size :: Int
c_md4_ctx_size = (96)
{-# LINE 278 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_md4_digest_size :: Int
c_md4_digest_size = 16
{-# LINE 280 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_md4_block_size :: Int
c_md4_block_size = 64
{-# LINE 282 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_md4_init"
	c_md4_init :: NettleHashInit
foreign import ccall unsafe "nettle_md4_update"
	c_md4_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_md4_digest"
	c_md4_digest :: NettleHashDigest

c_ripemd160_ctx_size :: Int
c_ripemd160_ctx_size = (104)
{-# LINE 291 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_ripemd160_digest_size :: Int
c_ripemd160_digest_size = 20
{-# LINE 293 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_ripemd160_block_size :: Int
c_ripemd160_block_size = 64
{-# LINE 295 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_ripemd160_init"
	c_ripemd160_init :: NettleHashInit
foreign import ccall unsafe "nettle_ripemd160_update"
	c_ripemd160_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_ripemd160_digest"
	c_ripemd160_digest :: NettleHashDigest

c_sha1_ctx_size :: Int
c_sha1_ctx_size = (104)
{-# LINE 304 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha1_digest_size :: Int
c_sha1_digest_size = 20
{-# LINE 306 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_sha1_block_size :: Int
c_sha1_block_size = 64
{-# LINE 308 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_sha1_init"
	c_sha1_init :: NettleHashInit
foreign import ccall unsafe "nettle_sha1_update"
	c_sha1_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_sha1_digest"
	c_sha1_digest :: NettleHashDigest

c_gosthash94_ctx_size :: Int
c_gosthash94_ctx_size = (104)
{-# LINE 317 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_gosthash94_digest_size :: Int
c_gosthash94_digest_size = 32
{-# LINE 319 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_gosthash94_block_size :: Int
c_gosthash94_block_size = 32
{-# LINE 321 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_gosthash94_init"
	c_gosthash94_init :: NettleHashInit
foreign import ccall unsafe "nettle_gosthash94_update"
	c_gosthash94_update :: NettleHashUpdate
foreign import ccall unsafe "nettle_gosthash94_digest"
	c_gosthash94_digest :: NettleHashDigest


c_umac32_ctx_size :: Int
c_umac32_ctx_size = (2392)
{-# LINE 331 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_umac32_digest_size :: Int
c_umac32_digest_size = 4
{-# LINE 333 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_umac32_set_key"
	c_umac32_set_key :: Ptr Word8 -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac32_set_nonce"
	c_umac32_set_nonce :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac32_update"
	c_umac32_update :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac32_digest"
	c_umac32_digest :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()

c_umac64_ctx_size :: Int
c_umac64_ctx_size = (2520)
{-# LINE 344 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_umac64_digest_size :: Int
c_umac64_digest_size = 8
{-# LINE 346 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_umac64_set_key"
	c_umac64_set_key :: Ptr Word8 -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac64_set_nonce"
	c_umac64_set_nonce :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac64_update"
	c_umac64_update :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac64_digest"
	c_umac64_digest :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()

c_umac96_ctx_size :: Int
c_umac96_ctx_size = (2640)
{-# LINE 357 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_umac96_digest_size :: Int
c_umac96_digest_size = 12
{-# LINE 359 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_umac96_set_key"
	c_umac96_set_key :: Ptr Word8 -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac96_set_nonce"
	c_umac96_set_nonce :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac96_update"
	c_umac96_update :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac96_digest"
	c_umac96_digest :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()

c_umac128_ctx_size :: Int
c_umac128_ctx_size = (2768)
{-# LINE 370 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
c_umac128_digest_size :: Int
c_umac128_digest_size = 16
{-# LINE 372 "src/Crypto/Nettle/Hash/ForeignImports.hsc" #-}
foreign import ccall unsafe "nettle_umac128_set_key"
	c_umac128_set_key :: Ptr Word8 -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac128_set_nonce"
	c_umac128_set_nonce :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac128_update"
	c_umac128_update :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()
foreign import ccall unsafe "nettle_umac128_digest"
	c_umac128_digest :: Ptr Word8 -> Word -> Ptr Word8 -> IO ()