From 971f824f72576db0ffb08b4861e1c45ba97f0007 Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 18 Oct 2006 15:34:54 +0000 Subject: [PATCH] Fixed v3 keyids. --- g10/ChangeLog | 3 +++ g10/keyid.c | 8 +++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/g10/ChangeLog b/g10/ChangeLog index 6eaa5e1fb..0c33c5888 100644 --- a/g10/ChangeLog +++ b/g10/ChangeLog @@ -1,5 +1,8 @@ 2006-10-18 Werner Koch + * 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. diff --git a/g10/keyid.c b/g10/keyid.c index 99747b6e2..afafc1afd 100644 --- a/g10/keyid.c +++ b/g10/keyid.c @@ -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];