summaryrefslogtreecommitdiffstats
path: root/src/engine-gpg.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/engine-gpg.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/engine-gpg.c')
-rw-r--r--src/engine-gpg.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c
index c3c0b9d4..b43740bd 100644
--- a/src/engine-gpg.c
+++ b/src/engine-gpg.c
@@ -2783,7 +2783,8 @@ gpg_encrypt_sign (void *engine, gpgme_key_t recp[],
static gpgme_error_t
export_common (engine_gpg_t gpg, gpgme_export_mode_t mode,
- gpgme_data_t keydata, int use_armor)
+ gpgme_data_t keydata, const char *export_filter,
+ int use_armor)
{
gpgme_error_t err = 0;
@@ -2798,6 +2799,12 @@ export_common (engine_gpg_t gpg, gpgme_export_mode_t mode,
{
err = add_arg (gpg, "--export-options=export-minimal");
}
+ if (!err && export_filter && have_gpg_version (gpg, "2.1.14"))
+ {
+ err = add_arg (gpg, "--export-filter");
+ if (!err)
+ err = add_arg (gpg, export_filter);
+ }
if (err)
;
@@ -2836,12 +2843,12 @@ export_common (engine_gpg_t gpg, gpgme_export_mode_t mode,
static gpgme_error_t
gpg_export (void *engine, const char *pattern, gpgme_export_mode_t mode,
- gpgme_data_t keydata, int use_armor)
+ gpgme_data_t keydata, const char *export_filter, int use_armor)
{
engine_gpg_t gpg = engine;
gpgme_error_t err;
- err = export_common (gpg, mode, keydata, use_armor);
+ err = export_common (gpg, mode, keydata, export_filter, use_armor);
if (!err && pattern && *pattern)
err = add_arg (gpg, pattern);
@@ -2855,12 +2862,12 @@ gpg_export (void *engine, const char *pattern, gpgme_export_mode_t mode,
static gpgme_error_t
gpg_export_ext (void *engine, const char *pattern[], gpgme_export_mode_t mode,
- gpgme_data_t keydata, int use_armor)
+ gpgme_data_t keydata, const char *export_filter, int use_armor)
{
engine_gpg_t gpg = engine;
gpgme_error_t err;
- err = export_common (gpg, mode, keydata, use_armor);
+ err = export_common (gpg, mode, keydata, export_filter, use_armor);
if (pattern)
{