summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--g10/ChangeLog3
-rw-r--r--g10/keyid.c8
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 <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.
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];