block-sha1: move code around
Move the code around so specific architecture hacks are defined first. Also make one line comments actually one line. No code change. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Nicolas Pitre committed
Aug 12, 2009 at 15:45 UTC
30ba0de726d92ccfc93009eb60f2c30b0886f61b
1 file changed
+60
-69
block-sha1/sha1.c
+60
-69
@@ -9,74 +9,6 @@
9
10
#include "sha1.h"
11
12
-/* Hash one 64-byte block of data */
13
-static void blk_SHA1Block(blk_SHA_CTX *ctx, const unsigned int *data);
14
-
15
-void blk_SHA1_Init(blk_SHA_CTX *ctx)
16
-{
17
- ctx->size = 0;
18
-
19
- /* Initialize H with the magic constants (see FIPS180 for constants)
20
- */
21
- ctx->H[0] = 0x67452301;
22
- ctx->H[1] = 0xefcdab89;
23
- ctx->H[2] = 0x98badcfe;
24
- ctx->H[3] = 0x10325476;
25
- ctx->H[4] = 0xc3d2e1f0;
26
-}
27
-
28
-
29
-void blk_SHA1_Update(blk_SHA_CTX *ctx, const void *data, unsigned long len)
30
-{
31
- int lenW = ctx->size & 63;
32
-
33
- ctx->size += len;
34
-
35
- /* Read the data into W and process blocks as they get full
36
- */
37
- if (lenW) {
38
- int left = 64 - lenW;
39
- if (len < left)
40
- left = len;
41
- memcpy(lenW + (char *)ctx->W, data, left);
42
- lenW = (lenW + left) & 63;
43
- len -= left;
44
- data += left;
45
- if (lenW)
46
- return;
47
- blk_SHA1Block(ctx, ctx->W);
48
- }
49
- while (len >= 64) {
50
- blk_SHA1Block(ctx, data);
51
- data += 64;
52
- len -= 64;
53
- }
54
- if (len)
55
- memcpy(ctx->W, data, len);
56
-}
57
-
58
-
59
-void blk_SHA1_Final(unsigned char hashout[20], blk_SHA_CTX *ctx)
60
-{
61
- static const unsigned char pad[64] = { 0x80 };
62
- unsigned int padlen[2];
63
- int i;
64
-
65
- /* Pad with a binary 1 (ie 0x80), then zeroes, then length
66
- */
67
- padlen[0] = htonl(ctx->size >> 29);
68
- padlen[1] = htonl(ctx->size << 3);
69
-
70
- i = ctx->size & 63;
71
- blk_SHA1_Update(ctx, pad, 1+ (63 & (55 - i)));
72
- blk_SHA1_Update(ctx, padlen, 8);
73
-
74
- /* Output hash
75
- */
76
- for (i = 0; i < 5; i++)
77
- ((unsigned int *)hashout)[i] = htonl(ctx->H[i]);
78
-}
79
-
12
#if defined(__i386__) || defined(__x86_64__)
13
14
#define SHA_ASM(op, x, n) ({ unsigned int __res; __asm__(op " %1,%0":"=r" (__res):"i" (n), "0" (x)); __res; })
@@ -136,7 +68,7 @@ void blk_SHA1_Final(unsigned char hashout[20], blk_SHA_CTX *ctx)
68
#define T_40_59(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, ((B&C)+(D&(B^C))) , 0x8f1bbcdc, A, B, C, D, E )
69
#define T_60_79(t, A, B, C, D, E) SHA_ROUND(t, SHA_MIX, (B^C^D) , 0xca62c1d6, A, B, C, D, E )
70
139
-static void blk_SHA1Block(blk_SHA_CTX *ctx, const unsigned int *data)
71
+static void blk_SHA1_Block(blk_SHA_CTX *ctx, const unsigned int *data)
72
{
73
unsigned int A,B,C,D,E;
74
unsigned int array[16];
@@ -243,3 +175,62 @@ static void blk_SHA1Block(blk_SHA_CTX *ctx, const unsigned int *data)
175
ctx->H[3] += D;
176
ctx->H[4] += E;
177
}
178
+
179
+void blk_SHA1_Init(blk_SHA_CTX *ctx)
180
+{
181
+ ctx->size = 0;
182
+
183
+ /* Initialize H with the magic constants (see FIPS180 for constants) */
184
+ ctx->H[0] = 0x67452301;
185
+ ctx->H[1] = 0xefcdab89;
186
+ ctx->H[2] = 0x98badcfe;
187
+ ctx->H[3] = 0x10325476;
188
+ ctx->H[4] = 0xc3d2e1f0;
189
+}
190
+
191
+void blk_SHA1_Update(blk_SHA_CTX *ctx, const void *data, unsigned long len)
192
+{
193
+ int lenW = ctx->size & 63;
194
+
195
+ ctx->size += len;
196
+
197
+ /* Read the data into W and process blocks as they get full */
198
+ if (lenW) {
199
+ int left = 64 - lenW;
200
+ if (len < left)
201
+ left = len;
202
+ memcpy(lenW + (char *)ctx->W, data, left);
203
+ lenW = (lenW + left) & 63;
204
+ len -= left;
205
+ data += left;
206
+ if (lenW)
207
+ return;
208
+ blk_SHA1_Block(ctx, ctx->W);
209
+ }
210
+ while (len >= 64) {
211
+ blk_SHA1_Block(ctx, data);
212
+ data += 64;
213
+ len -= 64;
214
+ }
215
+ if (len)
216
+ memcpy(ctx->W, data, len);
217
+}
218
+
219
+void blk_SHA1_Final(unsigned char hashout[20], blk_SHA_CTX *ctx)
220
+{
221
+ static const unsigned char pad[64] = { 0x80 };
222
+ unsigned int padlen[2];
223
+ int i;
224
+
225
+ /* Pad with a binary 1 (ie 0x80), then zeroes, then length */
226
+ padlen[0] = htonl(ctx->size >> 29);
227
+ padlen[1] = htonl(ctx->size << 3);
228
+
229
+ i = ctx->size & 63;
230
+ blk_SHA1_Update(ctx, pad, 1+ (63 & (55 - i)));
231
+ blk_SHA1_Update(ctx, padlen, 8);
232
+
233
+ /* Output hash */
234
+ for (i = 0; i < 5; i++)
235
+ ((unsigned int *)hashout)[i] = htonl(ctx->H[i]);
236
+}