Whoops. I think that last patch had the endian conditions backwards...
Try this one.
--Mike
On Thu, 2004-05-27 at 21:36, Michael Griego wrote:
> Try the attached patch to the sha1.c file and see if that takes care of
> the problem.
>
> --Mike
--- sha1.c.save 2004-05-27 21:26:12.000000000 -0500
+++ sha1.c 2004-05-27 21:41:50.000000000 -0500
@@ -9,6 +9,7 @@
#include "autoconf.h"
#include <string.h>
+#include <endian.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h>
@@ -24,14 +25,19 @@
#include "sha1.h"
-#define blk0(i) (block->l[i] = htonl(block->l[i]))
#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
/* blk0() and blk() perform the initial expand. */
/* I got the idea of expanding during the round function from SSLeay */
-#define blk0(i) (block->l[i] = htonl(block->l[i]))
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define blk0(i) block->l[i]
+# else /* __BYTE_ORDER == __LITTLE_ENDIAN */
+# define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
+ |(rol(block->l[i],8)&0x00FF00FF))
+# endif
+
#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
^block->l[(i+2)&15]^block->l[i&15],1))