Fix message digest final function for MD4, MD5 and RMD160
authorJussi Kivilinna <jussi.kivilinna@iki.fi>
Thu, 9 May 2019 18:43:52 +0000 (21:43 +0300)
committerJussi Kivilinna <jussi.kivilinna@iki.fi>
Thu, 9 May 2019 18:43:52 +0000 (21:43 +0300)
commit15592cd52f543aadb2fab8f6c112c68075309ad6
treea5db20119319f0951b16eb71e582453a51eab580
parentda6cd4fea30f79cf9d8f9b2f1c6daf3aea39fa9c
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>
cipher/md4.c
cipher/md5.c
cipher/rmd160.c
tests/basic.c