diff --git a/agent/command.c b/agent/command.c index 8642498d6..145c9595a 100644 --- a/agent/command.c +++ b/agent/command.c @@ -1030,9 +1030,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 24d742048..259166aba 100644 --- a/agent/keyformat.txt +++ b/agent/keyformat.txt @@ -44,9 +44,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,