diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2019-05-09 21:43:52 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2019-05-09 21:43:52 +0300 |
commit | 15592cd52f543aadb2fab8f6c112c68075309ad6 (patch) | |
tree | a5db20119319f0951b16eb71e582453a51eab580 /cipher/rmd160.c | |
parent | da6cd4fea30f79cf9d8f9b2f1c6daf3aea39fa9c (diff) | |
download | libgcrypt-15592cd52f543aadb2fab8f6c112c68075309ad6.tar.gz |
Fix message digest final function for MD4, MD5 and RMD160
* cipher/md4.c (md4_final): Use buffer offset '64 + 56' for bit count
on 'need one extra block' path.
* cipher/md5.c (md5_final): Ditto.
* cipher/rmd160.c (rmd160_final): Ditto.
* tests/basic.c (check_one_md_final): New.
(check_digest): Add new '*' test vectors and handle them with
check_one_md_final.
--
This commit fixes bug introduced with commit "Optimizations for
digest final functions" e76cd0e2b1f6025c1319576a5848815d1d231aeb
to MD4, MD5 and RMD160 where digest ended up being wrong for input
message sizes 64*x+56..64. Patch also adds new test case that runs
message digest algorithms with different message lengths from 0 to
289.
Reported-by: Guido Vranken <guidovranken@gmail.com>
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/rmd160.c')
-rw-r--r-- | cipher/rmd160.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/cipher/rmd160.c b/cipher/rmd160.c index f15eec22..24210a07 100644 --- a/cipher/rmd160.c +++ b/cipher/rmd160.c @@ -449,8 +449,8 @@ rmd160_final( void *context ) hd->bctx.count = 64 + 56; /* append the 64 bit count */ - buf_put_le32(hd->bctx.buf + 56, lsb); - buf_put_le32(hd->bctx.buf + 60, msb); + buf_put_le32(hd->bctx.buf + 64 + 56, lsb); + buf_put_le32(hd->bctx.buf + 64 + 60, msb); burn = transform (hd, hd->bctx.buf, 2); } |