diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/lib/crypto/yarrow/ChangeLog | 4 | ||||
| -rw-r--r-- | src/lib/crypto/yarrow/yhash.h | 12 |
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) |
