aboutsummaryrefslogtreecommitdiffstats
path: root/src/keylist.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/keylist.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/keylist.c')
-rw-r--r--src/keylist.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/keylist.c b/src/keylist.c
index de9bbb2f..c88a7ca5 100644
--- a/src/keylist.c
+++ b/src/keylist.c
@@ -1142,6 +1142,42 @@ gpgme_op_keylist_ext_start (gpgme_ctx_t ctx, const char *pattern[],
}
+/* Start a keylist operation within CTX to show keys contained
+ * in DATA. */
+gpgme_error_t
+gpgme_op_keylist_from_data_start (gpgme_ctx_t ctx, gpgme_data_t data,
+ int reserved)
+{
+ gpgme_error_t err;
+ void *hook;
+ op_data_t opd;
+
+ TRACE_BEG (DEBUG_CTX, "gpgme_op_keylist_from_data_start", ctx);
+
+ if (!ctx || !data || reserved)
+ return TRACE_ERR (gpg_error (GPG_ERR_INV_VALUE));
+
+ err = _gpgme_op_reset (ctx, 2);
+ if (err)
+ return TRACE_ERR (err);
+
+ err = _gpgme_op_data_lookup (ctx, OPDATA_KEYLIST, &hook,
+ sizeof (*opd), release_op_data);
+ opd = hook;
+ if (err)
+ return TRACE_ERR (err);
+
+ _gpgme_engine_set_status_handler (ctx->engine, keylist_status_handler, ctx);
+ err = _gpgme_engine_set_colon_line_handler (ctx->engine,
+ keylist_colon_handler, ctx);
+ if (err)
+ return TRACE_ERR (err);
+
+ err = _gpgme_engine_op_keylist_data (ctx->engine, data);
+ return TRACE_ERR (err);
+}
+
+
/* Return the next key from the keylist in R_KEY. */
gpgme_error_t
gpgme_op_keylist_next (gpgme_ctx_t ctx, gpgme_key_t *r_key)