packages feed

botan-bindings-0.0.1.0: src/Botan/Bindings/X509/Store.hs

module Botan.Bindings.X509.Store where

import Botan.Bindings.Error
import Botan.Bindings.Prelude
import Botan.Bindings.PubKey
import Botan.Bindings.RNG
import Botan.Bindings.X509

data X509CertStoreStruct
type X509CertStorePtr = Ptr X509CertStoreStruct

foreign import ccall unsafe "&botan_x509_cert_store_destroy" botan_x509_cert_store_destroy :: FinalizerPtr X509CertStoreStruct

foreign import ccall unsafe botan_x509_cert_store_find_cert
    :: Ptr X509CertPtr
    -> X509CertStorePtr
    -> Ptr Word8 -> CSize
    -> Ptr Word8 -> CSize
    -> IO BotanErrorCode

-- // NOTE: Returns an array of results
-- // SEE: Discussion on arrays / ownership
-- NOTE: FFI function is actually x509_cert_t** but should be x509_cert_t* like here
foreign import ccall unsafe botan_x509_cert_store_find_all_certs
    :: Ptr X509CertPtr -> Ptr CSize
    -> X509CertStorePtr
    -> Ptr Word8 -> CSize
    -> Ptr Word8 -> CSize
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_find_cert_by_pubkey_sha1
    :: Ptr X509CertPtr
    -> X509CertStorePtr
    -> Ptr Word8        -- NOTE: SHA1 hash length is static, so we can just drop the size_t
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_find_cert_by_raw_subject_dn_sha256
    :: Ptr X509CertPtr
    -> X509CertStorePtr
    -> Ptr Word8        -- NOTE: SHA1 hash length is static, so we can just drop the size_t
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_find_crl_for
    :: Ptr X509CRLPtr
    -> X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

-- // NOTE: Returns cert_store.certificate_known ? 0 : -1;
foreign import ccall unsafe botan_x509_cert_store_certificate_known
    :: X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

{-
In-memory cert store
-}

foreign import ccall unsafe botan_x509_cert_store_in_memory_load_dir
    :: Ptr X509CertStorePtr
    -> Ptr CChar
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_in_memory_load_cert
    :: Ptr X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_in_memory_create
    :: Ptr X509CertStorePtr
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_in_memory_add_certificate
    :: X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_in_memory_add_crl
    :: X509CertStorePtr
    -> X509CRLPtr
    -> IO BotanErrorCode

{-
Flatfile cert store
-}

foreign import ccall unsafe botan_x509_cert_store_flatfile_create
    :: Ptr X509CertStorePtr
    -> Ptr CChar
    -> CBool
    -> IO BotanErrorCode

{-
SQL cert store
-}

-- NOTE: Returns boolean success code
foreign import ccall unsafe botan_x509_cert_store_sql_insert_cert
    :: X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

-- NOTE: Returns boolean success code
foreign import ccall unsafe botan_x509_cert_store_sql_remove_cert
    :: X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

-- NOTE: Returns nullPtr if not found
foreign import ccall unsafe botan_x509_cert_store_sql_find_key
    :: Ptr PrivKeyPtr
    -> X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

-- NOTE: See notes about returning arrays of things, improper return pointer type
foreign import ccall unsafe botan_x509_cert_store_sql_find_certs_for_key
    :: Ptr X509CertPtr -> Ptr CSize
    -> X509CertStorePtr
    -> PrivKeyPtr
    -> IO BotanErrorCode

-- NOTE: Returns boolean success code
foreign import ccall unsafe botan_x509_cert_store_sql_insert_key
    :: X509CertStorePtr
    -> X509CertPtr
    -> PrivKeyPtr
    -> IO BotanErrorCode

-- NOTE: *DOES NOT* return boolean success code
foreign import ccall unsafe botan_x509_cert_store_sql_remove_key
    :: X509CertStorePtr
    -> PrivKeyPtr
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_sql_revoke_cert
    :: X509CertStorePtr
    -> X509CertPtr
    -> Word32
    -> Word64
    -> IO BotanErrorCode

foreign import ccall unsafe botan_x509_cert_store_sql_affirm_cert
    :: X509CertStorePtr
    -> X509CertPtr
    -> IO BotanErrorCode

-- NOTE: See notes about returning arrays of things, improper return pointer type
foreign import ccall unsafe botan_x509_cert_store_sql_generate_crls
    :: Ptr X509CRLPtr -> Ptr CSize
    -> X509CertStorePtr
    -> IO BotanErrorCode

{-
SQLite3 cert store
-}

foreign import ccall unsafe botan_x509_cert_store_sqlite3_create
    :: Ptr X509CertStorePtr
    -> Ptr CChar
    -> Ptr CChar
    -> RNGPtr
    -> Ptr CChar
    -> IO BotanErrorCode

{-
System cert store
-}

foreign import ccall unsafe botan_x509_cert_store_system_create
    :: Ptr X509CertStorePtr
    -> IO BotanErrorCode

{-
MacOS cert store
-}

foreign import ccall unsafe botan_x509_cert_store_macos_create
    :: Ptr X509CertStorePtr
    -> IO BotanErrorCode

{-
Windows cert store
-}

foreign import ccall unsafe botan_x509_cert_store_windows_create
    :: Ptr X509CertStorePtr
    -> IO BotanErrorCode