summaryrefslogtreecommitdiff
path: root/sha1.c
diff options
context:
space:
mode:
authorNiels Möller <nisse@lysator.liu.se>2013-09-28 09:43:12 +0200
committerNiels Möller <nisse@lysator.liu.se>2013-09-28 09:44:22 +0200
commitcb83bd331e5774027bcab965ccf9bcbe798ad167 (patch)
tree3bbf1e2ee88e1ff1a27c877bd6cd21dc65f1d4a6 /sha1.c
parent89755c916c84f722f081b5d53e8472d963cfbfe4 (diff)
downloadnettle-cb83bd331e5774027bcab965ccf9bcbe798ad167.tar.gz
Made hash functions use an uint64_t for the block count.
Diffstat (limited to 'sha1.c')
-rw-r--r--sha1.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/sha1.c b/sha1.c
index b7ab9412..e53913c9 100644
--- a/sha1.c
+++ b/sha1.c
@@ -66,7 +66,7 @@ sha1_init(struct sha1_ctx *ctx)
};
memcpy(ctx->state, iv, sizeof(ctx->state));
- ctx->count_low = ctx->count_high = 0;
+ ctx->count = 0;
/* Initialize buffer */
ctx->index = 0;
@@ -78,7 +78,7 @@ void
sha1_update(struct sha1_ctx *ctx,
size_t length, const uint8_t *data)
{
- MD_UPDATE (ctx, length, data, COMPRESS, MD_INCR(ctx));
+ MD_UPDATE (ctx, length, data, COMPRESS, ctx->count++);
}
void
@@ -86,19 +86,17 @@ sha1_digest(struct sha1_ctx *ctx,
size_t length,
uint8_t *digest)
{
- uint32_t high, low;
+ uint64_t bit_count;
assert(length <= SHA1_DIGEST_SIZE);
MD_PAD(ctx, 8, COMPRESS);
- /* There are 512 = 2^9 bits in one block */
- high = (ctx->count_high << 9) | (ctx->count_low >> 23);
- low = (ctx->count_low << 9) | (ctx->index << 3);
+ /* There are 512 = 2^9 bits in one block */
+ bit_count = (ctx->count << 9) | (ctx->index << 3);
/* append the 64 bit count */
- WRITE_UINT32(ctx->block + (SHA1_DATA_SIZE - 8), high);
- WRITE_UINT32(ctx->block + (SHA1_DATA_SIZE - 4), low);
+ WRITE_UINT64(ctx->block + (SHA1_DATA_SIZE - 8), bit_count);
_nettle_sha1_compress(ctx->state, ctx->block);
_nettle_write_be32(length, digest, ctx->state);