gnupg/g10 (ChangeLog keyedit.c trustdb.h)

cvs user dshaw cvs at cvs.gnupg.org
Sun Apr 24 17:48:25 CEST 2005


    Date: Sunday, April 24, 2005 @ 18:05:41
  Author: dshaw
    Path: /cvs/gnupg/gnupg/g10

Modified: ChangeLog keyedit.c trustdb.h

* trustdb.h, keyedit.c (keyedit_menu, menu_select_uid_namehash): Allow
specifying user ID via the namehash from --with-colons
--fixed-list-mode --list-keys.  Suggested by Peter Palfrader.


-----------+
 ChangeLog |    6 ++++++
 keyedit.c |   46 ++++++++++++++++++++++++++++++++++++++++++++--
 trustdb.h |    3 +++
 3 files changed, 53 insertions(+), 2 deletions(-)


Index: gnupg/g10/ChangeLog
diff -u gnupg/g10/ChangeLog:1.724 gnupg/g10/ChangeLog:1.725
--- gnupg/g10/ChangeLog:1.724	Fri Apr 22 05:36:20 2005
+++ gnupg/g10/ChangeLog	Sun Apr 24 18:05:41 2005
@@ -1,3 +1,9 @@
+2005-04-24  David Shaw  <dshaw at jabberwocky.com>
+
+	* trustdb.h, keyedit.c (keyedit_menu, menu_select_uid_namehash):
+	Allow specifying user ID via the namehash from --with-colons
+	--fixed-list-mode --list-keys.  Suggested by Peter Palfrader.
+
 2005-04-21  David Shaw  <dshaw at jabberwocky.com>
 
 	* keyedit.c (sign_uids, keyedit_menu): When the user requests to
Index: gnupg/g10/keyedit.c
diff -u gnupg/g10/keyedit.c:1.176 gnupg/g10/keyedit.c:1.177
--- gnupg/g10/keyedit.c:1.176	Fri Apr 22 05:36:20 2005
+++ gnupg/g10/keyedit.c	Sun Apr 24 18:05:41 2005
@@ -62,6 +62,7 @@
 static int menu_set_keyserver_url (const char *url,
 				   KBNODE pub_keyblock, KBNODE sec_keyblock );
 static int menu_select_uid( KBNODE keyblock, int idx );
+static int menu_select_uid_namehash( KBNODE keyblock, const char *namehash );
 static int menu_select_key( KBNODE keyblock, int idx );
 static int count_uids( KBNODE keyblock );
 static int count_uids_with_flag( KBNODE keyblock, unsigned flag );
@@ -1685,8 +1686,10 @@
 	    break;
 
 	  case cmdSELUID:
-	    if( menu_select_uid( cur_keyblock, arg_number ) )
-		redisplay = 1;
+	    if(strlen(arg_string)==NAMEHASH_LEN*2)
+	      redisplay=menu_select_uid_namehash(cur_keyblock,arg_string);
+	    else
+	      redisplay=menu_select_uid(cur_keyblock,arg_number);
 	    break;
 
 	  case cmdSELKEY:
@@ -3900,6 +3903,45 @@
     return 1;
 }
 
+/* Search in the keyblock for a uid that matches namehash */
+static int
+menu_select_uid_namehash( KBNODE keyblock, const char *namehash )
+{
+  byte hash[NAMEHASH_LEN];
+  KBNODE node;
+  int i;
+
+  assert(strlen(namehash)==NAMEHASH_LEN*2);
+
+  for(i=0;i<NAMEHASH_LEN;i++)
+    hash[i]=hextobyte(&namehash[i*2]);
+
+  for(node=keyblock->next;node;node=node->next)
+    {
+      if(node->pkt->pkttype==PKT_USER_ID)
+	{
+	  namehash_from_uid(node->pkt->pkt.user_id);
+	  if(memcmp(node->pkt->pkt.user_id->namehash,hash,NAMEHASH_LEN)==0)
+	    {
+	      if(node->flag&NODFLG_SELUID)
+		node->flag &= ~NODFLG_SELUID;
+	      else
+		node->flag |= NODFLG_SELUID;
+
+	      break;
+	    }
+	}
+    }
+
+    if(!node)
+      {
+	tty_printf(_("No user ID with hash %s\n"),namehash);
+	return 0;
+      }
+
+  return 1;
+}
+
 /****************
  * Select secondary keys
  * Returns: True if the selection changed;
Index: gnupg/g10/trustdb.h
diff -u gnupg/g10/trustdb.h:1.50 gnupg/g10/trustdb.h:1.51
--- gnupg/g10/trustdb.h:1.50	Sun Feb  6 18:38:43 2005
+++ gnupg/g10/trustdb.h	Sun Apr 24 18:05:41 2005
@@ -37,6 +37,9 @@
 #define TRUST_FLAG_DISABLED 128 /* d: key/uid disabled */
 #define TRUST_FLAG_PENDING_CHECK 256 /* a check-trustdb is pending */
 
+#define NAMEHASH_HASH DIGEST_ALGO_RMD160
+#define NAMEHASH_LEN  20
+
 /*-- trustdb.c --*/
 void register_trusted_keyid(u32 *keyid);
 void register_trusted_key( const char *string );




More information about the Gnupg-commits mailing list