rmd160: restore native-endian store in _gcry_rmd160_mixblock
authorJussi Kivilinna <jussi.kivilinna@iki.fi>
Fri, 2 Jan 2015 17:07:24 +0000 (19:07 +0200)
committerJussi Kivilinna <jussi.kivilinna@iki.fi>
Fri, 2 Jan 2015 17:07:24 +0000 (19:07 +0200)
* cipher/rmd160.c (_gcry_rmd160_mixblock): Store result to buffer in
native-endianess.
--

Commit 4515315f61fbf79413e150fbd1d5f5a2435f2bc5 unintendedly changed this
native-endian store to little-endian.

Reported-by: Yuriy Kaminskiy <yumkam@gmail.com>
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
cipher/rmd160.c

index 2b1f321..2695db2 100644 (file)
@@ -403,15 +403,16 @@ transform ( void *c, const unsigned char *data, size_t nblks )
  * Apply the rmd160 transform function on the buffer which must have
  * a length 64 bytes. Do not use this function together with the
  * other functions, use rmd160_init to initialize internal variables.
- * Returns: 16 bytes in buffer with the mixed contentes of buffer.
+ * Buffer must be 32-bit aligned.
+ * Returns: 20 bytes in buffer with the mixed contents of buffer.
  */
 void
 _gcry_rmd160_mixblock ( RMD160_CONTEXT *hd, void *blockof64byte )
 {
-  char *p = blockof64byte;
+  u32 *p = blockof64byte;
 
   transform ( hd, blockof64byte, 1 );
-#define X(a) do { buf_put_le32(p, hd->h##a); p += 4; } while(0)
+#define X(a) do { p[a] = hd->h##a; } while(0)
   X(0);
   X(1);
   X(2);