diff options
author | Werner Koch <[email protected]> | 2025-02-07 10:10:09 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2025-02-07 10:10:09 +0000 |
commit | 3738b0a99a45c09fa5f66e80110dbdff185bbf7c (patch) | |
tree | 69c798efcd35eb3d7745cf30377154aa8f427d51 /g10/call-agent.c | |
parent | gpg: New option --disable-pqc-encryption. (diff) | |
download | gnupg-3738b0a99a45c09fa5f66e80110dbdff185bbf7c.tar.gz gnupg-3738b0a99a45c09fa5f66e80110dbdff185bbf7c.zip |
gpg: Store Link attributes for composite keys.
* g10/call-agent.c (agent_crosslink_keys): New.
* g10/keygen.c (common_gen): Store the Link attribute.
--
The Link attribute may be useful to quickly find the other part of a
composite private key.
GnuPG-bug-id: 6638
Diffstat (limited to 'g10/call-agent.c')
-rw-r--r-- | g10/call-agent.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/g10/call-agent.c b/g10/call-agent.c index 54d8f62f1..bdde9b053 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -2673,6 +2673,30 @@ agent_genkey (ctrl_t ctrl, char **cache_nonce_addr, char **passwd_nonce_addr, } +/* Add the Link attribute to both given keys. */ +gpg_error_t +agent_crosslink_keys (ctrl_t ctrl, const char *hexgrip1, const char *hexgrip2) +{ + gpg_error_t err; + char line[ASSUAN_LINELENGTH]; + + err = start_agent (ctrl, 0); + if (err) + goto leave; + + snprintf (line, sizeof line, "KEYATTR %s Link: %s", hexgrip1, hexgrip2); + err = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); + if (err) + goto leave; + + snprintf (line, sizeof line, "KEYATTR %s Link: %s", hexgrip2, hexgrip1); + err = assuan_transact (agent_ctx, line, NULL, NULL, NULL, NULL, NULL, NULL); + + leave: + return err; +} + + /* Call the agent to read the public key part for a given keygrip. * Values from FROMCARD: |