diff options
Diffstat (limited to 'ffi/src/openpgp/fingerprint.rs')
-rw-r--r-- | ffi/src/openpgp/fingerprint.rs | 110 |
1 files changed, 0 insertions, 110 deletions
diff --git a/ffi/src/openpgp/fingerprint.rs b/ffi/src/openpgp/fingerprint.rs deleted file mode 100644 index 0a043762..00000000 --- a/ffi/src/openpgp/fingerprint.rs +++ /dev/null @@ -1,110 +0,0 @@ -//! Handles Fingerprints. -//! -//! Wraps [`sequoia-openpgp::Fingerprint`]. -//! -//! [`sequoia-openpgp::Fingerprint`]: ../../../sequoia_openpgp/enum.Fingerprint.html - -use std::hash::{Hash, Hasher}; -use std::ptr; -use std::slice; -use libc::{uint8_t, uint64_t, c_char, size_t}; - -extern crate sequoia_openpgp; -use self::sequoia_openpgp::{Fingerprint, KeyID}; - -use build_hasher; - -/// Reads a binary fingerprint. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_from_bytes(buf: *const uint8_t, - len: size_t) - -> *mut Fingerprint { - assert!(!buf.is_null()); - let buf = unsafe { - slice::from_raw_parts(buf, len as usize) - }; - Box::into_raw(Box::new(Fingerprint::from_bytes(buf))) -} - -/// Reads a hexadecimal fingerprint. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_from_hex(hex: *const c_char) - -> *mut Fingerprint { - let hex = ffi_param_cstr!(hex).to_string_lossy(); - Fingerprint::from_hex(&hex) - .map(|fp| Box::into_raw(Box::new(fp))) - .unwrap_or(ptr::null_mut()) -} - -/// Frees a sq_fingerprint_t. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_free(fp: Option<&mut Fingerprint>) { - ffi_free!(fp) -} - -/// Clones the Fingerprint. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_clone(fp: *const Fingerprint) - -> *mut Fingerprint { - let fp = ffi_param_ref!(fp); - box_raw!(fp.clone()) -} - -/// Hashes the Fingerprint. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_hash(fp: *const Fingerprint) - -> uint64_t { - let fp = ffi_param_ref!(fp); - let mut hasher = build_hasher(); - fp.hash(&mut hasher); - hasher.finish() -} - -/// Returns a reference to the raw Fingerprint. -/// -/// This returns a reference to the internal buffer that is valid as -/// long as the fingerprint is. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_as_bytes(fp: *const Fingerprint, - fp_len: Option<&mut size_t>) - -> *const uint8_t { - let fp = ffi_param_ref!(fp); - if let Some(p) = fp_len { - *p = fp.as_slice().len(); - } - fp.as_slice().as_ptr() -} - -/// Converts the fingerprint to its standard representation. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_to_string(fp: *const Fingerprint) - -> *mut c_char { - let fp = ffi_param_ref!(fp); - ffi_return_string!(fp.to_string()) -} - -/// Converts the fingerprint to a hexadecimal number. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_to_hex(fp: *const Fingerprint) - -> *mut c_char { - let fp = ffi_param_ref!(fp); - ffi_return_string!(fp.to_hex()) -} - -/// Converts the fingerprint to a key ID. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_to_keyid(fp: *const Fingerprint) - -> *mut KeyID { - let fp = ffi_param_ref!(fp); - Box::into_raw(Box::new(fp.to_keyid())) -} - -/// Compares Fingerprints. -#[::ffi_catch_abort] #[no_mangle] -pub extern "system" fn sq_fingerprint_equal(a: *const Fingerprint, - b: *const Fingerprint) - -> bool { - let a = ffi_param_ref!(a); - let b = ffi_param_ref!(b); - a == b -} |