From 968c31bd84943694e31b5b6ff8865d3179a3c1de Mon Sep 17 00:00:00 2001 From: Andy Polyakov Date: Mon, 27 Sep 2004 09:35:59 +0000 Subject: [PATCH] sha256_block advances the input pointer double as fast sometimes. Fix the bug and test that it's actually gone. PR: 950 --- crypto/sha/sha256.c | 6 ++++-- crypto/sha/sha256t.c | 7 +++++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/crypto/sha/sha256.c b/crypto/sha/sha256.c index 618ba3bc10..5f3845f55c 100644 --- a/crypto/sha/sha256.c +++ b/crypto/sha/sha256.c @@ -179,6 +179,8 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host) h = g; g = f; f = e; e = d + T1; d = c; c = b; b = a; a = T1 + T2; } + + data += SHA256_CBLOCK; } else { @@ -209,7 +211,6 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host) ctx->h[0] += a; ctx->h[1] += b; ctx->h[2] += c; ctx->h[3] += d; ctx->h[4] += e; ctx->h[5] += f; ctx->h[6] += g; ctx->h[7] += h; - data += SHA256_CBLOCK; } } @@ -258,6 +259,8 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host) T1 = X[13] = W[13]; ROUND_00_15(13,d,e,f,g,h,a,b,c); T1 = X[14] = W[14]; ROUND_00_15(14,c,d,e,f,g,h,a,b); T1 = X[15] = W[15]; ROUND_00_15(15,b,c,d,e,f,g,h,a); + + data += SHA256_CBLOCK; } else { @@ -296,7 +299,6 @@ static void sha256_block (SHA256_CTX *ctx, const void *in, size_t num, int host) ctx->h[0] += a; ctx->h[1] += b; ctx->h[2] += c; ctx->h[3] += d; ctx->h[4] += e; ctx->h[5] += f; ctx->h[6] += g; ctx->h[7] += h; - data += SHA256_CBLOCK; } } diff --git a/crypto/sha/sha256t.c b/crypto/sha/sha256t.c index 20580faf5a..5c26ec86ef 100644 --- a/crypto/sha/sha256t.c +++ b/crypto/sha/sha256t.c @@ -74,10 +74,13 @@ int main () EVP_MD_CTX_init (&evp); EVP_DigestInit_ex (&evp,EVP_sha256(),NULL); - for (i=0;i<1000000;i+=64) + for (i=0;i<1000000;i+=160) EVP_DigestUpdate (&evp, "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" + "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" + "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" + "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa" "aaaaaaaa""aaaaaaaa""aaaaaaaa""aaaaaaaa", - (1000000-i)<64?1000000-i:64); + (1000000-i)<160?1000000-i:160); EVP_DigestFinal_ex (&evp,md,NULL); EVP_MD_CTX_cleanup (&evp); -- 2.25.1