* packet.h, getkey.c (merge_selfsigs, merge_selfsigs_main), pkclist.c
authorDavid Shaw <dshaw@jabberwocky.com>
Thu, 22 Jan 2004 01:08:58 +0000 (01:08 +0000)
committerDavid Shaw <dshaw@jabberwocky.com>
Thu, 22 Jan 2004 01:08:58 +0000 (01:08 +0000)
(check_signatures_trust): Indicate who has revoked a key (the owner or a
designated revoker).  If a key was revoked by both, prefer the owner.

g10/ChangeLog
g10/getkey.c
g10/packet.h
g10/pkclist.c

index 6656638..e9521db 100644 (file)
@@ -1,5 +1,10 @@
 2004-01-21  David Shaw  <dshaw@jabberwocky.com>
 
+       * packet.h, getkey.c (merge_selfsigs, merge_selfsigs_main),
+       pkclist.c (check_signatures_trust): Indicate who has revoked a key
+       (the owner or a designated revoker).  If a key was revoked by
+       both, prefer the owner.
+
        * keyedit.c (print_and_check_one_sig, keyedit_menu): Use the
        COLUMNS environment variable (if any) to hint how wide the
        terminal is.  Disabled on _WIN32.  Suggested by Janusz
index 4aba21e..e5c3118 100644 (file)
@@ -1,6 +1,6 @@
 /* getkey.c -  Get a key from the database
- * Copyright (C) 1998, 1999, 2000, 2001, 2002,
- *               2003 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+ *               2004 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -1532,7 +1532,7 @@ merge_selfsigs_main( KBNODE keyblock, int *r_revoked )
                  int rc=check_revocation_keys(pk,sig);
                  if(rc==0)
                    {
-                     *r_revoked=1;
+                     *r_revoked=2;
                      /* don't continue checking since we can't be any
                         more revoked than this */
                      break;
@@ -1976,8 +1976,8 @@ merge_selfsigs( KBNODE keyblock )
                 PKT_public_key *pk = k->pkt->pkt.public_key;
                if(!main_pk->is_valid)
                  pk->is_valid = 0;
-               if(revoked)
-                 pk->is_revoked = 1;
+               if(revoked && !pk->is_revoked)
+                 pk->is_revoked = revoked;
                 if(main_pk->has_expired)
                  pk->has_expired = main_pk->has_expired;
             }
index db27d7a..e5e4a2a 100644 (file)
@@ -1,6 +1,6 @@
 /* packet.h - packet definitions
- * Copyright (C) 1998, 1999, 2000, 2001, 2002,
- *               2003 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003,
+ *               2004 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -205,7 +205,8 @@ typedef struct {
     byte    req_usage;      /* hack to pass a request to getkey() */
     byte    req_algo;       /* Ditto */
     u32     has_expired;    /* set to the expiration date if expired */ 
-    int     is_revoked;     /* key has been revoked */
+    int     is_revoked;     /* key has been revoked, 1 if by the
+                              owner, 2 if by a designated revoker */
     int     maybe_revoked;  /* a designated revocation is present, but
                               without the key to check it */
     int     is_valid;       /* key (especially subkey) is valid */
index eb48725..405af10 100644 (file)
@@ -1,6 +1,6 @@
 /* pkclist.c
- * Copyright (C) 1998, 1999, 2000, 2001, 2002
- *               2003 Free Software Foundation, Inc.
+ * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003
+ *               2004 Free Software Foundation, Inc.
  *
  * This file is part of GnuPG.
  *
@@ -624,7 +624,11 @@ check_signatures_trust( PKT_signature *sig )
   if ( (trustlevel & TRUST_FLAG_REVOKED) ) 
     {
       write_status( STATUS_KEYREVOKED );
-      log_info(_("WARNING: This key has been revoked by its owner!\n"));
+      if(pk->is_revoked==2)
+       log_info(_("WARNING: This key has been revoked by its"
+                  " designated revoker!\n"));
+      else
+       log_info(_("WARNING: This key has been revoked by its owner!\n"));
       log_info(_("         This could mean that the signature is forgery.\n"));
       show_revocation_reason( pk, 0 );
     }