Skip to content

Commit

Permalink
[CRYPTO] sha1: Avoid shifting count left and right
Browse files Browse the repository at this point in the history
This patch avoids shifting the count left and right needlessly for each
call to sha1_update().  It instead can be done only once at the end in
sha1_final().

Keeping the previous test example (sha1_update() successively called with
len=64), a 1.3% performance increase can be observed on i386, or 0.2% on
ARM.  The generated code is also smaller on ARM.

Signed-off-by: Nicolas Pitre <[email protected]>
Signed-off-by: Herbert Xu <[email protected]>
  • Loading branch information
Nicolas Pitre authored and David S. Miller committed Jan 9, 2006
1 parent 9d70a6c commit fa9b98f
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions crypto/sha1.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ static void sha1_update(void *ctx, const u8 *data, unsigned int len)
unsigned int partial, done;
const u8 *src;

partial = (sctx->count >> 3) & 0x3f;
sctx->count += len << 3;
partial = sctx->count & 0x3f;
sctx->count += len;
done = 0;
src = data;

Expand Down Expand Up @@ -88,10 +88,10 @@ static void sha1_final(void* ctx, u8 *out)
__be64 bits;
static const u8 padding[64] = { 0x80, };

bits = cpu_to_be64(sctx->count);
bits = cpu_to_be64(sctx->count << 3);

/* Pad out to 56 mod 64 */
index = (sctx->count >> 3) & 0x3f;
index = sctx->count & 0x3f;
padlen = (index < 56) ? (56 - index) : ((64+56) - index);
sha1_update(sctx, padding, padlen);

Expand Down

0 comments on commit fa9b98f

Please sign in to comment.