summaryrefslogtreecommitdiff
path: root/cipher/rmd160.c
diff options
context:
space:
mode:
authorJussi Kivilinna <jussi.kivilinna@iki.fi>2019-05-09 21:43:52 +0300
committerJussi Kivilinna <jussi.kivilinna@iki.fi>2019-05-09 21:43:52 +0300
commit15592cd52f543aadb2fab8f6c112c68075309ad6 (patch)
treea5db20119319f0951b16eb71e582453a51eab580 /cipher/rmd160.c
parentda6cd4fea30f79cf9d8f9b2f1c6daf3aea39fa9c (diff)
downloadlibgcrypt-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.c4
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);
}