mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
gpg: Add magic parameter "default" to --quick-add-adsk.
* g10/getkey.c (has_key_with_fingerprint): New.
* g10/keyedit.c (menu_addadsk): Replace code by new function.
(keyedit_quick_addadsk): Handle magic arg "default".
* g10/keygen.c (append_all_default_adsks): New.
--
GnuPG-bug-id: 6882
(cherry picked from commit 77afc9ee1c
)
This commit is contained in:
parent
45ae027ce4
commit
ecda4b1e16
6 changed files with 117 additions and 17 deletions
|
@ -3253,7 +3253,15 @@ keyedit_quick_addadsk (ctrl_t ctrl, const char *fpr, const char *adskfpr)
|
|||
|
||||
/* Locate and add the ADSK. Note that the called function already
|
||||
* prints error messages. */
|
||||
if (menu_addadsk (ctrl, keyblock, adskfpr))
|
||||
if (adskfpr && !ascii_strcasecmp (adskfpr, "default"))
|
||||
{
|
||||
err = append_all_default_adsks (ctrl, keyblock);
|
||||
if (!err)
|
||||
modified = 1;
|
||||
else if (gpg_err_code (err) == GPG_ERR_FALSE)
|
||||
err = 0;
|
||||
}
|
||||
else if (menu_addadsk (ctrl, keyblock, adskfpr))
|
||||
modified = 1;
|
||||
else
|
||||
log_inc_errorcount (); /* (We use log_info in menu_adsk) */
|
||||
|
@ -4810,7 +4818,7 @@ menu_addadsk (ctrl_t ctrl, kbnode_t pub_keyblock, const char *adskfpr)
|
|||
KEYDB_SEARCH_DESC desc;
|
||||
byte fpr[MAX_FINGERPRINT_LEN];
|
||||
size_t fprlen;
|
||||
kbnode_t node, node2;
|
||||
kbnode_t node;
|
||||
|
||||
log_assert (pub_keyblock->pkt->pkttype == PKT_PUBLIC_KEY);
|
||||
|
||||
|
@ -4895,22 +4903,10 @@ menu_addadsk (ctrl_t ctrl, kbnode_t pub_keyblock, const char *adskfpr)
|
|||
}
|
||||
|
||||
/* Check that the selected subkey is not yet on our keyblock. */
|
||||
for (node2 = pub_keyblock; node2; node2 = node2->next)
|
||||
{
|
||||
if (node2->pkt->pkttype == PKT_PUBLIC_KEY
|
||||
|| node2->pkt->pkttype == PKT_PUBLIC_SUBKEY)
|
||||
{
|
||||
pk = node2->pkt->pkt.public_key;
|
||||
fingerprint_from_pk (pk, fpr, &fprlen);
|
||||
if (fprlen == 20
|
||||
&& !memcmp (fpr, desc.u.fpr, 20))
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (node2)
|
||||
err = has_key_with_fingerprint (pub_keyblock, desc.u.fpr, 20);
|
||||
if (err)
|
||||
{
|
||||
log_info (_("key \"%s\" is already on this keyblock\n"), answer);
|
||||
err = gpg_error (GPG_ERR_DUP_KEY);
|
||||
if (adskfpr)
|
||||
goto leave;
|
||||
continue;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue