aboutsummaryrefslogtreecommitdiff
path: root/plugins/openpgp/vapi/gpgme.vapi
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/openpgp/vapi/gpgme.vapi')
-rw-r--r--plugins/openpgp/vapi/gpgme.vapi673
1 files changed, 673 insertions, 0 deletions
diff --git a/plugins/openpgp/vapi/gpgme.vapi b/plugins/openpgp/vapi/gpgme.vapi
new file mode 100644
index 00000000..10fdb89d
--- /dev/null
+++ b/plugins/openpgp/vapi/gpgme.vapi
@@ -0,0 +1,673 @@
+/* libgpgme.vapi
+ *
+ * Copyright (C) 2009 Sebastian Reichel <sre@ring0.de>
+ * Copyright (C) 2022 Itay Grudev <itay+git2022@grudev.com>
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ *
+ */
+
+[CCode (lower_case_cprefix = "gpgme_", cheader_filename = "gpgme.h,gpgme_fix.h")]
+namespace GPG {
+ public static GLib.RecMutex global_mutex;
+
+ [CCode (cname = "struct _gpgme_engine_info")]
+ public struct EngineInfo {
+ EngineInfo* next;
+ Protocol protocol;
+ string file_name;
+ string version;
+ string req_version;
+ string? home_dir;
+ }
+
+ [Compact]
+ [CCode (cname = "struct _gpgme_key", ref_function = "gpgme_key_ref", ref_function_void = true, unref_function = "gpgme_key_unref", free_function = "gpgme_key_release")]
+ public class Key {
+ public bool revoked;
+ public bool expired;
+ public bool disabled;
+ public bool invalid;
+ public bool can_encrypt;
+ public bool can_sign;
+ public bool can_certify;
+ public bool secret;
+ public bool can_authenticate;
+ public bool is_qualified;
+ public Protocol protocol;
+ public string issuer_serial;
+ public string issuer_name;
+ public string chain_id;
+ public Validity owner_trust;
+ [CCode(array_null_terminated = true)]
+ public SubKey[] subkeys;
+ [CCode(array_null_terminated = true)]
+ public UserID[] uids;
+ public KeylistMode keylist_mode;
+ public string fpr { get { return subkeys[0].fpr; } }
+ }
+
+ [CCode (cname = "struct _gpgme_sig_notation")]
+ public struct SigNotation {
+ SigNotation* next;
+ string? name;
+ string value;
+ int name_len;
+ int value_len;
+ SigNotationFlags flags;
+ bool human_readable;
+ bool critical;
+ }
+
+ [CCode (cname = "struct _gpgme_subkey")]
+ public struct SubKey {
+ SubKey* next;
+ bool revoked;
+ bool expired;
+ bool disabled;
+ bool invalid;
+ bool can_encrypt;
+ bool can_sign;
+ bool can_certify;
+ bool secret;
+ bool can_authenticate;
+ bool is_qualified;
+ bool is_cardkey;
+ PublicKeyAlgorithm algo;
+ uint length;
+ string keyid;
+ string fpr;
+ long timestamp;
+ long expires;
+ string? card_number;
+ }
+
+ [CCode (cname = "struct _gpgme_key_sig")]
+ public struct KeySig {
+ KeySig* next;
+ bool revoked;
+ bool expired;
+ bool invalid;
+ bool exportable;
+ PublicKeyAlgorithm algo;
+ string keyid;
+ long timestamp;
+ long expires;
+ GPGError.Error status;
+ string uid;
+ string name;
+ string email;
+ string comment;
+ uint sig_class;
+ SigNotation notations;
+ }
+
+ [CCode (cname = "struct _gpgme_user_id")]
+ public struct UserID {
+ UserID* next;
+ bool revoked;
+ bool invalid;
+ Validity validity;
+ string uid;
+ string name;
+ string email;
+ string comment;
+ KeySig signatures;
+ }
+
+ [CCode (cname = "struct _gpgme_op_verify_result")]
+ public struct VerifyResult {
+ Signature* signatures;
+ string? file_name;
+ }
+
+ [CCode (cname = "struct _gpgme_op_sign_result")]
+ public struct SignResult {
+ InvalidKey invalid_signers;
+ Signature* signatures;
+ }
+
+ [CCode (cname = "struct _gpgme_op_encrypt_result")]
+ public struct EncryptResult {
+ InvalidKey invalid_signers;
+ }
+
+ [CCode (cname = "struct _gpgme_op_decrypt_result")]
+ public struct DecryptResult {
+ string unsupported_algorithm;
+ bool wrong_key_usage;
+ Recipient recipients;
+ string file_name;
+ }
+
+ [CCode (cname = "struct _gpgme_recipient")]
+ public struct Recipient {
+ Recipient *next;
+ string keyid;
+ PublicKeyAlgorithm pubkey_algo;
+ GPGError.Error status;
+ }
+
+ [CCode (cname = "struct _gpgme_invalid_key")]
+ public struct InvalidKey {
+ InvalidKey *next;
+ string fpr;
+ GPGError.Error reason;
+ }
+
+ [CCode (cname = "struct _gpgme_signature")]
+ public struct Signature {
+ Signature *next;
+ Sigsum summary;
+ string fpr;
+ GPGError.Error status;
+ SigNotation notations;
+ ulong timestamp;
+ ulong exp_timestamp;
+ bool wrong_key_usage;
+ PKAStatus pka_trust;
+ bool chain_model;
+ Validity validity;
+ GPGError.Error validity_reason;
+ PublicKeyAlgorithm pubkey_algo;
+ HashAlgorithm hash_algo;
+ string? pka_address;
+ }
+
+ public enum PKAStatus {
+ NOT_AVAILABLE,
+ BAD,
+ OKAY,
+ RFU
+ }
+
+ [CCode (cname = "gpgme_sigsum_t", cprefix = "GPGME_SIGSUM_")]
+ public enum Sigsum {
+ VALID,
+ GREEN,
+ RED,
+ KEY_REVOKED,
+ KEY_EXPIRED,
+ SIG_EXPIRED,
+ KEY_MISSING,
+ CRL_MISSING,
+ CRL_TOO_OLD,
+ BAD_POLICY,
+ SYS_ERROR
+ }
+
+ [CCode (cname = "gpgme_data_encoding_t", cprefix = "GPGME_DATA_ENCODING_")]
+ public enum DataEncoding {
+ NONE,
+ BINARY,
+ BASE64,
+ ARMOR,
+ URL,
+ URLESC,
+ URL0
+ }
+
+ [CCode (cname = "gpgme_pubkey_algo_t", cprefix = "GPGME_PK_")]
+ public enum PublicKeyAlgorithm {
+ RSA,
+ RSA_E,
+ RSA_S,
+ ELG_E,
+ DSA,
+ ELG
+ }
+
+ [CCode (cname = "gpgme_hash_algo_t", cprefix = "GPGME_MD_")]
+ public enum HashAlgorithm {
+ NONE,
+ MD5,
+ SHA1,
+ RMD160,
+ MD2,
+ TIGER,
+ HAVAL,
+ SHA256,
+ SHA384,
+ SHA512,
+ MD4,
+ CRC32,
+ CRC32_RFC1510,
+ CRC24_RFC2440
+ }
+
+ [CCode (cname = "gpgme_sig_mode_t", cprefix = "GPGME_SIG_MODE_")]
+ public enum SigMode {
+ NORMAL,
+ DETACH,
+ CLEAR
+ }
+
+ [CCode (cname = "gpgme_validity_t", cprefix = "GPGME_VALIDITY_")]
+ public enum Validity {
+ UNKNOWN,
+ UNDEFINED,
+ NEVER,
+ MARGINAL,
+ FULL,
+ ULTIMATE
+ }
+
+ [CCode (cname = "gpgme_protocol_t", cprefix = "GPGME_PROTOCOL_")]
+ public enum Protocol {
+ OpenPGP,
+ CMS,
+ GPGCONF,
+ ASSUAN,
+ UNKNOWN
+ }
+
+ [CCode (cname = "gpgme_keylist_mode_t", cprefix = "GPGME_KEYLIST_MODE_")]
+ public enum KeylistMode {
+ LOCAL,
+ EXTERN,
+ SIGS,
+ SIG_NOTATIONS,
+ EPHEMERAL,
+ VALIDATE
+ }
+
+ [CCode (cname = "gpgme_export_mode_t", cprefix = "GPGME_EXPORT_MODE_")]
+ public enum ExportMode {
+ EXTERN
+ }
+
+ [CCode (cprefix = "GPGME_AUDITLOG_")]
+ public enum AuditLogFlag {
+ HTML,
+ WITH_HELP
+ }
+
+ [CCode (cname = "gpgme_sig_notation_flags_t", cprefix = "GPGME_SIG_NOTATION_")]
+ public enum SigNotationFlags {
+ HUMAN_READABLE,
+ CRITICAL
+ }
+
+ [CCode (cname = "gpgme_encrypt_flags_t", cprefix = "GPGME_ENCRYPT_")]
+ public enum EncryptFlags {
+ ALWAYS_TRUST,
+ NO_ENCRYPT_TO
+ }
+
+ [CCode (cname = "gpgme_status_code_t", cprefix = "GPGME_STATUS_")]
+ public enum StatusCode {
+ EOF,
+ ENTER,
+ LEAVE,
+ ABORT,
+ GOODSIG,
+ BADSIG,
+ ERRSIG,
+ BADARMOR,
+ RSA_OR_IDEA,
+ KEYEXPIRED,
+ KEYREVOKED,
+ TRUST_UNDEFINED,
+ TRUST_NEVER,
+ TRUST_MARGINAL,
+ TRUST_FULLY,
+ TRUST_ULTIMATE,
+ SHM_INFO,
+ SHM_GET,
+ SHM_GET_BOOL,
+ SHM_GET_HIDDEN,
+ NEED_PASSPHRASE,
+ VALIDSIG,
+ SIG_ID,
+ SIG_TO,
+ ENC_TO,
+ NODATA,
+ BAD_PASSPHRASE,
+ NO_PUBKEY,
+ NO_SECKEY,
+ NEED_PASSPHRASE_SYM,
+ DECRYPTION_FAILED,
+ DECRYPTION_OKAY,
+ MISSING_PASSPHRASE,
+ GOOD_PASSPHRASE,
+ GOODMDC,
+ BADMDC,
+ ERRMDC,
+ IMPORTED,
+ IMPORT_OK,
+ IMPORT_PROBLEM,
+ IMPORT_RES,
+ FILE_START,
+ FILE_DONE,
+ FILE_ERROR,
+ BEGIN_DECRYPTION,
+ END_DECRYPTION,
+ BEGIN_ENCRYPTION,
+ END_ENCRYPTION,
+ DELETE_PROBLEM,
+ GET_BOOL,
+ GET_LINE,
+ GET_HIDDEN,
+ GOT_IT,
+ PROGRESS,
+ SIG_CREATED,
+ SESSION_KEY,
+ NOTATION_NAME,
+ NOTATION_DATA,
+ POLICY_URL,
+ BEGIN_STREAM,
+ END_STREAM,
+ KEY_CREATED,
+ USERID_HINT,
+ UNEXPECTED,
+ INV_RECP,
+ NO_RECP,
+ ALREADY_SIGNED,
+ SIGEXPIRED,
+ EXPSIG,
+ EXPKEYSIG,
+ TRUNCATED,
+ ERROR,
+ NEWSIG,
+ REVKEYSIG,
+ SIG_SUBPACKET,
+ NEED_PASSPHRASE_PIN,
+ SC_OP_FAILURE,
+ SC_OP_SUCCESS,
+ CARDCTRL,
+ BACKUP_KEY_CREATED,
+ PKA_TRUST_BAD,
+ PKA_TRUST_GOOD,
+ PLAINTEXT
+ }
+
+ [Compact]
+ [CCode (cname = "struct gpgme_context", free_function = "gpgme_release", cprefix = "gpgme_")]
+ public class Context {
+ private static GPGError.Error new(out Context ctx);
+
+ public static Context create() throws GLib.Error {
+ Context ctx;
+ throw_if_error(@new(out ctx));
+ return ctx;
+ }
+
+ public GPGError.Error set_protocol(Protocol p);
+ public Protocol get_protocol();
+
+ public void set_armor(bool yes);
+ public bool get_armor();
+
+ public void set_textmode(bool yes);
+ public bool get_textmode();
+
+ public GPGError.Error set_keylist_mode(KeylistMode mode);
+ public KeylistMode get_keylist_mode();
+
+ public void set_include_certs(int nr_of_certs = -256);
+
+ public int get_include_certs();
+
+ public void set_passphrase_cb(passphrase_callback cb, void* hook_value = null);
+
+ public void get_passphrase_cb(out passphrase_callback cb, out void* hook_value);
+
+ public GPGError.Error set_locale(int category, string val);
+
+ [CCode (cname = "gpgme_ctx_get_engine_info")]
+ public EngineInfo* get_engine_info();
+
+ [CCode (cname = "gpgme_ctx_set_engine_info")]
+ public GPGError.Error set_engine_info(Protocol proto, string file_name, string home_dir);
+
+ public void signers_clear();
+
+ public GPGError.Error signers_add(Key key);
+
+ public Key* signers_enum(int n);
+
+ public void sig_notation_clear();
+
+ public GPGError.Error sig_notation_add(string name, string val, SigNotationFlags flags);
+
+ public SigNotation* sig_notation_get();
+
+ [CCode (cname = "gpgme_get_key")]
+ private GPGError.Error get_key_(string fpr, out Key key, bool secret);
+
+ [CCode (cname = "gpgme_get_key_")]
+ public Key get_key(string fpr, bool secret) throws GLib.Error {
+ Key key;
+ throw_if_error(get_key_(fpr, out key, secret));
+ return key;
+ }
+
+ public Context* wait(out GPGError.Error status, bool hang);
+
+ public SignResult* op_sign_result();
+
+ [CCode (cname = "gpgme_op_sign")]
+ public GPGError.Error op_sign_(Data plain, Data sig, SigMode mode);
+
+ [CCode (cname = "gpgme_op_sign_")]
+ public Data op_sign(Data plain, SigMode mode) throws GLib.Error {
+ Data sig = Data.create();
+ throw_if_error(op_sign_(plain, sig, mode));
+ return sig;
+ }
+
+ public VerifyResult* op_verify_result();
+
+ [CCode (cname = "gpgme_op_verify")]
+ public GPGError.Error op_verify_(Data sig, Data signed_text, Data? plaintext);
+
+ [CCode (cname = "gpgme_op_verify_")]
+ public Data op_verify(Data sig, Data signed_text) throws GLib.Error {
+ Data plaintext = Data.create();
+ throw_if_error(op_verify_(sig, signed_text, plaintext));
+ return plaintext;
+ }
+
+ public EncryptResult* op_encrypt_result();
+
+ [CCode (cname = "gpgme_op_encrypt")]
+ public GPGError.Error op_encrypt_([CCode (array_length = false)] Key[] recp, EncryptFlags flags, Data plain, Data cipher);
+
+ [CCode (cname = "gpgme_op_encrypt_")]
+ public Data op_encrypt(Key[] recp, EncryptFlags flags, Data plain) throws GLib.Error {
+ Data cipher = Data.create();
+ throw_if_error(op_encrypt_(recp, flags, plain, cipher));
+ return cipher;
+ }
+
+ public DecryptResult* op_decrypt_result();
+
+ [CCode (cname = "gpgme_op_decrypt")]
+ public GPGError.Error op_decrypt_(Data cipher, Data plain);
+
+ [CCode (cname = "gpgme_op_decrypt_")]
+ public Data op_decrypt(Data cipher) throws GLib.Error {
+ Data plain = Data.create();
+ throw_if_error(op_decrypt_(cipher, plain));
+ return plain;
+ }
+
+ public GPGError.Error op_export(string? pattern, ExportMode mode, Data keydata);
+
+ public GPGError.Error op_import(Data keydata);
+
+ public unowned ImportResult op_import_result();
+
+ [CCode (cname = "gpgme_op_keylist_start")]
+ private GPGError.Error op_keylist_start_(string? pattern = null, int secret_only = 0);
+
+ [CCode (cname = "gpgme_op_keylist_start_")]
+ public void op_keylist_start(string? pattern = null, int secret_only = 0) throws GLib.Error {
+ throw_if_error(op_keylist_start_(pattern, secret_only));
+ }
+
+ [CCode (cname = "gpgme_op_keylist_next")]
+ private GPGError.Error op_keylist_next_(out Key key);
+
+ [CCode (cname = "gpgme_op_keylist_next_")]
+ public Key op_keylist_next() throws GLib.Error {
+ Key key;
+ throw_if_error(op_keylist_next_(out key));
+ return key;
+ }
+
+ [CCode (cname = "gpgme_op_keylist_end")]
+ private GPGError.Error op_keylist_end_();
+
+ [CCode (cname = "gpgme_op_keylist_end_")]
+ public void op_keylist_end() throws GLib.Error {
+ throw_if_error(op_keylist_end_());
+ }
+
+ public KeylistResult op_keylist_result();
+ }
+
+ [Flags]
+ [CCode (cname="unsigned int")]
+ public enum ImportStatusFlags {
+ [CCode (cname = "GPGME_IMPORT_NEW")]
+ NEW,
+ [CCode (cname = "GPGME_IMPORT_UID")]
+ UID,
+ [CCode (cname = "GPGME_IMPORT_SIG")]
+ SIG,
+ [CCode (cname = "GPGME_IMPORT_SUBKEY")]
+ SUBKEY,
+ [CCode (cname = "GPGME_IMPORT_SECRET")]
+ SECRET
+ }
+
+ [Compact]
+ [CCode (cname = "struct _gpgme_import_status")]
+ public class ImportStatus {
+ public ImportStatus? next;
+ public string fpr;
+ public GPGError.Error result;
+ public ImportStatusFlags status;
+ }
+
+ [Compact]
+ [CCode (cname = "struct _gpgme_op_import_result")]
+ public class ImportResult {
+ public int considered;
+ public int no_user_id;
+ public int imported;
+ public int imported_rsa;
+ public int unchanged;
+ public int new_user_ids;
+ public int new_sub_keys;
+ public int new_signatures;
+ public int new_revocations;
+ public int secret_read;
+ public int secret_imported;
+ public int secret_unchanged;
+ public int not_imported;
+ public ImportStatus imports;
+ }
+
+ [Compact]
+ [CCode (cname = "struct _gpgme_op_keylist_result")]
+ public class KeylistResult {
+ uint truncated;
+ }
+
+ [Compact]
+ [CCode (cname = "struct gpgme_data", free_function = "gpgme_data_release", cprefix = "gpgme_data_")]
+ public class Data {
+
+ public static GPGError.Error new(out Data d);
+
+ public static Data create() throws GLib.Error {
+ Data data;
+ throw_if_error(@new(out data));
+ return data;
+ }
+
+ [CCode (cname = "gpgme_data_new_from_mem")]
+ public static GPGError.Error new_from_memory(out Data d, char[] buffer, bool copy);
+
+ public static Data create_from_memory(uint8[] buffer, bool copy) throws GLib.Error {
+ Data data;
+ throw_if_error(new_from_memory(out data, (char[]) buffer, copy));
+ return data;
+ }
+
+ [CCode (cname = "gpgme_data_new_from_file")]
+ public static GPGError.Error new_from_file(out Data d, string filename, int copy = 1);
+
+ public static Data create_from_file(string filename, int copy = 1) throws GLib.Error {
+ Data data;
+ throw_if_error(new_from_file(out data, filename, copy));
+ return data;
+ }
+
+ [CCode (cname = "gpgme_data_release_and_get_mem")]
+ public string release_and_get_mem(out size_t len);
+
+ public ssize_t read([CCode (array_length = false)] uint8[] buf, size_t len);
+
+ public ssize_t write(uint8[] buf);
+
+ public long seek(long offset, int whence=0);
+
+ public GPGError.Error set_file_name(string file_name);
+
+ public DataEncoding *get_encoding();
+
+ public GPGError.Error set_encoding(DataEncoding enc);
+ }
+
+ [CCode (cname = "gpgme_get_protocol_name")]
+ public unowned string get_protocol_name(Protocol p);
+
+ [CCode (cname = "gpgme_pubkey_algo_name")]
+ public unowned string get_public_key_algorithm_name(PublicKeyAlgorithm algo);
+
+ [CCode (cname = "gpgme_hash_algo_name")]
+ public unowned string get_hash_algorithm_name(HashAlgorithm algo);
+
+ [CCode (cname = "gpgme_passphrase_cb_t", has_target = false)]
+ public delegate GPGError.Error passphrase_callback(void* hook, string uid_hint, string passphrase_info, bool prev_was_bad, int fd);
+
+ [CCode (cname = "gpgme_check_version")]
+ public unowned string check_version(string? required_version = null);
+
+ [CCode (cname = "gpgme_engine_check_version")]
+ public GPGError.Error engine_check_version(Protocol proto);
+
+ [CCode (cname = "gpgme_get_engine_info")]
+ public GPGError.Error get_engine_info(out EngineInfo? engine_info);
+
+ [CCode (cname = "gpgme_strerror_r")]
+ public int strerror_r(GPGError.Error err, uint8[] buf);
+
+ [CCode (cname = "gpgme_strerror")]
+ public unowned string strerror(GPGError.Error err);
+
+ private void throw_if_error(GPGError.Error error) throws GLib.Error {
+ if (error.code != GPGError.ErrorCode.NO_ERROR) {
+ throw new GLib.Error(-1, error.code, "%s", error.to_string());
+ }
+ }
+}