diff options
Diffstat (limited to 'ffi/src/store.rs')
-rw-r--r-- | ffi/src/store.rs | 253 |
1 files changed, 121 insertions, 132 deletions
diff --git a/ffi/src/store.rs b/ffi/src/store.rs index 3b4baa50..2a2c18cf 100644 --- a/ffi/src/store.rs +++ b/ffi/src/store.rs @@ -44,10 +44,10 @@ use MoveResultIntoRaw; use Maybe; /// Lists all stores with the given prefix. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_list_stores(ctx: *mut Context, - domain_prefix: *const c_char) - -> *mut StoreIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_list_stores(ctx: *mut Context, + domain_prefix: *const c_char) + -> *mut StoreIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let domain_prefix = ffi_param_cstr!(domain_prefix).to_string_lossy(); @@ -61,12 +61,12 @@ pub extern "system" fn sq_store_list_stores(ctx: *mut Context, /// stores domain is stored there. If `namep` is not `NULL`, the /// stores name is stored there. If `policyp` is not `NULL`, the /// stores network policy is stored there. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_iter_next(iter: *mut StoreIter, - domainp: Option<&mut *mut c_char>, - namep: Option<&mut *mut c_char>, - policyp: Option<&mut uint8_t>) - -> *mut Store { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_iter_next(iter: *mut StoreIter, + domainp: Option<&mut *mut c_char>, + namep: Option<&mut *mut c_char>, + policyp: Option<&mut uint8_t>) + -> *mut Store { let iter = ffi_param_ref_mut!(iter); match iter.next() { Some((domain, name, policy, store)) => { @@ -89,15 +89,14 @@ pub extern "system" fn sq_store_iter_next(iter: *mut StoreIter, } /// Frees a sq_store_iter_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_iter_free(iter: Option<&mut StoreIter>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_iter_free(iter: Option<&mut StoreIter>) { ffi_free!(iter) } /// Lists all keys in the common key pool. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_list_keys(ctx: *mut Context) - -> *mut KeyIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_list_keys(ctx: *mut Context) -> *mut KeyIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); @@ -105,9 +104,8 @@ pub extern "system" fn sq_store_list_keys(ctx: *mut Context) } /// Lists all log entries. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_server_log(ctx: *mut Context) - -> *mut LogIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_server_log(ctx: *mut Context) -> *mut LogIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); @@ -118,10 +116,10 @@ pub extern "system" fn sq_store_server_log(ctx: *mut Context) /// /// Returns `NULL` on exhaustion. If `fpp` is not `NULL`, the key's /// fingerprint is stored there. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_iter_next(iter: *mut KeyIter, - fpp: Option<&mut Maybe<Fingerprint>>) - -> *mut Key { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_iter_next(iter: *mut KeyIter, + fpp: Option<&mut Maybe<Fingerprint>>) + -> *mut Key { let iter = ffi_param_ref_mut!(iter); match iter.next() { Some((fingerprint, key)) => { @@ -141,8 +139,8 @@ pub extern "system" fn sq_key_iter_next(iter: *mut KeyIter, } /// Frees a sq_key_iter_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_iter_free(iter: Option<&mut KeyIter>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_iter_free(iter: Option<&mut KeyIter>) { ffi_free!(iter) } @@ -150,9 +148,8 @@ pub extern "system" fn sq_key_iter_free(iter: Option<&mut KeyIter>) { /// Returns the next log entry. /// /// Returns `NULL` on exhaustion. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_log_iter_next(iter: *mut LogIter) - -> *mut Log { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_log_iter_next(iter: *mut LogIter) -> *mut Log { let iter = ffi_param_ref_mut!(iter); match iter.next() { Some(e) => { @@ -176,8 +173,8 @@ pub extern "system" fn sq_log_iter_next(iter: *mut LogIter) } /// Frees a sq_log_iter_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_log_iter_free(iter: Option<&mut LogIter>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_log_iter_free(iter: Option<&mut LogIter>) { ffi_free!(iter) } @@ -192,10 +189,10 @@ pub extern "system" fn sq_log_iter_free(iter: Option<&mut LogIter>) { /// of the context that created the store in the first place. /// Opening the store with a different network policy is /// forbidden. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_open(ctx: *mut Context, - name: *const c_char) - -> *mut Store { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_open(ctx: *mut Context, + name: *const c_char) + -> *mut Store { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let name = ffi_param_cstr!(name).to_string_lossy(); @@ -204,18 +201,18 @@ pub extern "system" fn sq_store_open(ctx: *mut Context, } /// Frees a sq_store_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_free(store: Option<&mut Store>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_free(store: Option<&mut Store>) { ffi_free!(store) } /// Adds a key identified by fingerprint to the store. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_add(ctx: *mut Context, - store: *const Store, - label: *const c_char, - fingerprint: *const Fingerprint) - -> *mut Binding { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_add(ctx: *mut Context, + store: *const Store, + label: *const c_char, + fingerprint: *const Fingerprint) + -> *mut Binding { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let store = ffi_param_ref!(store); @@ -226,12 +223,12 @@ pub extern "system" fn sq_store_add(ctx: *mut Context, } /// Imports a key into the store. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_import(ctx: *mut Context, - store: *const Store, - label: *const c_char, - tpk: *const TPK) - -> Maybe<TPK> { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_import(ctx: *mut Context, + store: *const Store, + label: *const c_char, + tpk: *const TPK) + -> Maybe<TPK> { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let store = ffi_param_ref!(store); @@ -242,11 +239,11 @@ pub extern "system" fn sq_store_import(ctx: *mut Context, } /// Returns the binding for the given label. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_lookup(ctx: *mut Context, - store: *const Store, - label: *const c_char) - -> *mut Binding { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_lookup(ctx: *mut Context, + store: *const Store, + label: *const c_char) + -> *mut Binding { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let store = ffi_param_ref!(store); @@ -256,9 +253,8 @@ pub extern "system" fn sq_store_lookup(ctx: *mut Context, } /// Looks up a key in the common key pool by KeyID. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_lookup_by_keyid(ctx: *mut Context, - keyid: *const KeyID) +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_lookup_by_keyid(ctx: *mut Context, keyid: *const KeyID) -> *mut Key { let ctx = ffi_param_ref_mut!(ctx); @@ -269,9 +265,8 @@ pub extern "system" fn sq_store_lookup_by_keyid(ctx: *mut Context, } /// Looks up a key in the common key pool by (Sub)KeyID. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_lookup_by_subkeyid(ctx: *mut Context, - keyid: *const KeyID) +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_lookup_by_subkeyid(ctx: *mut Context, keyid: *const KeyID) -> *mut Key { let ctx = ffi_param_ref_mut!(ctx); @@ -284,10 +279,9 @@ pub extern "system" fn sq_store_lookup_by_subkeyid(ctx: *mut Context, /// Deletes this store. /// /// Consumes `store`. Returns != 0 on error. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_delete(ctx: *mut Context, - store: *mut Store) - -> Status { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_delete(ctx: *mut Context, store: *mut Store) + -> Status { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let store = ffi_param_move!(store); @@ -296,10 +290,9 @@ pub extern "system" fn sq_store_delete(ctx: *mut Context, } /// Lists all bindings. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_iter(ctx: *mut Context, - store: *const Store) - -> *mut BindingIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_iter(ctx: *mut Context, store: *const Store) + -> *mut BindingIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let store = ffi_param_ref!(store); @@ -312,11 +305,11 @@ pub extern "system" fn sq_store_iter(ctx: *mut Context, /// Returns `NULL` on exhaustion. If `labelp` is not `NULL`, the /// bindings label is stored there. If `fpp` is not `NULL`, the /// bindings fingerprint is stored there. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_iter_next(iter: *mut BindingIter, - labelp: Option<&mut *mut c_char>, - fpp: Option<&mut Maybe<Fingerprint>>) - -> *mut Binding { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_iter_next(iter: *mut BindingIter, + labelp: Option<&mut *mut c_char>, + fpp: Option<&mut Maybe<Fingerprint>>) + -> *mut Binding { let iter = ffi_param_ref_mut!(iter); match iter.next() { Some((label, fp, binding)) => { @@ -340,16 +333,15 @@ pub extern "system" fn sq_binding_iter_next(iter: *mut BindingIter, } /// Frees a sq_binding_iter_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_iter_free(iter: Option<&mut BindingIter>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_iter_free(iter: Option<&mut BindingIter>) { ffi_free!(iter) } /// Lists all log entries related to this store. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_store_log(ctx: *mut Context, - store: *const Store) - -> *mut LogIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_store_log(ctx: *mut Context, store: *const Store) + -> *mut LogIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let store = ffi_param_ref!(store); @@ -358,20 +350,20 @@ pub extern "system" fn sq_store_log(ctx: *mut Context, } /// Frees a sq_binding_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_free(binding: Option<&mut Binding>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_free(binding: Option<&mut Binding>) { ffi_free!(binding) } /// Frees a sq_key_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_free(key: Option<&mut Key>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_free(key: Option<&mut Key>) { ffi_free!(key) } /// Frees a sq_log_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_log_free(log: Option<&mut Log>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_log_free(log: Option<&mut Log>) { if let Some(log) = log { let log = unsafe { Box::from_raw(log) }; if ! log.store.is_null() { @@ -393,10 +385,9 @@ pub extern "system" fn sq_log_free(log: Option<&mut Log>) { } /// Returns the `sq_stats_t` of this binding. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_stats(ctx: *mut Context, - binding: *const Binding) - -> *mut Stats { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_stats(ctx: *mut Context, binding: *const Binding) + -> *mut Stats { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let binding = ffi_param_ref!(binding); @@ -405,10 +396,9 @@ pub extern "system" fn sq_binding_stats(ctx: *mut Context, } /// Returns the `sq_key_t` of this binding. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_key(ctx: *mut Context, - binding: *const Binding) - -> *mut Key { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_key(ctx: *mut Context, binding: *const Binding) + -> *mut Key { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let binding = ffi_param_ref!(binding); @@ -417,10 +407,9 @@ pub extern "system" fn sq_binding_key(ctx: *mut Context, } /// Returns the `pgp_tpk_t` of this binding. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_tpk(ctx: *mut Context, - binding: *const Binding) - -> Maybe<TPK> { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_tpk(ctx: *mut Context, binding: *const Binding) + -> Maybe<TPK> { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let binding = ffi_param_ref!(binding); @@ -444,11 +433,11 @@ pub extern "system" fn sq_binding_tpk(ctx: *mut Context, /// `Error::Conflict` is returned, and you have to resolve the /// conflict, either by ignoring the new key, or by using /// `sq_binding_rotate` to force a rotation. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_import(ctx: *mut Context, - binding: *const Binding, - tpk: *const TPK) - -> Maybe<TPK> { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_import(ctx: *mut Context, + binding: *const Binding, + tpk: *const TPK) + -> Maybe<TPK> { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let binding = ffi_param_ref!(binding); @@ -471,11 +460,11 @@ pub extern "system" fn sq_binding_import(ctx: *mut Context, /// `tpk` properly. How to do that depends on your thread model. /// You could simply ask Alice to call her communication partner /// Bob and confirm that he rotated his keys. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_rotate(ctx: *mut Context, - binding: *const Binding, - tpk: *const TPK) - -> Maybe<TPK> { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_rotate(ctx: *mut Context, + binding: *const Binding, + tpk: *const TPK) + -> Maybe<TPK> { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let binding = ffi_param_ref!(binding); @@ -487,10 +476,10 @@ pub extern "system" fn sq_binding_rotate(ctx: *mut Context, /// Deletes this binding. /// /// Consumes `binding`. Returns != 0 on error. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_delete(ctx: *mut Context, - binding: *mut Binding) - -> Status { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_delete(ctx: *mut Context, + binding: *mut Binding) + -> Status { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let binding = ffi_param_move!(binding); @@ -499,10 +488,10 @@ pub extern "system" fn sq_binding_delete(ctx: *mut Context, } /// Lists all log entries related to this binding. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_binding_log(ctx: *mut Context, - binding: *const Binding) - -> *mut LogIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_binding_log(ctx: *mut Context, + binding: *const Binding) + -> *mut LogIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let binding = ffi_param_ref!(binding); @@ -511,10 +500,10 @@ pub extern "system" fn sq_binding_log(ctx: *mut Context, } /// Returns the `sq_stats_t` of this key. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_stats(ctx: *mut Context, - key: *const Key) - -> *mut Stats { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_stats(ctx: *mut Context, + key: *const Key) + -> *mut Stats { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let key = ffi_param_ref!(key); @@ -523,10 +512,10 @@ pub extern "system" fn sq_key_stats(ctx: *mut Context, } /// Returns the `pgp_tpk_t`. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_tpk(ctx: *mut Context, - key: *const Key) - -> Maybe<TPK> { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_tpk(ctx: *mut Context, + key: *const Key) + -> Maybe<TPK> { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let key = ffi_param_ref!(key); @@ -543,11 +532,11 @@ pub extern "system" fn sq_key_tpk(ctx: *mut Context, /// /// If the new key does not match the current key, /// `Error::Conflict` is returned. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_import(ctx: *mut Context, - key: *const Key, - tpk: *const TPK) - -> Maybe<TPK> { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_import(ctx: *mut Context, + key: *const Key, + tpk: *const TPK) + -> Maybe<TPK> { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let key = ffi_param_ref!(key); @@ -557,10 +546,10 @@ pub extern "system" fn sq_key_import(ctx: *mut Context, } /// Lists all log entries related to this key. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_key_log(ctx: *mut Context, - key: *const Key) - -> *mut LogIter { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_key_log(ctx: *mut Context, + key: *const Key) + -> *mut LogIter { let ctx = ffi_param_ref_mut!(ctx); ffi_make_fry_from_ctx!(ctx); let key = ffi_param_ref!(key); @@ -569,8 +558,8 @@ pub extern "system" fn sq_key_log(ctx: *mut Context, } /// Frees a sq_stats_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_stats_free(stats: Option<&mut Stats>) { +#[::ffi_catch_abort] #[no_mangle] pub extern "C" +fn sq_stats_free(stats: Option<&mut Stats>) { ffi_free!(stats) } |