diff --git a/agent/command.c b/agent/command.c index 095f38ba3..88580a754 100644 --- a/agent/command.c +++ b/agent/command.c @@ -1125,9 +1125,13 @@ cmd_readkey (assuan_context_t ctx, char *line) goto leave; } - rc = agent_write_shadow_key (grip, serialno, keyid, pkbuf, 0); - if (rc) - goto leave; + if (agent_key_available (grip)) + { + /* (Shadow)-key is not available in our key storage. */ + rc = agent_write_shadow_key (grip, serialno, keyid, pkbuf, 0); + if (rc) + goto leave; + } rc = assuan_send_data (ctx, pkbuf, pkbuflen); } diff --git a/agent/keyformat.txt b/agent/keyformat.txt index 3467f3bc5..511eb1047 100644 --- a/agent/keyformat.txt +++ b/agent/keyformat.txt @@ -47,9 +47,8 @@ convention. Example (here indented with two spaces): (#D2760001240102000005000011730000# OPENPGP.1) ))) -GnuPG 2.2 is able to read and update keys using the new format, but -will not create new files using the new format. Furthermore, it only -makes use of the value stored under the name 'Key:'. +GnuPG 2.2 is also able to read and write keys using the new format +However, it only makes use of the value stored under the name 'Key:'. Keys in the extended format can be recognized by looking at the first byte of the file. If it starts with a '(' it is a naked S-expression,