summaryrefslogtreecommitdiffstats
path: root/ffi/src/openpgp.rs
diff options
context:
space:
mode:
Diffstat (limited to 'ffi/src/openpgp.rs')
-rw-r--r--ffi/src/openpgp.rs36
1 files changed, 36 insertions, 0 deletions
diff --git a/ffi/src/openpgp.rs b/ffi/src/openpgp.rs
index 3db1aa70..d98aa50c 100644
--- a/ffi/src/openpgp.rs
+++ b/ffi/src/openpgp.rs
@@ -24,6 +24,7 @@ use self::openpgp::{
Packet,
packet::{
Signature,
+ Tag,
PKESK,
SKESK,
key::SecretKey,
@@ -62,6 +63,41 @@ use super::build_hasher;
use super::error::Status;
use super::core::Context;
+/* openpgp::packet::Tag. */
+
+/// Returns a human-readable tag name.
+///
+/// ```c
+/// #include <assert.h>
+/// #include <string.h>
+/// #include <sequoia.h>
+///
+/// assert (strcmp (sq_tag_to_string (2), "SIGNATURE") == 0);
+/// ```
+#[no_mangle]
+pub extern "system" fn sq_tag_to_string(tag: u8) -> *const c_char {
+ match Tag::from(tag) {
+ Tag::PKESK => "PKESK\x00",
+ Tag::Signature => "SIGNATURE\x00",
+ Tag::SKESK => "SKESK\x00",
+ Tag::OnePassSig => "ONE PASS SIG\x00",
+ Tag::SecretKey => "SECRET KEY\x00",
+ Tag::PublicKey => "PUBLIC KEY\x00",
+ Tag::SecretSubkey => "SECRET SUBKEY\x00",
+ Tag::CompressedData => "COMPRESSED DATA\x00",
+ Tag::SED => "SED\x00",
+ Tag::Marker => "MARKER\x00",
+ Tag::Literal => "LITERAL\x00",
+ Tag::Trust => "TRUST\x00",
+ Tag::UserID => "USER ID\x00",
+ Tag::PublicSubkey => "PUBLIC SUBKEY\x00",
+ Tag::UserAttribute => "USER ATTRIBUTE\x00",
+ Tag::SEIP => "SEIP\x00",
+ Tag::MDC => "MDC\x00",
+ _ => "OTHER\x00",
+ }.as_bytes().as_ptr() as *const c_char
+}
+
/* sequoia::openpgp::KeyID. */
/// Reads a binary key ID.