diff options
| author | Werner Koch <[email protected]> | 2015-08-24 10:41:24 +0000 | 
|---|---|---|
| committer | Werner Koch <[email protected]> | 2015-08-24 10:41:24 +0000 | 
| commit | 2b632bbb78eee2b94c122f66d171a7c80e9c4fb0 (patch) | |
| tree | 5e49878e39a7f63eb9d311752e52c32ecc4ee091 /tests | |
| parent | Parse INQUIRE_MAXLEN in the passphrase callback. (diff) | |
| download | gpgme-2b632bbb78eee2b94c122f66d171a7c80e9c4fb0.tar.gz gpgme-2b632bbb78eee2b94c122f66d171a7c80e9c4fb0.zip | |
Add an export secret key feature.
* src/gpgme.h.in (GPGME_EXPORT_MODE_SECRET): New.
(GPGME_EXPORT_MODE_RAW): New.
(GPGME_EXPORT_MODE_PKCS12): New.
* src/export.c (export_start, export_ext_start): Allow new flags.
* src/engine-gpg.c (export_common): Support secret key export.
* src/engine-gpgsm.c (gpgsm_export, gpgsm_export_ext): Ditto.
* src/gpgme-tool.c (cmd_export): Add options --secret, --raw,
and --pkcs12.
* tests/run-export.c (main): Likewise.
--
Note that exporting secret X.509 keys requires GnuPG 2.1.8.
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/run-export.c | 41 | 
1 files changed, 37 insertions, 4 deletions
| diff --git a/tests/run-export.c b/tests/run-export.c index 43332087..b133f130 100644 --- a/tests/run-export.c +++ b/tests/run-export.c @@ -43,7 +43,12 @@ show_usage (int ex)    fputs ("usage: " PGM " [options] USERIDS\n\n"           "Options:\n"           "  --verbose        run in verbose mode\n" +         "  --openpgp        use OpenPGP protocol (default)\n" +         "  --cms            use X.509 protocol\n"           "  --extern         send keys to the keyserver (TAKE CARE!)\n" +         "  --secret         export secret keys instead of public keys\n" +         "  --raw            use PKCS#1 as secret key format\n" +         "  --pkcs12         use PKCS#12 as secret key format\n"           , stderr);    exit (ex);  } @@ -59,6 +64,7 @@ main (int argc, char **argv)    gpgme_key_t keyarray[100];    int keyidx = 0;    gpgme_data_t out; +  gpgme_protocol_t protocol = GPGME_PROTOCOL_OpenPGP;    gpgme_export_mode_t mode = 0;    if (argc) @@ -79,9 +85,34 @@ main (int argc, char **argv)            verbose = 1;            argc--; argv++;          } +      else if (!strcmp (*argv, "--openpgp")) +        { +          protocol = GPGME_PROTOCOL_OpenPGP; +          argc--; argv++; +        } +      else if (!strcmp (*argv, "--cms")) +        { +          protocol = GPGME_PROTOCOL_CMS; +          argc--; argv++; +        }        else if (!strcmp (*argv, "--extern"))          { -          mode |= GPGME_KEYLIST_MODE_EXTERN; +          mode |= GPGME_EXPORT_MODE_EXTERN; +          argc--; argv++; +        } +      else if (!strcmp (*argv, "--secret")) +        { +          mode |= GPGME_EXPORT_MODE_SECRET; +          argc--; argv++; +        } +      else if (!strcmp (*argv, "--raw")) +        { +          mode |= GPGME_EXPORT_MODE_RAW; +          argc--; argv++; +        } +      else if (!strcmp (*argv, "--pkcs12")) +        { +          mode |= GPGME_EXPORT_MODE_PKCS12;            argc--; argv++;          }        else if (!strncmp (*argv, "--", 2)) @@ -92,11 +123,11 @@ main (int argc, char **argv)    if (!argc)      show_usage (1); -  init_gpgme (GPGME_PROTOCOL_OpenPGP); +  init_gpgme (protocol);    err = gpgme_new (&ctx);    fail_if_err (err); -  gpgme_set_protocol (ctx, GPGME_PROTOCOL_OpenPGP); +  gpgme_set_protocol (ctx, protocol);    /* Lookup the keys.  */    err = gpgme_op_keylist_ext_start (ctx, (const char**)argv, 0, 0); @@ -131,8 +162,10 @@ main (int argc, char **argv)      }    /* Now for the actual export.  */ -  if ((mode & GPGME_KEYLIST_MODE_EXTERN)) +  if ((mode & GPGME_EXPORT_MODE_EXTERN))      printf ("sending keys to keyserver\n"); +  if ((mode & GPGME_EXPORT_MODE_SECRET)) +    printf ("exporting secret keys!\n");    err = gpgme_data_new (&out);    fail_if_err (err); | 
