Fixed v3 keyids.
authorWerner Koch <wk@gnupg.org>
Wed, 18 Oct 2006 15:34:54 +0000 (15:34 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 18 Oct 2006 15:34:54 +0000 (15:34 +0000)
g10/ChangeLog
g10/keyid.c

index 6eaa5e1..0c33c58 100644 (file)
@@ -1,5 +1,8 @@
 2006-10-18  Werner Koch  <wk@g10code.com>
 
+       * keyid.c (v3_keyid): Don't use mempcy as we need to hold the
+       keyids in the native endian format.
+
        * import.c (import_print_stats): Use log_printf.
 
        * build-packet.c (do_public_key): Care about mpi_write errors.
index 99747b6..afafc1a 100644 (file)
@@ -159,7 +159,7 @@ do_fingerprint_md_sk( PKT_secret_key *sk )
 u32
 v3_keyid (gcry_mpi_t a, u32 *ki)
 {
-  byte *buffer;
+  byte *buffer, *p;
   size_t nbytes;
 
   if (gcry_mpi_print (GCRYMPI_FMT_USG, NULL, 0, &nbytes, a ))
@@ -172,8 +172,10 @@ v3_keyid (gcry_mpi_t a, u32 *ki)
     ki[0] = ki[1] = 0;
   else 
     {
-      memcpy (ki+0, buffer+nbytes-8, 4);
-      memcpy (ki+1, buffer+nbytes-4, 4);
+      p = buffer + nbytes - 8;
+      ki[0] = (p[0] << 24) | (p[1] <<16) | (p[2] << 8) | p[3];
+      p += 4;
+      ki[1] = (p[0] << 24) | (p[1] <<16) | (p[2] << 8) | p[3];
     }
   xfree (buffer);
   return ki[1];