aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Kahn Gillmor <[email protected]>2019-05-14 01:22:38 +0000
committerWerner Koch <[email protected]>2019-05-15 07:03:13 +0000
commit9c704d9d46338769a66bfc6c378efeda3c4bd9ec (patch)
treefa5b5b8a11689fe378d9fb5f5adb5c132248fa5d
parentgpgconf: Support --homedir for --launch. (diff)
downloadgnupg-9c704d9d46338769a66bfc6c378efeda3c4bd9ec.tar.gz
gnupg-9c704d9d46338769a66bfc6c378efeda3c4bd9ec.zip
gpg: enable OpenPGP export of cleartext keys with comments
* g10/export.c (cleartext_secret_key_to_openpgp): ignore trailing sublists in private-key S-expression. -- When gpg-agent learns about a private key from its ssh-agent interface, it stores its S-expression with the comment attached. The export mechanism for OpenPGP keys already in cleartext was too brittle because it would choke on these comments. This change lets it ignore any additional trailing sublists. Signed-off-by: Daniel Kahn Gillmor <[email protected]> Gnupg-Bug-Id: 4490
-rw-r--r--g10/export.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/g10/export.c b/g10/export.c
index e94e959fb..70f52615c 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -596,7 +596,10 @@ cleartext_secret_key_to_openpgp (gcry_sexp_t s_key, PKT_public_key *pk)
top_list = gcry_sexp_find_token (s_key, "private-key", 0);
if (!top_list)
goto bad_seckey;
- if (gcry_sexp_length(top_list) != 2)
+
+ /* ignore all S-expression after the first sublist -- we assume that
+ they are comments or otherwise irrelevant to OpenPGP */
+ if (gcry_sexp_length(top_list) < 2)
goto bad_seckey;
key = gcry_sexp_nth (top_list, 1);
if (!key)