aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeal H. Walfield <[email protected]>2015-11-23 11:16:33 +0000
committerNeal H. Walfield <[email protected]>2015-11-23 11:16:33 +0000
commitb64b33bb80a8cf5dcc1fdbc62023d019fe2c8cb1 (patch)
treed80a855c3e45c29e320e5788aa1e7b127e0d73aa
parentgpg: Don't crash if key is not passed an argument. (diff)
downloadgnupg-b64b33bb80a8cf5dcc1fdbc62023d019fe2c8cb1.tar.gz
gnupg-b64b33bb80a8cf5dcc1fdbc62023d019fe2c8cb1.zip
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 <[email protected]> GnuPG-bug-id: 1944
-rw-r--r--g10/keyedit.c31
1 files 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;