summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/lib/crypto/yarrow/ChangeLog4
-rw-r--r--src/lib/crypto/yarrow/yhash.h12
2 files changed, 14 insertions, 2 deletions
diff --git a/src/lib/crypto/yarrow/ChangeLog b/src/lib/crypto/yarrow/ChangeLog
index cbdc2d216..22413ecfd 100644
--- a/src/lib/crypto/yarrow/ChangeLog
+++ b/src/lib/crypto/yarrow/ChangeLog
@@ -1,3 +1,7 @@
+2001-11-19 Sam Hartman <hartmans@mit.edu>
+
+ * yhash.h: Work around sha1 implementation using host byte order
+
2001-11-19 Danilo Almeida <dalmeida@mit.edu>
* Makefile.in: Fix typo OUTP -> OUTPRE.
diff --git a/src/lib/crypto/yarrow/yhash.h b/src/lib/crypto/yarrow/yhash.h
index 98c440302..24208a6b5 100644
--- a/src/lib/crypto/yarrow/yhash.h
+++ b/src/lib/crypto/yarrow/yhash.h
@@ -15,8 +15,16 @@
#define HASH_Init(x) shsInit(x)
#define HASH_Update(x, buf, sz) shsUpdate(x, (const void*)buf, sz)
#define HASH_Final(x, tdigest) do { \
- shsFinal(x); \
- memcpy((tdigest), (void *) (x)->digest, SHS_DIGESTSIZE); \
+ int loopvar; \
+ unsigned char *out = (void *)(tdigest); \
+ HASH_CTX *ctx = (x); \
+ shsFinal(ctx); \
+for (loopvar=0; loopvar<(sizeof(ctx->digest)/sizeof(ctx->digest[0])); loopvar++) { \
+ out[loopvar*4] = (ctx->digest[loopvar]>>24)&0xff; \
+ out[loopvar*4+1] = (ctx->digest[loopvar]>>16)&0xff; \
+ out[loopvar*4+2] = (ctx->digest[loopvar]>>8)&0xff; \
+ out[loopvar*4+3] = ctx->digest[loopvar]&0xff; \
+} \
} while(0)