diff options
author | Werner Koch <[email protected]> | 2020-07-16 10:00:46 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2020-07-16 10:00:46 +0000 |
commit | 7f9e0ca57b29cc96bd1ca717d891c11db7435c5a (patch) | |
tree | 626649d39737ff25e85c035e64777b8898cf03fe /src | |
parent | core: Deprecate the non-working trustlist functions. (diff) | |
download | gpgme-7f9e0ca57b29cc96bd1ca717d891c11db7435c5a.tar.gz gpgme-7f9e0ca57b29cc96bd1ca717d891c11db7435c5a.zip |
core: New export mode to export as OpenSSH public key.
* src/gpgme.h.in (GPGME_EXPORT_MODE_SSH): New.
* src/export.c (export_ext_start): Allow for new mode.
* src/engine-gpg.c (export_common): Implement.
* tests/run-export.c (status_cb): New.
(main): New options --status and --ssh.
--
GnuPG-bug-id: 4310
Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/engine-gpg.c | 10 | ||||
-rw-r--r-- | src/export.c | 2 | ||||
-rw-r--r-- | src/gpgme.h.in | 1 |
3 files changed, 12 insertions, 1 deletions
diff --git a/src/engine-gpg.c b/src/engine-gpg.c index 9362e297..af2533d8 100644 --- a/src/engine-gpg.c +++ b/src/engine-gpg.c @@ -2330,6 +2330,7 @@ export_common (engine_gpg_t gpg, gpgme_export_mode_t mode, if ((mode & ~(GPGME_EXPORT_MODE_EXTERN |GPGME_EXPORT_MODE_MINIMAL + |GPGME_EXPORT_MODE_SSH |GPGME_EXPORT_MODE_SECRET))) return gpg_error (GPG_ERR_NOT_SUPPORTED); @@ -2345,6 +2346,15 @@ export_common (engine_gpg_t gpg, gpgme_export_mode_t mode, if (err) ; + else if ((mode & GPGME_EXPORT_MODE_SSH)) + { + if (have_gpg_version (gpg, "2.1.11")) + err = add_arg (gpg, "--export-ssh-key"); + else + err = gpg_error (GPG_ERR_NOT_SUPPORTED); + if (!err) + err = add_data (gpg, keydata, 1, 1); + } else if ((mode & GPGME_EXPORT_MODE_EXTERN)) { err = add_arg (gpg, "--send-keys"); diff --git a/src/export.c b/src/export.c index abf260ad..4d576679 100644 --- a/src/export.c +++ b/src/export.c @@ -218,6 +218,7 @@ export_ext_start (gpgme_ctx_t ctx, int synchronous, const char *pattern[], if ((mode & ~(GPGME_EXPORT_MODE_EXTERN |GPGME_EXPORT_MODE_MINIMAL |GPGME_EXPORT_MODE_SECRET + |GPGME_EXPORT_MODE_SSH |GPGME_EXPORT_MODE_RAW |GPGME_EXPORT_MODE_PKCS12))) return gpg_error (GPG_ERR_INV_VALUE); /* Invalid flags in MODE. */ @@ -478,4 +479,3 @@ gpgme_op_export_keys (gpgme_ctx_t ctx, return TRACE_ERR (err); } - diff --git a/src/gpgme.h.in b/src/gpgme.h.in index 2decc551..b4f817b4 100644 --- a/src/gpgme.h.in +++ b/src/gpgme.h.in @@ -407,6 +407,7 @@ gpgme_pinentry_mode_t; #define GPGME_EXPORT_MODE_RAW 32 #define GPGME_EXPORT_MODE_PKCS12 64 #define GPGME_EXPORT_MODE_NOUID 128 /* Experimental(!)*/ +#define GPGME_EXPORT_MODE_SSH 256 typedef unsigned int gpgme_export_mode_t; |