summaryrefslogtreecommitdiffstats
path: root/src/gpgme.c
diff options
context:
space:
mode:
authorIngo Klöcker <[email protected]>2026-01-14 13:58:49 +0100
committerIngo Klöcker <[email protected]>2026-01-14 16:09:19 +0100
commit1823e06216f2e9eee302ae1233d635a4a92c03f6 (patch)
tree48dcdf844916b16f886b10d8dd2a0405c431420b /src/gpgme.c
parenttests: It's start-stop-agent which invokes gpg-agent. (diff)
downloadgpgme-1823e06216f2e9eee302ae1233d635a4a92c03f6.tar.gz
gpgme-1823e06216f2e9eee302ae1233d635a4a92c03f6.zip
Allow setting export filters when exporting keys
* src/context.h (struct gpgme_context): New field export_filter. * src/engine-backend.h (struct engine_ops): Add arg export_filter to field 'export' and field 'export_ext'. * src/engine-gpg.c (export_common): Add arg export_filter and pass option --export-filter with argument value to gpg. (gpg_export, gpg_export_ext): Add arg export_filter and pass it to export_common. Adjust all callers of the two functions. * src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Add dummy arg export_filter. * src/gpgme.c (gpgme_release): Free 'export_filter'. (gpgme_set_ctx_flag, gpgme_get_ctx_flag): New flag "export-filter". * tests/run-export.c (main): Add option --export-filter. -- This makes the --export-filter option available in the GPGME API for key exports. GnuPG-bug-id: 8033
Diffstat (limited to 'src/gpgme.c')
-rw-r--r--src/gpgme.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/gpgme.c b/src/gpgme.c
index f37d3fa6..7025b20b 100644
--- a/src/gpgme.c
+++ b/src/gpgme.c
@@ -263,6 +263,7 @@ gpgme_release (gpgme_ctx_t ctx)
free (ctx->import_filter);
free (ctx->import_options);
free (ctx->known_notations);
+ free (ctx->export_filter);
_gpgme_engine_info_release (ctx->engine_info);
ctx->engine_info = NULL;
DESTROY_LOCK (ctx->lock);
@@ -631,6 +632,13 @@ gpgme_set_ctx_flag (gpgme_ctx_t ctx, const char *name, const char *value)
if (!ctx->known_notations)
err = gpg_error_from_syserror ();
}
+ else if (!strcmp (name, "export-filter"))
+ {
+ free (ctx->export_filter);
+ ctx->export_filter = strdup (value);
+ if (!ctx->export_filter)
+ err = gpg_error_from_syserror ();
+ }
else
err = gpg_error (GPG_ERR_UNKNOWN_NAME);
@@ -728,6 +736,10 @@ gpgme_get_ctx_flag (gpgme_ctx_t ctx, const char *name)
{
return ctx->known_notations? ctx->known_notations: "";
}
+ else if (!strcmp (name, "export-filter"))
+ {
+ return ctx->export_filter? ctx->export_filter : "";
+ }
else
return NULL;
}