ObjFW  Diff

Differences From Artifact [ba33b42a53]:

To Artifact [76bf5a4c3b]:


21
22
23
24
25
26
27
28
29


30
31

32
33
34
35
36



37
38
39
40
41
42
43
21
22
23
24
25
26
27


28
29
30

31
32
33



34
35
36
37
38
39
40
41
42
43







-
-
+
+

-
+


-
-
-
+
+
+







#import "OFSHA1Hash.h"
#import "OFExceptions.h"
#import "macros.h"

/* blk0() and blk() perform the initial expand. */
#ifndef OF_BIG_ENDIAN
#define blk0(i)							\
	(block->l[i] = (OF_ROL(block->l[i], 24) & 0xFF00FF00) |	\
	    (OF_ROL(block->l[i], 8) & 0x00FF00FF))
	(block.l[i] = (OF_ROL(block.l[i], 24) & 0xFF00FF00) |	\
	    (OF_ROL(block.l[i], 8) & 0x00FF00FF))
#else
#define blk0(i) block->l[i]
#define blk0(i) block.l[i]
#endif
#define blk(i) \
	(block->l[i & 15] = OF_ROL(block->l[(i + 13) & 15] ^	\
	    block->l[(i + 8) & 15] ^ block->l[(i + 2) & 15] ^	\
	    block->l[i & 15], 1))
	(block.l[i & 15] = OF_ROL(block.l[(i + 13) & 15] ^	\
	    block.l[(i + 8) & 15] ^ block.l[(i + 2) & 15] ^	\
	    block.l[i & 15], 1))

/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
#define R0(v, w, x, y, z, i)						\
	z += ((w & (x ^ y)) ^ y) + blk0(i) + 0x5A827999 + OF_ROL(v, 5);	\
	w = OF_ROL(w, 30);
#define R1(v, w, x, y, z, i)						\
	z += ((w & (x ^ y)) ^ y) + blk(i) +  0x5A827999 + OF_ROL(v, 5);	\
57
58
59
60
61
62
63
64
65

66
67
68

69
70
71
72
73
74
75
57
58
59
60
61
62
63


64
65


66
67
68
69
70
71
72
73







-
-
+

-
-
+







	uint32_t l[16];
} sha1_c64l16_t;

static inline void
sha1_transform(uint32_t state[5], const char buffer[64])
{
	uint32_t      a, b, c, d, e;
	char	      workspace[64];
	sha1_c64l16_t *block;
	sha1_c64l16_t block;

	block = (sha1_c64l16_t*)workspace;
	memcpy(block, buffer, 64);
	memcpy(block.c, buffer, 64);

	/* Copy state[] to working vars */
	a = state[0];
	b = state[1];
	c = state[2];
	d = state[3];
	e = state[4];