# HG changeset patch # User kostya # Date 1247124223 0 # Node ID 88d366bd895e46fa23016aaed33ac7015e24f5e3 # Parent cd5dc764dfbef2794379acf271e2a8824b56a522 Use pointer to hash transform function to make adding SHA-2 support easier. diff -r cd5dc764dfbe -r 88d366bd895e sha1.c --- a/sha1.c Thu Jul 09 07:15:30 2009 +0000 +++ b/sha1.c Thu Jul 09 07:23:43 2009 +0000 @@ -29,6 +29,8 @@ uint64_t count; ///< number of bytes in buffer uint8_t buffer[64]; ///< 512-bit buffer of input values used in hash updating uint32_t state[8]; ///< current hash value + /** function used to update hash for 512-bit input block */ + void (*transform)(uint32_t *state, const uint8_t buffer[64]); } AVSHA1; const int av_sha1_size = sizeof(AVSHA1); @@ -132,6 +134,7 @@ ctx->state[2] = 0x98BADCFE; ctx->state[3] = 0x10325476; ctx->state[4] = 0xC3D2E1F0; + ctx->transform = transform; ctx->count = 0; } @@ -145,16 +148,16 @@ for (i = 0; i < len; i++) { ctx->buffer[j++] = data[i]; if (64 == j) { - transform(ctx->state, ctx->buffer); + ctx->transform(ctx->state, ctx->buffer); j = 0; } } #else if ((j + len) > 63) { memcpy(&ctx->buffer[j], data, (i = 64 - j)); - transform(ctx->state, ctx->buffer); + ctx->transform(ctx->state, ctx->buffer); for (; i + 63 < len; i += 64) - transform(ctx->state, &data[i]); + ctx->transform(ctx->state, &data[i]); j = 0; } else i = 0;