module Crypto.Argon2.FFI where
import Foreign
import Foreign.C
foreign import ccall unsafe "argon2.h argon2i_hash_encoded" argon2i_hash_encoded :: (Word32) -> (Word32) -> (Word32) -> Ptr a -> CSize -> Ptr b -> CSize -> CSize -> CString -> CSize -> IO (Int32)
foreign import ccall unsafe "argon2.h argon2i_hash_raw" argon2i_hash_raw :: (Word32) -> (Word32) -> (Word32) -> Ptr a -> CSize -> Ptr b -> CSize -> Ptr c -> CSize -> IO (Int32)
foreign import ccall unsafe "argon2.h argon2d_hash_encoded" argon2d_hash_encoded :: (Word32) -> (Word32) -> (Word32) -> Ptr a -> CSize -> Ptr b -> CSize -> CSize -> CString -> CSize -> IO (Int32)
foreign import ccall unsafe "argon2.h argon2d_hash_raw" argon2d_hash_raw :: (Word32) -> (Word32) -> (Word32) -> Ptr a -> CSize -> Ptr b -> CSize -> Ptr c -> CSize -> IO (Int32)
foreign import ccall unsafe "argon2.h argon2i_verify" argon2i_verify :: CString -> Ptr a -> CSize -> IO (Int32)
foreign import ccall unsafe "argon2.h argon2d_verify" argon2d_verify :: CString -> Ptr a -> CSize -> IO (Int32)
foreign import ccall unsafe "argon2.h argon2_encodedlen" argon2_encodedlen :: (Word32) -> (Word32) -> (Word32) -> (Word32) -> (Word32) -> IO CSize
pattern ARGON2_OK = (0)
pattern ARGON2_OUTPUT_PTR_NULL = (1)
pattern ARGON2_OUTPUT_TOO_SHORT = (2)
pattern ARGON2_OUTPUT_TOO_LONG = (3)
pattern ARGON2_PWD_TOO_SHORT = (4)
pattern ARGON2_PWD_TOO_LONG = (5)
pattern ARGON2_SALT_TOO_SHORT = (6)
pattern ARGON2_SALT_TOO_LONG = (7)
pattern ARGON2_AD_TOO_SHORT = (8)
pattern ARGON2_AD_TOO_LONG = (9)
pattern ARGON2_SECRET_TOO_SHORT = (10)
pattern ARGON2_SECRET_TOO_LONG = (11)
pattern ARGON2_TIME_TOO_SMALL = (12)
pattern ARGON2_TIME_TOO_LARGE = (13)
pattern ARGON2_MEMORY_TOO_LITTLE = (14)
pattern ARGON2_MEMORY_TOO_MUCH = (15)
pattern ARGON2_LANES_TOO_FEW = (16)
pattern ARGON2_LANES_TOO_MANY = (17)
pattern ARGON2_PWD_PTR_MISMATCH = (18)
pattern ARGON2_SALT_PTR_MISMATCH = (19)
pattern ARGON2_SECRET_PTR_MISMATCH = (20)
pattern ARGON2_AD_PTR_MISMATCH = (21)
pattern ARGON2_MEMORY_ALLOCATION_ERROR = (22)
pattern ARGON2_FREE_MEMORY_CBK_NULL = (23)
pattern ARGON2_ALLOCATE_MEMORY_CBK_NULL = (24)
pattern ARGON2_INCORRECT_PARAMETER = (25)
pattern ARGON2_INCORRECT_TYPE = (26)
pattern ARGON2_OUT_PTR_MISMATCH = (27)
pattern ARGON2_THREADS_TOO_FEW = (28)
pattern ARGON2_THREADS_TOO_MANY = (29)
pattern ARGON2_MISSING_ARGS = (30)
pattern ARGON2_ENCODING_FAIL = (31)
pattern ARGON2_DECODING_FAIL = (32)
pattern ARGON2_MIN_LANES = (1)
pattern ARGON2_MAX_LANES = (16777215)
pattern ARGON2_MIN_THREADS = (1)
pattern ARGON2_MAX_THREADS = (16777215)
pattern ARGON2_SYNC_POINTS = (4)
pattern ARGON2_MIN_OUTLEN = (4)
pattern ARGON2_MAX_OUTLEN = (4294967295)
pattern ARGON2_MIN_MEMORY = (8)
pattern ARGON2_MAX_MEMORY_BITS = (32)
pattern ARGON2_MAX_MEMORY = (4294967295)
pattern ARGON2_MIN_TIME = (1)
pattern ARGON2_MAX_TIME = (4294967295)
pattern ARGON2_MIN_PWD_LENGTH = (0)
pattern ARGON2_MAX_PWD_LENGTH = (4294967295)
pattern ARGON2_MIN_AD_LENGTH = (0)
pattern ARGON2_MAX_AD_LENGTH = (4294967295)
pattern ARGON2_MIN_SALT_LENGTH = (8)
pattern ARGON2_MAX_SALT_LENGTH = (4294967295)
pattern ARGON2_MIN_SECRET = (0)
pattern ARGON2_MAX_SECRET = (4294967295)
pattern ARGON2_FLAG_CLEAR_PASSWORD = (1)
pattern ARGON2_FLAG_CLEAR_SECRET = (2)
pattern ARGON2_FLAG_CLEAR_MEMORY = (4)
pattern ARGON2_DEFAULT_FLAGS = (4)