Incompatibly fix fingerprinting again. Sigh.
authormdw <mdw>
Wed, 14 Sep 2005 14:31:42 +0000 (14:31 +0000)
committermdw <mdw>
Wed, 14 Sep 2005 14:31:42 +0000 (14:31 +0000)
key-misc.c

index 37027c0..54fdc89 100644 (file)
@@ -1,6 +1,6 @@
 /* -*-c-*-
  *
- * $Id: key-misc.c,v 1.5 2004/04/08 01:36:15 mdw Exp $
+ * $Id$
  *
  * Simple key management
  *
@@ -371,13 +371,15 @@ int key_fingerprint(key *k, ghash *h, const key_filter *kf)
   dstr d = DSTR_INIT;
   int rc = 0;
   key_attr *a, **v;
-  size_t n, i, len;
-  octet b[2];
+  size_t n, i;
   sym_iter ai;
 
   if (!key_encode(&k->k, &d, kf))
     goto done;
   rc = 1;
+  GH_HASHSTR(h, "catacomb-key-fingerprint:");
+  GH_HASHU32(h, k->id);
+  GH_HASHSTR8(h, k->type);
   GH_HASH(h, d.buf, d.len);
   for (n = 0, sym_mkiter(&ai, &k->a); (a = sym_next(&ai)) != 0; n++);
   if (n) {
@@ -385,14 +387,9 @@ int key_fingerprint(key *k, ghash *h, const key_filter *kf)
     for (i = 0, sym_mkiter(&ai, &k->a); (a = sym_next(&ai)) != 0; i++)
       v[i] = a;
     qsort(v, n, sizeof(*v), abyname);
-    len = strlen(k->type); STORE8(b, len);
-    GH_HASH(h, b, 1); GH_HASH(h, k->type, len);
     for (i = 0; i < n; i++) {
-      a = v[i];
-      len = strlen(SYM_NAME(a)); STORE8(b, len);
-      GH_HASH(h, b, 1); GH_HASH(h, SYM_NAME(a), len);
-      len = strlen(a->p); STORE16(b, len);
-      GH_HASH(h, b, 2); GH_HASH(h, a->p, len);
+      GH_HASHSTR8(h, SYM_NAME(v[i]));
+      GH_HASHSTR16(h, v[i]->p);
     }
     xfree(v);
   }