aboutsummaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.c
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2017-03-21 08:38:11 +0000
committerWerner Koch <[email protected]>2017-03-21 08:50:23 +0000
commit35023f313622fb1b34108dd934e84831c58b81aa (patch)
tree8edded69231ac5addea605570ac237b1ae358313 /src/engine-gpg.c
parentcore,cpp: New key flag 'is_de_vs'. (diff)
downloadgpgme-35023f313622fb1b34108dd934e84831c58b81aa.tar.gz
gpgme-35023f313622fb1b34108dd934e84831c58b81aa.zip
core: New public API gpgme_op_keylist_from_data_start.
* src/gpgme.h.in: New API gpgme_op_keylist_from_data_start. * src/libgpgme.vers, src/gpgme.def: Add it. * src/keylist.c (gpgme_op_keylist_from_data_start): New. * src/engine-backend.h (engine_ops): Add field 'keylist_data'. Change all engines to pass NULL for it. * src/engine.c (_gpgme_engine_op_keylist_data): New. * src/engine-gpg.c (gpg_keylist_data): New. (_gpgme_engine_ops_gpg): Register gpg_keylist_data. * tests/run-keylist.c (main): New option --from-file. -- Co-authored-by: Werner Koch <[email protected]> GnuPG-bug-id: 2819
Diffstat (limited to 'src/engine-gpg.c')
-rw-r--r--src/engine-gpg.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index 59cf405a..4b87a8a0 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -2731,6 +2731,38 @@ gpg_keylist_ext (void *engine, const char *pattern[], int secret_only,
static gpgme_error_t
+gpg_keylist_data (void *engine, gpgme_data_t data)
+{
+ engine_gpg_t gpg = engine;
+ gpgme_error_t err;
+
+ if (!have_gpg_version (gpg, "2.1.14"))
+ return gpg_error (GPG_ERR_NOT_SUPPORTED);
+
+ err = add_arg (gpg, "--with-colons");
+ if (!err)
+ err = add_arg (gpg, "--with-fingerprint");
+ if (!err)
+ err = add_arg (gpg, "--import-options");
+ if (!err)
+ err = add_arg (gpg, "import-show");
+ if (!err)
+ err = add_arg (gpg, "--dry-run");
+ if (!err)
+ err = add_arg (gpg, "--import");
+ if (!err)
+ err = add_arg (gpg, "--");
+ if (!err)
+ err = add_data (gpg, data, -1, 0);
+
+ if (!err)
+ err = start (gpg);
+
+ return err;
+}
+
+
+static gpgme_error_t
gpg_keysign (void *engine, gpgme_key_t key, const char *userid,
unsigned long expire, unsigned int flags,
gpgme_ctx_t ctx)
@@ -3013,6 +3045,7 @@ struct engine_ops _gpgme_engine_ops_gpg =
gpg_import,
gpg_keylist,
gpg_keylist_ext,
+ gpg_keylist_data,
gpg_keysign,
gpg_tofu_policy, /* tofu_policy */
gpg_sign,