summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--g10/ChangeLog5
-rw-r--r--g10/keyedit.c30
2 files changed, 35 insertions, 0 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 22fe85941..234bac5c6 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,8 @@
+2009-08-26 Werner Koch <wk@g10code.com>
+
+ * keyedit.c (menu_revsig): Check for signature right away. Fix
+ Debian-bug#543530.
+
2009-08-20 Daiki Ueno <ueno@unixuser.org>
* mainproc.c (proc_encrypted): Clear passphrase cached with S2K
diff --git a/g10/keyedit.c b/g10/keyedit.c
index f877ace53..3454189f2 100644
--- a/g10/keyedit.c
+++ b/g10/keyedit.c
@@ -4719,6 +4719,36 @@ menu_revsig( KBNODE keyblock )
assert(keyblock->pkt->pkttype==PKT_PUBLIC_KEY);
+ /* First check whether we have any signatures at all. */
+ any = 0;
+ for (node = keyblock; node; node = node->next )
+ {
+ node->flag &= ~(NODFLG_SELSIG | NODFLG_MARK_A);
+ if (node->pkt->pkttype == PKT_USER_ID) {
+ if (node->flag&NODFLG_SELUID || all)
+ skip = 0;
+ else
+ skip = 1;
+ }
+ else if (!skip && node->pkt->pkttype == PKT_SIGNATURE
+ && ((sig = node->pkt->pkt.signature),
+ !seckey_available(sig->keyid) ))
+ {
+ if ((sig->sig_class&~3) == 0x10)
+ {
+ any = 1;
+ break;
+ }
+ }
+ }
+
+ if (!any)
+ {
+ tty_printf (_("Not signed by you.\n"));
+ return 0;
+ }
+
+
/* FIXME: detect duplicates here */
tty_printf(_("You have signed these user IDs on key %s:\n"),
keystr_from_pk(keyblock->pkt->pkt.public_key));