module Bindings.Nettle.Cipher.Salsa20 where
import Foreign.Ptr (Ptr,FunPtr,plusPtr)
import Foreign.Ptr (wordPtrToPtr,castPtrToFunPtr)
import Foreign.Storable
import Foreign.C.Types
import Foreign.C.String (CString,CStringLen,CWString,CWStringLen)
import Foreign.Marshal.Alloc (alloca)
import Foreign.Marshal.Array (peekArray,pokeArray)
import Data.Int
import Data.Word
c'SALSA20_BLOCK_SIZE = 64
c'SALSA20_BLOCK_SIZE :: (Num a) => a
c'SALSA20_MIN_KEY_SIZE = 16
c'SALSA20_MIN_KEY_SIZE :: (Num a) => a
c'SALSA20_MAX_KEY_SIZE = 32
c'SALSA20_MAX_KEY_SIZE :: (Num a) => a
c'SALSA20_KEY_SIZE = 32
c'SALSA20_KEY_SIZE :: (Num a) => a
c'SALSA20_IV_SIZE = 8
c'SALSA20_IV_SIZE :: (Num a) => a
data C'salsa20_ctx = C'salsa20_ctx{
} deriving (Eq,Show)
instance Storable C'salsa20_ctx where
sizeOf _ = 64
alignment _ = 4
peek p = do
return $ C'salsa20_ctx
poke p (C'salsa20_ctx) = do
return ()
foreign import ccall "nettle_salsa20_set_key" c'nettle_salsa20_set_key
:: Ptr C'salsa20_ctx -> CUInt -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_salsa20_set_key" p'nettle_salsa20_set_key
:: FunPtr (Ptr C'salsa20_ctx -> CUInt -> Ptr CUChar -> IO ())
foreign import ccall "nettle_salsa20_set_iv" c'nettle_salsa20_set_iv
:: Ptr C'salsa20_ctx -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_salsa20_set_iv" p'nettle_salsa20_set_iv
:: FunPtr (Ptr C'salsa20_ctx -> Ptr CUChar -> IO ())
foreign import ccall "nettle_salsa20_crypt" c'nettle_salsa20_crypt
:: Ptr C'salsa20_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_salsa20_crypt" p'nettle_salsa20_crypt
:: FunPtr (Ptr C'salsa20_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ())
foreign import ccall "nettle_salsa20r12_crypt" c'nettle_salsa20r12_crypt
:: Ptr C'salsa20_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_salsa20r12_crypt" p'nettle_salsa20r12_crypt
:: FunPtr (Ptr C'salsa20_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ())