summaryrefslogtreecommitdiffstats
path: root/ffi/src/store.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ffi/src/store.rs')
-rw-r--r--ffi/src/store.rs253
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)
}