module Bindings.APR.Random 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
import Bindings.APR
import Bindings.APR.ErrNo
import Bindings.APR.Pools
import Bindings.APR.Thread.Proc
data C'apr_crypto_hash_t = C'apr_crypto_hash_t
type C'apr_crypto_hash_init_t = FunPtr (Ptr C'apr_crypto_hash_t -> IO ())
foreign import ccall "wrapper" mk'apr_crypto_hash_init_t
:: (Ptr C'apr_crypto_hash_t -> IO ()) -> IO C'apr_crypto_hash_init_t
foreign import ccall "dynamic" mK'apr_crypto_hash_init_t
:: C'apr_crypto_hash_init_t -> (Ptr C'apr_crypto_hash_t -> IO ())
type C'apr_crypto_hash_add_t = FunPtr (Ptr C'apr_crypto_hash_t -> Ptr () -> C'apr_size_t -> IO ())
foreign import ccall "wrapper" mk'apr_crypto_hash_add_t
:: (Ptr C'apr_crypto_hash_t -> Ptr () -> C'apr_size_t -> IO ()) -> IO C'apr_crypto_hash_add_t
foreign import ccall "dynamic" mK'apr_crypto_hash_add_t
:: C'apr_crypto_hash_add_t -> (Ptr C'apr_crypto_hash_t -> Ptr () -> C'apr_size_t -> IO ())
type C'apr_crypto_hash_finish_t = FunPtr (Ptr C'apr_crypto_hash_t -> Ptr CUChar -> IO ())
foreign import ccall "wrapper" mk'apr_crypto_hash_finish_t
:: (Ptr C'apr_crypto_hash_t -> Ptr CUChar -> IO ()) -> IO C'apr_crypto_hash_finish_t
foreign import ccall "dynamic" mK'apr_crypto_hash_finish_t
:: C'apr_crypto_hash_finish_t -> (Ptr C'apr_crypto_hash_t -> Ptr CUChar -> IO ())
foreign import ccall "apr_crypto_sha256_new" c'apr_crypto_sha256_new
:: Ptr C'apr_pool_t -> IO (Ptr C'apr_crypto_hash_t)
foreign import ccall "&apr_crypto_sha256_new" p'apr_crypto_sha256_new
:: FunPtr (Ptr C'apr_pool_t -> IO (Ptr C'apr_crypto_hash_t))
data C'apr_random_t = C'apr_random_t
foreign import ccall "apr_random_init" c'apr_random_init
:: Ptr C'apr_random_t -> Ptr C'apr_pool_t -> Ptr C'apr_crypto_hash_t -> Ptr C'apr_crypto_hash_t -> Ptr C'apr_crypto_hash_t -> IO ()
foreign import ccall "&apr_random_init" p'apr_random_init
:: FunPtr (Ptr C'apr_random_t -> Ptr C'apr_pool_t -> Ptr C'apr_crypto_hash_t -> Ptr C'apr_crypto_hash_t -> Ptr C'apr_crypto_hash_t -> IO ())
foreign import ccall "apr_random_standard_new" c'apr_random_standard_new
:: Ptr C'apr_pool_t -> IO (Ptr C'apr_random_t)
foreign import ccall "&apr_random_standard_new" p'apr_random_standard_new
:: FunPtr (Ptr C'apr_pool_t -> IO (Ptr C'apr_random_t))
foreign import ccall "apr_random_add_entropy" c'apr_random_add_entropy
:: Ptr C'apr_random_t -> Ptr () -> C'apr_size_t -> IO ()
foreign import ccall "&apr_random_add_entropy" p'apr_random_add_entropy
:: FunPtr (Ptr C'apr_random_t -> Ptr () -> C'apr_size_t -> IO ())
foreign import ccall "apr_random_insecure_bytes" c'apr_random_insecure_bytes
:: Ptr C'apr_random_t -> Ptr () -> C'apr_size_t -> IO C'apr_status_t
foreign import ccall "&apr_random_insecure_bytes" p'apr_random_insecure_bytes
:: FunPtr (Ptr C'apr_random_t -> Ptr () -> C'apr_size_t -> IO C'apr_status_t)
foreign import ccall "apr_random_secure_bytes" c'apr_random_secure_bytes
:: Ptr C'apr_random_t -> Ptr () -> C'apr_size_t -> IO C'apr_status_t
foreign import ccall "&apr_random_secure_bytes" p'apr_random_secure_bytes
:: FunPtr (Ptr C'apr_random_t -> Ptr () -> C'apr_size_t -> IO C'apr_status_t)
foreign import ccall "apr_random_barrier" c'apr_random_barrier
:: Ptr C'apr_random_t -> IO ()
foreign import ccall "&apr_random_barrier" p'apr_random_barrier
:: FunPtr (Ptr C'apr_random_t -> IO ())
foreign import ccall "apr_random_secure_ready" c'apr_random_secure_ready
:: Ptr C'apr_random_t -> IO C'apr_status_t
foreign import ccall "&apr_random_secure_ready" p'apr_random_secure_ready
:: FunPtr (Ptr C'apr_random_t -> IO C'apr_status_t)
foreign import ccall "apr_random_insecure_ready" c'apr_random_insecure_ready
:: Ptr C'apr_random_t -> IO C'apr_status_t
foreign import ccall "&apr_random_insecure_ready" p'apr_random_insecure_ready
:: FunPtr (Ptr C'apr_random_t -> IO C'apr_status_t)
foreign import ccall "apr_random_after_fork" c'apr_random_after_fork
:: Ptr C'apr_proc_t -> IO ()
foreign import ccall "&apr_random_after_fork" p'apr_random_after_fork
:: FunPtr (Ptr C'apr_proc_t -> IO ())