From 7c82bb323566076ea4f8bc36c94c2dbc0063f27d Mon Sep 17 00:00:00 2001 From: bg Date: Thu, 17 Dec 2009 15:32:52 +0000 Subject: [PATCH] fixing bug in SHA1-C --- bmw/bmw_small-asm.S | 7 +++---- sha1/sha1.c | 4 ++-- test_src/main-sha1-test.c | 3 --- 3 files changed, 5 insertions(+), 9 deletions(-) diff --git a/bmw/bmw_small-asm.S b/bmw/bmw_small-asm.S index 0699893..ce8518d 100644 --- a/bmw/bmw_small-asm.S +++ b/bmw/bmw_small-asm.S @@ -538,12 +538,11 @@ addelement: mov j, r24 movw h0, r20 movw m0, r22 - mov r25, r24 - lsl r25 - lsl r25 + lsl r24 + lsl r24 ldi r30, lo8(const_lut) ldi r31, hi8(const_lut) - add r30, r25 + add r30, r24 adc r31, r1 lpm acc0, Z+ lpm acc1, Z+ diff --git a/sha1/sha1.c b/sha1/sha1.c index 3e14a3e..4712e14 100644 --- a/sha1/sha1.c +++ b/sha1/sha1.c @@ -209,12 +209,12 @@ void sha1_lastBlock(sha1_ctx_t *state, const void* block, uint16_t length){ void sha1_ctx2hash (sha1_hash_t *dest, sha1_ctx_t *state){ #if defined LITTLE_ENDIAN uint8_t i; - for(i=0; i<8; ++i){ + for(i=0; i<5; ++i){ ((uint32_t*)dest)[i] = change_endian32(state->h[i]); } #elif BIG_ENDIAN if (dest != state->h) - memcpy(dest, state->h, SHA256_HASH_BITS/8); + memcpy(dest, state->h, SHA1_HASH_BITS/8); #else # error unsupported endian type! #endif diff --git a/test_src/main-sha1-test.c b/test_src/main-sha1-test.c index dc6f531..e62d6df 100644 --- a/test_src/main-sha1-test.c +++ b/test_src/main-sha1-test.c @@ -106,7 +106,6 @@ void testrun_sha1(void){ sha1(&hash,"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq",448); // cli_putstr_P(PSTR("\r\nsha1(\"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq\") = \r\n\t")); cli_hexdump(hash,SHA1_HASH_BITS/8); -/* cli_putstr("\r\nsha1(1,000,000 * 'a') = \r\n\t"); { uint8_t block[SHA1_BLOCK_BITS/8]; @@ -121,9 +120,7 @@ void testrun_sha1(void){ sha1_ctx2hash(&hash, &s); } cli_hexdump(hash,SHA1_HASH_BITS/8); -*/ - cli_putstr("\r\nx"); } -- 2.39.5