mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
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
This commit is contained in:
parent
00c31f8b04
commit
3738b0a99a
3 changed files with 57 additions and 0 deletions
29
g10/keygen.c
29
g10/keygen.c
|
@ -1859,6 +1859,10 @@ common_gen (const char *keyparms, const char *keyparms2,
|
|||
|
||||
if (keyparms2)
|
||||
{
|
||||
unsigned char tmpgrip[KEYGRIP_LEN];
|
||||
char hexgrip1[2*KEYGRIP_LEN+1];
|
||||
char hexgrip2[2*KEYGRIP_LEN+1];
|
||||
|
||||
err = agent_genkey (NULL, NULL, NULL, keyparms2,
|
||||
1 /* No protection */,
|
||||
NULL, timestamp,
|
||||
|
@ -1870,6 +1874,31 @@ common_gen (const char *keyparms, const char *keyparms2,
|
|||
gcry_sexp_release (s_key);
|
||||
return err;
|
||||
}
|
||||
|
||||
if (!gcry_pk_get_keygrip (s_key, tmpgrip))
|
||||
{
|
||||
log_error ("error computing keygrip for generated key\n");
|
||||
gcry_sexp_release (s_key);
|
||||
gcry_sexp_release (s_key2);
|
||||
return gpg_error (GPG_ERR_GENERAL);
|
||||
}
|
||||
bin2hex (tmpgrip, KEYGRIP_LEN, hexgrip1);
|
||||
if (!gcry_pk_get_keygrip (s_key2, tmpgrip))
|
||||
{
|
||||
log_error ("error computing keygrip for generated key\n");
|
||||
gcry_sexp_release (s_key);
|
||||
gcry_sexp_release (s_key2);
|
||||
return gpg_error (GPG_ERR_GENERAL);
|
||||
}
|
||||
bin2hex (tmpgrip, KEYGRIP_LEN, hexgrip2);
|
||||
err = agent_crosslink_keys (NULL, hexgrip1, hexgrip2);
|
||||
if (err)
|
||||
{
|
||||
log_error ("error setting link attributes for generated keys\n");
|
||||
gcry_sexp_release (s_key);
|
||||
gcry_sexp_release (s_key2);
|
||||
return gpg_error (GPG_ERR_GENERAL);
|
||||
}
|
||||
}
|
||||
|
||||
if (common_gen_cb && common_gen_cb_parm)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue