From 0e19c4879193ed7fa61ad5d488f237b2b5b5d1d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingo=20Kl=C3=B6cker?= Date: Mon, 3 Jan 2022 16:25:40 +0100 Subject: core: New export mode to export secret subkeys. * src/gpgme.h.in (GPGME_EXPORT_MODE_SECRET_SUBKEY): New. * src/export.c (check_mode): Allow new mode and check for invalid combinations. (export_keys_start): Return error if new mode flag is set. * src/engine-gpg.c (export_common): Implement. * src/gpgme-tool.c (cmd_export): New option --secret-subkey. * tests/run-export.c (main): New option --secret-subkey. -- This adds support for exporting secret subkeys (via gpg's --export-secret-subkeys) to gpgme_op_export[_ext][_start]. The flag is not supported by gpgme_op_export_keys[_start] because there is no way to specify which subkey(s) to export with these functions. GnuPG-bug-id: 5757 --- tests/run-export.c | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'tests') diff --git a/tests/run-export.c b/tests/run-export.c index 623c7331..f071b8c2 100644 --- a/tests/run-export.c +++ b/tests/run-export.c @@ -128,6 +128,11 @@ main (int argc, char **argv) mode |= GPGME_EXPORT_MODE_SECRET; argc--; argv++; } + else if (!strcmp (*argv, "--secret-subkey")) + { + mode |= GPGME_EXPORT_MODE_SECRET_SUBKEY; + argc--; argv++; + } else if (!strcmp (*argv, "--raw")) { mode |= GPGME_EXPORT_MODE_RAW; @@ -165,6 +170,16 @@ main (int argc, char **argv) mode = GPGME_EXPORT_MODE_SSH; /* Set only this bit for this test. */ keyarray[0] = NULL; + err = gpgme_op_export_ext (ctx, (const char**)argv, mode, out); + fail_if_err (err); + } + else if ((mode & GPGME_EXPORT_MODE_SECRET_SUBKEY)) + { + keyarray[0] = NULL; + + printf ("exporting secret subkeys!\n"); + + gpgme_set_armor (ctx, 1); err = gpgme_op_export_ext (ctx, (const char**)argv, mode, out); fail_if_err (err); } -- cgit v1.2.3