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))
#else
#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))
/* (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); \
|
|
|
|
|
|
|
|
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))
#else
#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))
/* (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
|
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;
block = (sha1_c64l16_t*)workspace;
memcpy(block, buffer, 64);
/* Copy state[] to working vars */
a = state[0];
b = state[1];
c = state[2];
d = state[3];
e = state[4];
|
<
|
<
|
|
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;
sha1_c64l16_t block;
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];
|