9
9
#include <linux/kernel.h>
10
10
#include <linux/export.h>
11
11
#include <linux/bitops.h>
12
+ #include <linux/string.h>
12
13
#include <crypto/sha1.h>
13
14
#include <asm/unaligned.h>
14
15
55
56
#define SHA_ROUND (t , input , fn , constant , A , B , C , D , E ) do { \
56
57
__u32 TEMP = input(t); setW(t, TEMP); \
57
58
E += TEMP + rol32(A,5) + (fn) + (constant); \
58
- B = ror32(B, 2); } while (0)
59
+ B = ror32(B, 2); \
60
+ TEMP = E; E = D; D = C; C = B; B = A; A = TEMP; } while (0)
59
61
60
62
#define T_0_15 (t , A , B , C , D , E ) SHA_ROUND(t, SHA_SRC, (((C^D)&B)^D) , 0x5a827999, A, B, C, D, E )
61
63
#define T_16_19 (t , A , B , C , D , E ) SHA_ROUND(t, SHA_MIX, (((C^D)&B)^D) , 0x5a827999, A, B, C, D, E )
84
86
void sha1_transform (__u32 * digest , const char * data , __u32 * array )
85
87
{
86
88
__u32 A , B , C , D , E ;
89
+ unsigned int i = 0 ;
87
90
88
91
A = digest [0 ];
89
92
B = digest [1 ];
@@ -92,94 +95,24 @@ void sha1_transform(__u32 *digest, const char *data, __u32 *array)
92
95
E = digest [4 ];
93
96
94
97
/* Round 1 - iterations 0-16 take their input from 'data' */
95
- T_0_15 ( 0 , A , B , C , D , E );
96
- T_0_15 ( 1 , E , A , B , C , D );
97
- T_0_15 ( 2 , D , E , A , B , C );
98
- T_0_15 ( 3 , C , D , E , A , B );
99
- T_0_15 ( 4 , B , C , D , E , A );
100
- T_0_15 ( 5 , A , B , C , D , E );
101
- T_0_15 ( 6 , E , A , B , C , D );
102
- T_0_15 ( 7 , D , E , A , B , C );
103
- T_0_15 ( 8 , C , D , E , A , B );
104
- T_0_15 ( 9 , B , C , D , E , A );
105
- T_0_15 (10 , A , B , C , D , E );
106
- T_0_15 (11 , E , A , B , C , D );
107
- T_0_15 (12 , D , E , A , B , C );
108
- T_0_15 (13 , C , D , E , A , B );
109
- T_0_15 (14 , B , C , D , E , A );
110
- T_0_15 (15 , A , B , C , D , E );
98
+ for (; i < 16 ; ++ i )
99
+ T_0_15 (i , A , B , C , D , E );
111
100
112
101
/* Round 1 - tail. Input from 512-bit mixing array */
113
- T_16_19 (16 , E , A , B , C , D );
114
- T_16_19 (17 , D , E , A , B , C );
115
- T_16_19 (18 , C , D , E , A , B );
116
- T_16_19 (19 , B , C , D , E , A );
102
+ for (; i < 20 ; ++ i )
103
+ T_16_19 (i , A , B , C , D , E );
117
104
118
105
/* Round 2 */
119
- T_20_39 (20 , A , B , C , D , E );
120
- T_20_39 (21 , E , A , B , C , D );
121
- T_20_39 (22 , D , E , A , B , C );
122
- T_20_39 (23 , C , D , E , A , B );
123
- T_20_39 (24 , B , C , D , E , A );
124
- T_20_39 (25 , A , B , C , D , E );
125
- T_20_39 (26 , E , A , B , C , D );
126
- T_20_39 (27 , D , E , A , B , C );
127
- T_20_39 (28 , C , D , E , A , B );
128
- T_20_39 (29 , B , C , D , E , A );
129
- T_20_39 (30 , A , B , C , D , E );
130
- T_20_39 (31 , E , A , B , C , D );
131
- T_20_39 (32 , D , E , A , B , C );
132
- T_20_39 (33 , C , D , E , A , B );
133
- T_20_39 (34 , B , C , D , E , A );
134
- T_20_39 (35 , A , B , C , D , E );
135
- T_20_39 (36 , E , A , B , C , D );
136
- T_20_39 (37 , D , E , A , B , C );
137
- T_20_39 (38 , C , D , E , A , B );
138
- T_20_39 (39 , B , C , D , E , A );
106
+ for (; i < 40 ; ++ i )
107
+ T_20_39 (i , A , B , C , D , E );
139
108
140
109
/* Round 3 */
141
- T_40_59 (40 , A , B , C , D , E );
142
- T_40_59 (41 , E , A , B , C , D );
143
- T_40_59 (42 , D , E , A , B , C );
144
- T_40_59 (43 , C , D , E , A , B );
145
- T_40_59 (44 , B , C , D , E , A );
146
- T_40_59 (45 , A , B , C , D , E );
147
- T_40_59 (46 , E , A , B , C , D );
148
- T_40_59 (47 , D , E , A , B , C );
149
- T_40_59 (48 , C , D , E , A , B );
150
- T_40_59 (49 , B , C , D , E , A );
151
- T_40_59 (50 , A , B , C , D , E );
152
- T_40_59 (51 , E , A , B , C , D );
153
- T_40_59 (52 , D , E , A , B , C );
154
- T_40_59 (53 , C , D , E , A , B );
155
- T_40_59 (54 , B , C , D , E , A );
156
- T_40_59 (55 , A , B , C , D , E );
157
- T_40_59 (56 , E , A , B , C , D );
158
- T_40_59 (57 , D , E , A , B , C );
159
- T_40_59 (58 , C , D , E , A , B );
160
- T_40_59 (59 , B , C , D , E , A );
110
+ for (; i < 60 ; ++ i )
111
+ T_40_59 (i , A , B , C , D , E );
161
112
162
113
/* Round 4 */
163
- T_60_79 (60 , A , B , C , D , E );
164
- T_60_79 (61 , E , A , B , C , D );
165
- T_60_79 (62 , D , E , A , B , C );
166
- T_60_79 (63 , C , D , E , A , B );
167
- T_60_79 (64 , B , C , D , E , A );
168
- T_60_79 (65 , A , B , C , D , E );
169
- T_60_79 (66 , E , A , B , C , D );
170
- T_60_79 (67 , D , E , A , B , C );
171
- T_60_79 (68 , C , D , E , A , B );
172
- T_60_79 (69 , B , C , D , E , A );
173
- T_60_79 (70 , A , B , C , D , E );
174
- T_60_79 (71 , E , A , B , C , D );
175
- T_60_79 (72 , D , E , A , B , C );
176
- T_60_79 (73 , C , D , E , A , B );
177
- T_60_79 (74 , B , C , D , E , A );
178
- T_60_79 (75 , A , B , C , D , E );
179
- T_60_79 (76 , E , A , B , C , D );
180
- T_60_79 (77 , D , E , A , B , C );
181
- T_60_79 (78 , C , D , E , A , B );
182
- T_60_79 (79 , B , C , D , E , A );
114
+ for (; i < 80 ; ++ i )
115
+ T_60_79 (i , A , B , C , D , E );
183
116
184
117
digest [0 ] += A ;
185
118
digest [1 ] += B ;
0 commit comments