summaryrefslogtreecommitdiffstats
path: root/ffi
diff options
context:
space:
mode:
authorJustus Winter <justus@sequoia-pgp.org>2019-01-15 15:26:09 +0100
committerJustus Winter <justus@sequoia-pgp.org>2019-01-15 18:02:37 +0100
commitaf870aa2bf8b844c8fab3f09cc7942c4c761dc06 (patch)
tree5748fe2f1d789201297a8d616e44885c5a05c254 /ffi
parent4b6c6cd19b4a98ab27fc9f16fbe80272cba7ed8a (diff)
ffi: Move TSK glue to a new module.
Diffstat (limited to 'ffi')
-rw-r--r--ffi/src/openpgp/mod.rs65
-rw-r--r--ffi/src/openpgp/tsk.rs81
2 files changed, 82 insertions, 64 deletions
diff --git a/ffi/src/openpgp/mod.rs b/ffi/src/openpgp/mod.rs
index f3316944..ca3b5531 100644
--- a/ffi/src/openpgp/mod.rs
+++ b/ffi/src/openpgp/mod.rs
@@ -18,7 +18,6 @@ use self::openpgp::{
KeyID,
RevocationStatus,
TPK,
- TSK,
Packet,
packet::{
Signature,
@@ -45,7 +44,6 @@ use self::openpgp::parse::stream::{
Verifier,
DetachedVerifier,
};
-use self::openpgp::serialize::Serialize;
use self::openpgp::constants::{
DataFormat,
};
@@ -59,6 +57,7 @@ pub mod fingerprint;
pub mod keyid;
pub mod packet_pile;
pub mod tpk;
+pub mod tsk;
/* openpgp::packet::Tag. */
@@ -123,68 +122,6 @@ pub extern "system" fn sq_revocation_status_free(
ffi_free!(rs)
}
-/* TSK */
-
-/// Generates a new RSA 3072 bit key with UID `primary_uid`.
-#[no_mangle]
-pub extern "system" fn sq_tsk_new(ctx: *mut Context,
- primary_uid: *const c_char,
- tsk_out: *mut *mut TSK,
- revocation_out: *mut *mut Signature)
- -> Status
-{
- let ctx = ffi_param_ref_mut!(ctx);
- assert!(!primary_uid.is_null());
- let tsk_out = ffi_param_ref_mut!(tsk_out);
- let revocation_out = ffi_param_ref_mut!(revocation_out);
- let primary_uid = unsafe {
- CStr::from_ptr(primary_uid)
- };
- match TSK::new(primary_uid.to_string_lossy()) {
- Ok((tsk, revocation)) => {
- *tsk_out = box_raw!(tsk);
- *revocation_out = box_raw!(revocation);
- Status::Success
- },
- Err(e) => fry_status!(ctx, Err::<(), failure::Error>(e)),
- }
-}
-
-/// Frees the TSK.
-#[no_mangle]
-pub extern "system" fn sq_tsk_free(tsk: Option<&mut TSK>) {
- ffi_free!(tsk)
-}
-
-/// Returns a reference to the corresponding TPK.
-#[no_mangle]
-pub extern "system" fn sq_tsk_tpk(tsk: *const TSK)
- -> *const TPK {
- let tsk = ffi_param_ref!(tsk);
- tsk.tpk()
-}
-
-/// Converts the TSK into a TPK.
-#[no_mangle]
-pub extern "system" fn sq_tsk_into_tpk(tsk: *mut TSK)
- -> *mut TPK {
- let tsk = ffi_param_move!(tsk);
- box_raw!(tsk.into_tpk())
-}
-
-
-/// Serializes the TSK.
-#[no_mangle]
-pub extern "system" fn sq_tsk_serialize(ctx: *mut Context,
- tsk: *const TSK,
- writer: *mut Box<Write>)
- -> Status {
- let ctx = ffi_param_ref_mut!(ctx);
- let tsk = ffi_param_ref!(tsk);
- let writer = ffi_param_ref_mut!(writer);
- fry_status!(ctx, tsk.serialize(writer))
-}
-
/* openpgp::Packet. */
/// Frees the Packet.
diff --git a/ffi/src/openpgp/tsk.rs b/ffi/src/openpgp/tsk.rs
new file mode 100644
index 00000000..a92124d9
--- /dev/null
+++ b/ffi/src/openpgp/tsk.rs
@@ -0,0 +1,81 @@
+//! Handles TSKs.
+//!
+//! Wraps [`sequoia-openpgp::TSK`].
+//!
+//! [`sequoia-openpgp::TSK`]: ../../../sequoia_openpgp/struct.TSK.html
+
+use failure;
+use std::ffi::CStr;
+use std::io::Write;
+use libc::c_char;
+
+extern crate sequoia_openpgp;
+use self::sequoia_openpgp::{
+ TPK,
+ TSK,
+ packet::Signature,
+ serialize::Serialize,
+};
+
+use ::core::Context;
+use ::error::Status;
+
+/// Generates a new RSA 3072 bit key with UID `primary_uid`.
+#[no_mangle]
+pub extern "system" fn sq_tsk_new(ctx: *mut Context,
+ primary_uid: *const c_char,
+ tsk_out: *mut *mut TSK,
+ revocation_out: *mut *mut Signature)
+ -> Status
+{
+ let ctx = ffi_param_ref_mut!(ctx);
+ assert!(!primary_uid.is_null());
+ let tsk_out = ffi_param_ref_mut!(tsk_out);
+ let revocation_out = ffi_param_ref_mut!(revocation_out);
+ let primary_uid = unsafe {
+ CStr::from_ptr(primary_uid)
+ };
+ match TSK::new(primary_uid.to_string_lossy()) {
+ Ok((tsk, revocation)) => {
+ *tsk_out = box_raw!(tsk);
+ *revocation_out = box_raw!(revocation);
+ Status::Success
+ },
+ Err(e) => fry_status!(ctx, Err::<(), failure::Error>(e)),
+ }
+}
+
+/// Frees the TSK.
+#[no_mangle]
+pub extern "system" fn sq_tsk_free(tsk: Option<&mut TSK>) {
+ ffi_free!(tsk)
+}
+
+/// Returns a reference to the corresponding TPK.
+#[no_mangle]
+pub extern "system" fn sq_tsk_tpk(tsk: *const TSK)
+ -> *const TPK {
+ let tsk = ffi_param_ref!(tsk);
+ tsk.tpk()
+}
+
+/// Converts the TSK into a TPK.
+#[no_mangle]
+pub extern "system" fn sq_tsk_into_tpk(tsk: *mut TSK)
+ -> *mut TPK {
+ let tsk = ffi_param_move!(tsk);
+ box_raw!(tsk.into_tpk())
+}
+
+
+/// Serializes the TSK.
+#[no_mangle]
+pub extern "system" fn sq_tsk_serialize(ctx: *mut Context,
+ tsk: *const TSK,
+ writer: *mut Box<Write>)
+ -> Status {
+ let ctx = ffi_param_ref_mut!(ctx);
+ let tsk = ffi_param_ref!(tsk);
+ let writer = ffi_param_ref_mut!(writer);
+ fry_status!(ctx, tsk.serialize(writer))
+}