aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g10/ChangeLog6
-rw-r--r--g10/g10.c2
-rw-r--r--g10/keylist.c14
-rw-r--r--g10/options.h5
4 files changed, 23 insertions, 4 deletions
diff --git a/g10/ChangeLog b/g10/ChangeLog
index 93b6267a3..b7e3933f1 100644
--- a/g10/ChangeLog
+++ b/g10/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-11 David Shaw <[email protected]>
+
+ * options.h, g10.c (main), keylist.c (list_keyblock_print): Add
+ "show-unusable-subkeys" list-option to show revoked and/or expired
+ subkeys.
+
2004-02-10 David Shaw <[email protected]>
* keyedit.c (keyedit_menu): Prompt for subkey removal for both
diff --git a/g10/g10.c b/g10/g10.c
index 25be39abf..6393c522c 100644
--- a/g10/g10.c
+++ b/g10/g10.c
@@ -1705,6 +1705,7 @@ main( int argc, char **argv )
g10_opt_verbose++;
opt.verbose++;
opt.list_options|=LIST_SHOW_UNUSABLE_UIDS;
+ opt.list_options|=LIST_SHOW_UNUSABLE_SUBKEYS;
break;
case oKOption: set_cmd( &cmd, aKMode ); break;
@@ -2102,6 +2103,7 @@ main( int argc, char **argv )
{"show-validity",LIST_SHOW_VALIDITY},
{"show-long-keyids",LIST_SHOW_LONG_KEYIDS},
{"show-unusable-uids",LIST_SHOW_UNUSABLE_UIDS},
+ {"show-unusable-subkeys",LIST_SHOW_UNUSABLE_SUBKEYS},
{"show-keyring",LIST_SHOW_KEYRING},
{"show-sig-expire",LIST_SHOW_SIG_EXPIRE},
{NULL,0}
diff --git a/g10/keylist.c b/g10/keylist.c
index c949e8a0c..f3fdb15be 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -605,7 +605,9 @@ list_keyblock_print ( KBNODE keyblock, int secret, int fpr, void *opaque )
struct sig_stats *stats=opaque;
int skip_sigs=0;
int newformat=((opt.list_options&LIST_SHOW_VALIDITY) && !secret)
- || (opt.list_options & (LIST_SHOW_LONG_KEYIDS|LIST_SHOW_UNUSABLE_UIDS));
+ || (opt.list_options & (LIST_SHOW_LONG_KEYIDS
+ | LIST_SHOW_UNUSABLE_UIDS
+ | LIST_SHOW_UNUSABLE_SUBKEYS));
/* get the keyid from the keyblock */
node = find_kbnode( keyblock, secret? PKT_SECRET_KEY : PKT_PUBLIC_KEY );
@@ -742,6 +744,15 @@ list_keyblock_print ( KBNODE keyblock, int secret, int fpr, void *opaque )
u32 keyid2[2];
PKT_public_key *pk2 = node->pkt->pkt.public_key;
+ if((pk2->is_revoked || pk2->has_expired)
+ && !(opt.list_options&LIST_SHOW_UNUSABLE_SUBKEYS))
+ {
+ skip_sigs=1;
+ continue;
+ }
+ else
+ skip_sigs=0;
+
if( !any ) {
putchar('\n');
if( fpr )
@@ -817,7 +828,6 @@ list_keyblock_print ( KBNODE keyblock, int secret, int fpr, void *opaque )
/* TODO: Make sure a cached sig record here still has
the pk that issued it. See also
keyedit.c:print_and_check_one_sig */
-
}
else {
rc = 0;
diff --git a/g10/options.h b/g10/options.h
index 4698aead5..aa7c244f8 100644
--- a/g10/options.h
+++ b/g10/options.h
@@ -245,8 +245,9 @@ struct {
#define LIST_SHOW_VALIDITY (1<<4)
#define LIST_SHOW_LONG_KEYIDS (1<<5)
#define LIST_SHOW_UNUSABLE_UIDS (1<<6)
-#define LIST_SHOW_KEYRING (1<<7)
-#define LIST_SHOW_SIG_EXPIRE (1<<8)
+#define LIST_SHOW_UNUSABLE_SUBKEYS (1<<7)
+#define LIST_SHOW_KEYRING (1<<8)
+#define LIST_SHOW_SIG_EXPIRE (1<<9)
#define VERIFY_SHOW_PHOTOS (1<<0)
#define VERIFY_SHOW_POLICY_URLS (1<<1)