| Index: firmware/lib/cryptolib/sha1.c
|
| diff --git a/firmware/lib/cryptolib/sha1.c b/firmware/lib/cryptolib/sha1.c
|
| index 70653ba78457e2ce9354b810d6e7f1d844b736b1..897742c5fd5529d7be8d1080f9895f3710f8d2af 100644
|
| --- a/firmware/lib/cryptolib/sha1.c
|
| +++ b/firmware/lib/cryptolib/sha1.c
|
| @@ -224,7 +224,7 @@ static void SHA1_transform(SHA1_CTX *ctx) {
|
| }
|
|
|
| void SHA1_update(SHA1_CTX *ctx, const uint8_t *data, uint64_t len) {
|
| - int i = ctx->count % sizeof(ctx->buf);
|
| + int i = (int)(ctx->count % sizeof(ctx->buf));
|
| const uint8_t* p = (const uint8_t*) data;
|
|
|
| ctx->count += len;
|
| @@ -239,7 +239,7 @@ void SHA1_update(SHA1_CTX *ctx, const uint8_t *data, uint64_t len) {
|
| }
|
| uint8_t* SHA1_final(SHA1_CTX *ctx) {
|
| uint8_t *p = ctx->buf;
|
| - uint64_t cnt = ctx->count * 8;
|
| + uint64_t cnt = ctx->count << 3;
|
| int i;
|
|
|
| SHA1_update(ctx, (uint8_t*)"\x80", 1);
|
| @@ -247,16 +247,16 @@ uint8_t* SHA1_final(SHA1_CTX *ctx) {
|
| SHA1_update(ctx, (uint8_t*)"\0", 1);
|
| }
|
| for (i = 0; i < 8; ++i) {
|
| - uint8_t tmp = cnt >> ((7 - i) * 8);
|
| + uint8_t tmp = (uint8_t)UINT64_RSHIFT(cnt, (7 - i) * 8);
|
| SHA1_update(ctx, &tmp, 1);
|
| }
|
|
|
| for (i = 0; i < 5; i++) {
|
| uint32_t tmp = ctx->state[i];
|
| - *p++ = tmp >> 24;
|
| - *p++ = tmp >> 16;
|
| - *p++ = tmp >> 8;
|
| - *p++ = tmp >> 0;
|
| + *p++ = (uint8_t)(tmp >> 24);
|
| + *p++ = (uint8_t)(tmp >> 16);
|
| + *p++ = (uint8_t)(tmp >> 8);
|
| + *p++ = (uint8_t)(tmp >> 0);
|
| }
|
|
|
| return ctx->buf;
|
|
|