{-# LINE 1 "Bindings/Nettle/Cipher/DES.hsc" #-}
{-# LANGUAGE ForeignFunctionInterface #-}
{-# LINE 2 "Bindings/Nettle/Cipher/DES.hsc" #-}


{-# LINE 4 "Bindings/Nettle/Cipher/DES.hsc" #-}

{-# LINE 5 "Bindings/Nettle/Cipher/DES.hsc" #-}

module Bindings.Nettle.Cipher.DES 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

{-# LINE 8 "Bindings/Nettle/Cipher/DES.hsc" #-}

c'DES_BLOCK_SIZE = 8
c'DES_BLOCK_SIZE :: (Num a) => a

{-# LINE 10 "Bindings/Nettle/Cipher/DES.hsc" #-}
c'DES_KEY_SIZE = 8
c'DES_KEY_SIZE :: (Num a) => a

{-# LINE 11 "Bindings/Nettle/Cipher/DES.hsc" #-}


{-# LINE 13 "Bindings/Nettle/Cipher/DES.hsc" #-}
data C'des_ctx = C'des_ctx{
} deriving (Eq,Show)
instance Storable C'des_ctx where
  sizeOf _ = 128
  alignment _ = 4
  peek p = do
    return $ C'des_ctx
  poke p (C'des_ctx) = do
    return ()

{-# LINE 14 "Bindings/Nettle/Cipher/DES.hsc" #-}

foreign import ccall "nettle_des_set_key" c'nettle_des_set_key
  :: Ptr C'des_ctx -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des_set_key" p'nettle_des_set_key
  :: FunPtr (Ptr C'des_ctx -> Ptr CUChar -> IO ())

{-# LINE 16 "Bindings/Nettle/Cipher/DES.hsc" #-}
foreign import ccall "nettle_des_encrypt" c'nettle_des_encrypt
  :: Ptr C'des_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des_encrypt" p'nettle_des_encrypt
  :: FunPtr (Ptr C'des_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ())

{-# LINE 17 "Bindings/Nettle/Cipher/DES.hsc" #-}
foreign import ccall "nettle_des_decrypt" c'nettle_des_decrypt
  :: Ptr C'des_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des_decrypt" p'nettle_des_decrypt
  :: FunPtr (Ptr C'des_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ())

{-# LINE 18 "Bindings/Nettle/Cipher/DES.hsc" #-}
foreign import ccall "nettle_des_check_parity" c'nettle_des_check_parity
  :: CUInt -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des_check_parity" p'nettle_des_check_parity
  :: FunPtr (CUInt -> Ptr CUChar -> IO ())

{-# LINE 19 "Bindings/Nettle/Cipher/DES.hsc" #-}
foreign import ccall "nettle_des_fix_parity" c'nettle_des_fix_parity
  :: CUInt -> Ptr CUChar -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des_fix_parity" p'nettle_des_fix_parity
  :: FunPtr (CUInt -> Ptr CUChar -> Ptr CUChar -> IO ())

{-# LINE 20 "Bindings/Nettle/Cipher/DES.hsc" #-}

c'DES3_BLOCK_SIZE = 8
c'DES3_BLOCK_SIZE :: (Num a) => a

{-# LINE 22 "Bindings/Nettle/Cipher/DES.hsc" #-}
c'DES3_KEY_SIZE = 24
c'DES3_KEY_SIZE :: (Num a) => a

{-# LINE 23 "Bindings/Nettle/Cipher/DES.hsc" #-}


{-# LINE 25 "Bindings/Nettle/Cipher/DES.hsc" #-}
data C'des3_ctx = C'des3_ctx{
} deriving (Eq,Show)
instance Storable C'des3_ctx where
  sizeOf _ = 384
  alignment _ = 4
  peek p = do
    return $ C'des3_ctx
  poke p (C'des3_ctx) = do
    return ()

{-# LINE 26 "Bindings/Nettle/Cipher/DES.hsc" #-}

foreign import ccall "nettle_des3_set_key" c'nettle_des3_set_key
  :: Ptr C'des3_ctx -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des3_set_key" p'nettle_des3_set_key
  :: FunPtr (Ptr C'des3_ctx -> Ptr CUChar -> IO ())

{-# LINE 28 "Bindings/Nettle/Cipher/DES.hsc" #-}
foreign import ccall "nettle_des3_encrypt" c'nettle_des3_encrypt
  :: Ptr C'des3_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des3_encrypt" p'nettle_des3_encrypt
  :: FunPtr (Ptr C'des3_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ())

{-# LINE 29 "Bindings/Nettle/Cipher/DES.hsc" #-}
foreign import ccall "nettle_des3_decrypt" c'nettle_des3_decrypt
  :: Ptr C'des3_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ()
foreign import ccall "&nettle_des3_decrypt" p'nettle_des3_decrypt
  :: FunPtr (Ptr C'des3_ctx -> CUInt -> Ptr CUChar -> Ptr CUChar -> IO ())

{-# LINE 30 "Bindings/Nettle/Cipher/DES.hsc" #-}