From b64b33bb80a8cf5dcc1fdbc62023d019fe2c8cb1 Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Mon, 23 Nov 2015 12:16:33 +0100 Subject: [PATCH] gpg: Allow updating the expiration time of multiple subkeys at once. * g10/keyedit.c (menu_expire): Allow updating the expiration time of multiple subkeys at once. -- Signed-off-by: Neal H. Walfield GnuPG-bug-id: 1944 --- g10/keyedit.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/g10/keyedit.c b/g10/keyedit.c index 8320aa4f4..1511c1751 100644 --- a/g10/keyedit.c +++ b/g10/keyedit.c @@ -4003,8 +4003,23 @@ menu_expire (KBNODE pub_keyblock) n1 = count_selected_keys (pub_keyblock); if (n1 > 1) { - tty_printf (_("Please select at most one subkey.\n")); - return 0; + char *s = xtryasprintf (_("Are you sure you want to change the" + " expiration time %d subkeys? (y/N) "), n1); + int s_need_free; + if (s) + s_need_free = 0; + else + { + s = _("Are you sure you want to change the" + " expiration time for multiple subkeys? (y/N) "); + s_need_free = 0; + } + + rc = cpr_get_answer_is_yes ("keyedit.expire_multiple_subkeys.okay", s); + if (s_need_free) + xfree (s); + if (! rc) + return 0; } else if (n1) tty_printf (_("Changing expiration time for a subkey.\n")); @@ -4029,11 +4044,15 @@ menu_expire (KBNODE pub_keyblock) keyid_from_pk (main_pk, keyid); main_pk->expiredate = expiredate; } - else if (node->pkt->pkttype == PKT_PUBLIC_SUBKEY - && (node->flag & NODFLG_SELKEY)) + else if (node->pkt->pkttype == PKT_PUBLIC_SUBKEY) { - sub_pk = node->pkt->pkt.public_key; - sub_pk->expiredate = expiredate; + if (node->flag & NODFLG_SELKEY) + { + sub_pk = node->pkt->pkt.public_key; + sub_pk->expiredate = expiredate; + } + else + sub_pk = NULL; } else if (node->pkt->pkttype == PKT_USER_ID) uid = node->pkt->pkt.user_id;