md: Fix Whirlpool flaw.
authorWerner Koch <wk@gnupg.org>
Sat, 7 Sep 2013 08:06:46 +0000 (10:06 +0200)
committerWerner Koch <wk@gnupg.org>
Tue, 10 Sep 2013 19:20:17 +0000 (21:20 +0200)
* cipher/whirlpool.c (whirlpool_add): Remove shortcut return so that
byte counter is always properly updated.
--

Using the forthcoming gcry_md_hash_buffers() and its test suite, I
found that a message of size 62 won't yield the correct hash if it is
fed into Whirlpool into in chunks.  The fix is obvious.  The wrong
code was likely due to using similar structure as SHA-1 but neglecting
that bytes and not blocks are counted.

cipher/whirlpool.c

index f99aa89..2c3beb7 100644 (file)
@@ -1315,9 +1315,6 @@ whirlpool_add (whirlpool_context_t *context,
          buffer_n--;
        }
       whirlpool_add (context, NULL, 0);
-      if (!buffer_n)
-       /* Done.  */
-        return;
     }
   /*_gcry_burn_stack (80+6*sizeof(void*));*/ /* FIXME */