Work around hash using host byte order
authorSam Hartman <hartmans@mit.edu>
Tue, 20 Nov 2001 00:26:54 +0000 (00:26 +0000)
committerSam Hartman <hartmans@mit.edu>
Tue, 20 Nov 2001 00:26:54 +0000 (00:26 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14009 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/crypto/yarrow/ChangeLog
src/lib/crypto/yarrow/yhash.h

index cbdc2d216b118b9fb38a2196cfd3593aa808ba63..22413ecfd95085e73a7df9cad5157136ca217945 100644 (file)
@@ -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.
index 98c440302428721cab85cd1fba764a24edcd0902..24208a6b5b0769115060cfc79ecd07a07c9840f0 100644 (file)
 #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)