Subversion Repositories Kolibri OS

Rev

Rev 3431 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 3431 Rev 6461
Line 1... Line 1...
1
;    libcrash -- cryptographic hash functions
1
;    libcrash -- cryptographic hash functions
2
;
2
;
3
;    Copyright (C) 2012-2013 Ivan Baravy (dunkaist)
3
;    Copyright (C) 2012-2013,2016 Ivan Baravy (dunkaist)
4
;
4
;
5
;    This program is free software: you can redistribute it and/or modify
5
;    This program is free software: you can redistribute it and/or modify
6
;    it under the terms of the GNU General Public License as published by
6
;    it under the terms of the GNU General Public License as published by
7
;    the Free Software Foundation, either version 3 of the License, or
7
;    the Free Software Foundation, either version 3 of the License, or
8
;    (at your option) any later version.
8
;    (at your option) any later version.
Line 13... Line 13...
13
;    GNU General Public License for more details.
13
;    GNU General Public License for more details.
14
;
14
;
15
;    You should have received a copy of the GNU General Public License
15
;    You should have received a copy of the GNU General Public License
16
;    along with this program.  If not, see .
16
;    along with this program.  If not, see .
Line -... Line 17...
-
 
17
 
-
 
18
 
-
 
19
SHA224256_BLOCK_SIZE = 64
-
 
20
SHA224256_INIT_SIZE  = 32
-
 
21
SHA224_HASH_SIZE     = 28
-
 
22
SHA256_HASH_SIZE     = 32
-
 
23
SHA224256_ALIGN      = 4
-
 
24
SHA224256_ALIGN_MASK = SHA224256_ALIGN - 1
-
 
25
 
-
 
26
struct ctx_sha224256
-
 
27
        hash            rb SHA224256_INIT_SIZE
-
 
28
        block           rb SHA224256_BLOCK_SIZE
-
 
29
        index           rd 1
-
 
30
        msglen_0        rd 1
-
 
31
        msglen_1        rd 1
-
 
32
ends
-
 
33
 
17
 
34
 
18
macro chn x, y, z
35
macro sha224256._.chn x, y, z
19
{
36
{
20
	mov	eax, [y]
37
        mov     eax, [y]
21
	xor	eax, [z]
38
        xor     eax, [z]
22
	and	eax, [x]
39
        and     eax, [x]
23
	xor	eax, [z]
40
        xor     eax, [z]
Line 24... Line 41...
24
}
41
}
25
 
42
 
26
macro maj x, y, z
43
macro sha224256._.maj x, y, z
27
{
44
{
28
	mov	eax, [x]
45
        mov     eax, [x]
29
	xor	eax, [y]
46
        xor     eax, [y]
30
	and	eax, [z]
47
        and     eax, [z]
31
	mov	ecx, [x]
48
        mov     ecx, [x]
32
	and	ecx, [y]
49
        and     ecx, [y]
Line 33... Line 50...
33
	xor	eax, ecx
50
        xor     eax, ecx
34
}
51
}
35
 
52
 
36
macro Sigma0 x
53
macro sha224256._.Sigma0 x
37
{
54
{
38
	mov	eax, x
55
        mov     eax, x
Line 43... Line 60...
43
	mov	ecx, x
60
        mov     ecx, x
44
	ror	ecx, 22
61
        ror     ecx, 22
45
	xor	eax, ecx
62
        xor     eax, ecx
46
}
63
}
Line 47... Line 64...
47
 
64
 
48
macro Sigma1 x
65
macro sha224256._.Sigma1 x
49
{
66
{
50
	mov	eax, x
67
        mov     eax, x
51
	mov	ecx, eax
68
        mov     ecx, eax
52
	ror	ecx, 6
69
        ror     ecx, 6
Line 55... Line 72...
55
	mov	ecx, x
72
        mov     ecx, x
56
	ror	ecx, 25
73
        ror     ecx, 25
57
	xor	eax, ecx
74
        xor     eax, ecx
58
}
75
}
Line 59... Line 76...
59
 
76
 
60
macro sigma0 x
77
macro sha224256._.sigma0 x
61
{
78
{
62
	mov	eax, x
79
        mov     eax, x
63
	mov	ecx, eax
80
        mov     ecx, eax
64
	ror	ecx, 7
81
        ror     ecx, 7
Line 67... Line 84...
67
	mov	ecx, x
84
        mov     ecx, x
68
	shr	ecx, 3
85
        shr     ecx, 3
69
	xor	eax, ecx
86
        xor     eax, ecx
70
}
87
}
Line 71... Line 88...
71
 
88
 
72
macro sigma1 x
89
macro sha224256._.sigma1 x
73
{
90
{
74
	mov	eax, x
91
        mov     eax, x
75
	mov	ecx, eax
92
        mov     ecx, eax
76
	ror	ecx, 17
93
        ror     ecx, 17
Line 79... Line 96...
79
	mov	ecx, x
96
        mov     ecx, x
80
	shr	ecx, 10
97
        shr     ecx, 10
81
	xor	eax, ecx
98
        xor     eax, ecx
82
}
99
}
Line 83... Line 100...
83
 
100
 
84
macro recalculate_w n
101
macro sha224256._.recalculate_w n
85
{
102
{
86
	mov	edx, [w + ((n-2) and 15)*4]
103
        mov     edx, [w + ((n-2) and 15)*4]
87
	sigma1	edx
104
        sha224256._.sigma1  edx
88
	add	eax, [w + ((n-7) and 15)*4]
105
        add     eax, [w + ((n-7) and 15)*4]
89
	push	eax
106
        push    eax
90
	mov	edx, [w + ((n-15) and 15)*4]
107
        mov     edx, [w + ((n-15) and 15)*4]
91
	sigma0	edx
108
        sha224256._.sigma0  edx
92
	pop	ecx
109
        pop     ecx
93
	add	eax, ecx
110
        add     eax, ecx
94
	add	[w + (n)*4], eax
111
        add     [w + (n)*4], eax
Line 95... Line 112...
95
}
112
}
96
 
113
 
97
macro crash.sha256.round a, b, c, d, e, f, g, h, k
114
macro sha224256._.round a, b, c, d, e, f, g, h, k
98
{
115
{
99
	mov	ebx, [h]
116
        mov     ebx, [h]
Line 100... Line 117...
100
	mov	edx, [e]
117
        mov     edx, [e]
101
	Sigma1	edx
118
        sha224256._.Sigma1  edx
Line 102... Line 119...
102
 
119
 
103
	add	ebx, eax
120
        add     ebx, eax
104
	chn	e, f, g
121
        sha224256._.chn     e, f, g
Line 105... Line 122...
105
 
122
 
Line 106... Line 123...
106
	add	ebx, eax
123
        add     ebx, eax
107
	add	ebx, [k]
124
        add     ebx, [k]
108
	add	ebx, edi
125
        add     ebx, edi
109
 
126
 
110
	add	[d], ebx
127
        add     [d], ebx
111
 
128
 
112
	mov	edx, [a]
129
        mov     edx, [a]
Line 113... Line 130...
113
	Sigma0	edx
130
        sha224256._.Sigma0  edx
114
	add	ebx, eax
131
        add     ebx, eax
Line 115... Line 132...
115
	maj	a, b, c
132
        sha224256._.maj     a, b, c
116
	add	eax, ebx
133
        add     eax, ebx
Line 117... Line 134...
117
	mov	[h], eax
134
        mov     [h], eax
118
}
135
}
119
 
136
 
120
 
137
 
Line 121... Line 138...
121
macro crash.sha256.round_1_16 a, b, c, d, e, f, g, h, n
138
macro sha224256._.round_1_16 a, b, c, d, e, f, g, h, n
122
{
139
{
123
 
140
 
124
	mov	eax, [esi + (n)*4]
141
        mov     eax, [esi + (n)*4]
125
	bswap	eax
142
        bswap   eax
126
 
143
 
Line -... Line 144...
-
 
144
        mov     dword[w + (n)*4], eax
-
 
145
        mov     edi, eax
-
 
146
        sha224256._.round a, b, c, d, e, f, g, h, (sha256_table + (n)*4)
-
 
147
}
-
 
148
 
-
 
149
macro sha224256._.round_17_64 a, b, c, d, e, f, g, h, n, rep_num
-
 
150
{
-
 
151
        sha224256._.recalculate_w n
-
 
152
        mov     edi, [w + (n)*4]
-
 
153
        sha224256._.round a, b, c, d, e, f, g, h, (sha256_table + (n+16*rep_num)*4)
-
 
154
}
-
 
155
 
-
 
156
 
-
 
157
proc sha224.init _ctx
-
 
158
        mov     ebx, [_ctx]
-
 
159
        lea     edi, [ebx + ctx_sha224256.hash]
-
 
160
        mov     esi, sha224._.hash_init
-
 
161
        mov     ecx, SHA224256_INIT_SIZE/4
-
 
162
        rep     movsd
-
 
163
        xor     eax, eax
-
 
164
        mov     [ebx + ctx_sha224256.index], eax
-
 
165
        mov     [ebx + ctx_sha224256.msglen_0], eax
-
 
166
        mov     [ebx + ctx_sha224256.msglen_1], eax
-
 
167
        ret
-
 
168
endp
-
 
169
 
-
 
170
 
-
 
171
proc sha256.init _ctx
127
	mov	dword[w + (n)*4], eax
172
        mov     ebx, [_ctx]
128
	mov	edi, eax
173
        lea     edi, [ebx + ctx_sha224256.hash]
129
	crash.sha256.round a, b, c, d, e, f, g, h, (crash._.sha256_table + (n)*4)
174
        mov     esi, sha256._.hash_init
130
}
175
        mov     ecx, SHA224256_INIT_SIZE/4
131
 
176
        rep     movsd
132
macro crash.sha256.round_17_64 a, b, c, d, e, f, g, h, n, rep_num
177
        xor     eax, eax
Line 147... Line 192...
147
	E	rd 1
192
        E       rd 1
148
	F	rd 1
193
        F       rd 1
149
	G	rd 1
194
        G       rd 1
150
	H	rd 1
195
        H       rd 1
151
endl
196
endl
152
	mov	edi, [_sha256]
197
        mov     edi, [_hash]
153
	mov	eax, [edi + 0x00]
198
        mov     eax, [edi + 0x00]
154
	mov	[A], eax
199
        mov     [A], eax
155
	mov	eax, [edi + 0x04]
200
        mov     eax, [edi + 0x04]
156
	mov	[B], eax
201
        mov     [B], eax
157
	mov	eax, [edi + 0x08]
202
        mov     eax, [edi + 0x08]
Line 165... Line 210...
165
	mov	eax, [edi + 0x18]
210
        mov     eax, [edi + 0x18]
166
	mov	[G], eax
211
        mov     [G], eax
167
	mov	eax, [edi + 0x1c]
212
        mov     eax, [edi + 0x1c]
168
	mov	[H], eax
213
        mov     [H], eax
Line 169... Line 214...
169
 
214
 
170
	crash.sha256.round_1_16		A, B, C, D, E, F, G, H,  0
215
        sha224256._.round_1_16  A, B, C, D, E, F, G, H,  0
171
	crash.sha256.round_1_16		H, A, B, C, D, E, F, G,  1
216
        sha224256._.round_1_16  H, A, B, C, D, E, F, G,  1
172
	crash.sha256.round_1_16		G, H, A, B, C, D, E, F,  2
217
        sha224256._.round_1_16  G, H, A, B, C, D, E, F,  2
173
	crash.sha256.round_1_16		F, G, H, A, B, C, D, E,  3
218
        sha224256._.round_1_16  F, G, H, A, B, C, D, E,  3
174
	crash.sha256.round_1_16		E, F, G, H, A, B, C, D,  4
219
        sha224256._.round_1_16  E, F, G, H, A, B, C, D,  4
175
	crash.sha256.round_1_16		D, E, F, G, H, A, B, C,  5
220
        sha224256._.round_1_16  D, E, F, G, H, A, B, C,  5
176
	crash.sha256.round_1_16		C, D, E, F, G, H, A, B,  6
221
        sha224256._.round_1_16  C, D, E, F, G, H, A, B,  6
177
	crash.sha256.round_1_16		B, C, D, E, F, G, H, A,  7
222
        sha224256._.round_1_16  B, C, D, E, F, G, H, A,  7
178
	crash.sha256.round_1_16		A, B, C, D, E, F, G, H,  8
223
        sha224256._.round_1_16  A, B, C, D, E, F, G, H,  8
179
	crash.sha256.round_1_16		H, A, B, C, D, E, F, G,  9
224
        sha224256._.round_1_16  H, A, B, C, D, E, F, G,  9
180
	crash.sha256.round_1_16		G, H, A, B, C, D, E, F, 10
225
        sha224256._.round_1_16  G, H, A, B, C, D, E, F, 10
181
	crash.sha256.round_1_16		F, G, H, A, B, C, D, E, 11
226
        sha224256._.round_1_16  F, G, H, A, B, C, D, E, 11
182
	crash.sha256.round_1_16		E, F, G, H, A, B, C, D, 12
227
        sha224256._.round_1_16  E, F, G, H, A, B, C, D, 12
183
	crash.sha256.round_1_16		D, E, F, G, H, A, B, C, 13
228
        sha224256._.round_1_16  D, E, F, G, H, A, B, C, 13
184
	crash.sha256.round_1_16		C, D, E, F, G, H, A, B, 14
229
        sha224256._.round_1_16  C, D, E, F, G, H, A, B, 14
Line 185... Line 230...
185
	crash.sha256.round_1_16		B, C, D, E, F, G, H, A, 15
230
        sha224256._.round_1_16  B, C, D, E, F, G, H, A, 15
186
 
231
 
187
repeat 3
232
repeat 3
188
	crash.sha256.round_17_64	A, B, C, D, E, F, G, H,  0, %
233
        sha224256._.round_17_64 A, B, C, D, E, F, G, H,  0, %
189
	crash.sha256.round_17_64	H, A, B, C, D, E, F, G,  1, %
234
        sha224256._.round_17_64 H, A, B, C, D, E, F, G,  1, %
190
	crash.sha256.round_17_64	G, H, A, B, C, D, E, F,  2, %
235
        sha224256._.round_17_64 G, H, A, B, C, D, E, F,  2, %
191
	crash.sha256.round_17_64	F, G, H, A, B, C, D, E,  3, %
236
        sha224256._.round_17_64 F, G, H, A, B, C, D, E,  3, %
192
	crash.sha256.round_17_64	E, F, G, H, A, B, C, D,  4, %
237
        sha224256._.round_17_64 E, F, G, H, A, B, C, D,  4, %
193
	crash.sha256.round_17_64	D, E, F, G, H, A, B, C,  5, %
238
        sha224256._.round_17_64 D, E, F, G, H, A, B, C,  5, %
194
	crash.sha256.round_17_64	C, D, E, F, G, H, A, B,  6, %
239
        sha224256._.round_17_64 C, D, E, F, G, H, A, B,  6, %
195
	crash.sha256.round_17_64	B, C, D, E, F, G, H, A,  7, %
240
        sha224256._.round_17_64 B, C, D, E, F, G, H, A,  7, %
196
	crash.sha256.round_17_64	A, B, C, D, E, F, G, H,  8, %
241
        sha224256._.round_17_64 A, B, C, D, E, F, G, H,  8, %
197
	crash.sha256.round_17_64	H, A, B, C, D, E, F, G,  9, %
242
        sha224256._.round_17_64 H, A, B, C, D, E, F, G,  9, %
198
	crash.sha256.round_17_64	G, H, A, B, C, D, E, F, 10, %
243
        sha224256._.round_17_64 G, H, A, B, C, D, E, F, 10, %
199
	crash.sha256.round_17_64	F, G, H, A, B, C, D, E, 11, %
244
        sha224256._.round_17_64 F, G, H, A, B, C, D, E, 11, %
200
	crash.sha256.round_17_64	E, F, G, H, A, B, C, D, 12, %
245
        sha224256._.round_17_64 E, F, G, H, A, B, C, D, 12, %
201
	crash.sha256.round_17_64	D, E, F, G, H, A, B, C, 13, %
246
        sha224256._.round_17_64 D, E, F, G, H, A, B, C, 13, %
202
	crash.sha256.round_17_64	C, D, E, F, G, H, A, B, 14, %
247
        sha224256._.round_17_64 C, D, E, F, G, H, A, B, 14, %
Line 203... Line 248...
203
	crash.sha256.round_17_64	B, C, D, E, F, G, H, A, 15, %
248
        sha224256._.round_17_64 B, C, D, E, F, G, H, A, 15, %
204
end repeat
249
end repeat
205
 
250
 
206
	mov	edi, [_sha256]
251
        mov     edi, [_hash]
207
	mov	eax, [A]
252
        mov     eax, [A]
208
	add	[edi + 0x00], eax
253
        add     [edi + 0x00], eax
Line 218... Line 263...
218
	add	[edi + 0x14], eax
263
        add     [edi + 0x14], eax
219
	mov	eax, [G]
264
        mov     eax, [G]
220
	add	[edi + 0x18], eax
265
        add     [edi + 0x18], eax
221
	mov	eax, [H]
266
        mov     eax, [H]
222
	add	[edi + 0x1c], eax
267
        add     [edi + 0x1c], eax
223
	add	esi, 64
-
 
Line 224... Line 268...
224
 
268
 
225
	ret
269
        ret
Line -... Line 270...
-
 
270
endp
-
 
271
 
-
 
272
 
-
 
273
proc sha224256.update _ctx, _msg, _size
-
 
274
        mov     ebx, [_ctx]
-
 
275
        mov     ecx, [_size]
-
 
276
        add     [ebx + ctx_sha224256.msglen_0], ecx
-
 
277
        adc     [ebx + ctx_sha224256.msglen_1], 0
-
 
278
 
-
 
279
  .next_block:
-
 
280
        mov     ebx, [_ctx]
-
 
281
        mov     esi, [_msg]
-
 
282
        mov     eax, [ebx + ctx_sha224256.index]
-
 
283
        and     eax, SHA224256_BLOCK_SIZE-1
-
 
284
        jnz     .copy_to_buf
-
 
285
        test    esi, SHA224256_ALIGN_MASK
-
 
286
        jnz     .copy_to_buf
-
 
287
  .no_copy:
-
 
288
        ; data is aligned, hash it in place without copying
-
 
289
        mov     ebx, [_ctx]
-
 
290
        cmp     [_size], SHA224256_BLOCK_SIZE
-
 
291
        jb      .copy_quit
-
 
292
        lea     eax, [ebx + ctx_sha224256.hash]
-
 
293
        stdcall sha224256._.block, eax
-
 
294
        sub     [_size], SHA224256_BLOCK_SIZE
-
 
295
        add     esi, SHA224256_BLOCK_SIZE           ; FIXME
-
 
296
        jmp     .no_copy
-
 
297
 
-
 
298
  .copy_to_buf:
-
 
299
        lea     edi, [ebx + ctx_sha224256.block]
-
 
300
        add     edi, eax
-
 
301
        mov     ecx, SHA224256_BLOCK_SIZE
-
 
302
        sub     ecx, eax
-
 
303
        cmp     [_size], ecx
-
 
304
        jb      .copy_quit
-
 
305
        sub     [_size], ecx
-
 
306
        add     [_msg], ecx
-
 
307
        add     [ebx + ctx_sha224256.index], ecx
-
 
308
        rep     movsb
-
 
309
        lea     eax, [ebx + ctx_sha224256.hash]
-
 
310
        lea     esi, [ebx + ctx_sha224256.block]
-
 
311
        stdcall sha224256._.block, eax
-
 
312
        jmp     .next_block
-
 
313
 
-
 
314
  .copy_quit:
-
 
315
        mov     ebx, [_ctx]
-
 
316
        lea     edi, [ebx + ctx_sha224256.block]
-
 
317
        mov     eax, [ebx + ctx_sha224256.index]
-
 
318
        and     eax, SHA224256_BLOCK_SIZE-1
-
 
319
        add     edi, eax
-
 
320
        mov     ecx, [_size]
-
 
321
        add     [ebx + ctx_sha224256.index], ecx
-
 
322
        rep     movsb
-
 
323
  .quit:
-
 
324
 
-
 
325
        ret
-
 
326
endp
-
 
327
 
-
 
328
 
-
 
329
proc sha224256.final _ctx
-
 
330
        mov     ebx, [_ctx]
-
 
331
        lea     edi, [ebx + ctx_sha224256.block]
-
 
332
        mov     ecx, [ebx + ctx_sha224256.msglen_0]
-
 
333
        and     ecx, SHA224256_BLOCK_SIZE-1
-
 
334
        add     edi, ecx
-
 
335
        mov     byte[edi], 0x80
-
 
336
        inc     edi
-
 
337
        neg     ecx
-
 
338
        add     ecx, SHA224256_BLOCK_SIZE
-
 
339
        cmp     ecx, 8
-
 
340
        ja      .last
-
 
341
 
-
 
342
        dec     ecx
-
 
343
        xor     eax, eax
-
 
344
        rep     stosb
-
 
345
        lea     esi, [ebx + ctx_sha224256.block]
-
 
346
        lea     eax, [ebx + ctx_sha224256.hash]
-
 
347
        stdcall sha224256._.block, eax
-
 
348
        mov     ebx, [_ctx]
-
 
349
        lea     edi, [ebx + ctx_sha224256.block]
-
 
350
        mov     ecx, SHA224256_BLOCK_SIZE+1
-
 
351
  .last:
-
 
352
        dec     ecx
-
 
353
        sub     ecx, 8
-
 
354
        xor     eax, eax
-
 
355
        rep     stosb
-
 
356
        mov     eax, [ebx + ctx_sha224256.msglen_0]
-
 
357
        mov     edx, [ebx + ctx_sha224256.msglen_1]
-
 
358
        shld    edx, eax, 3
-
 
359
        shl     eax, 3
-
 
360
        bswap   eax
-
 
361
        bswap   edx
-
 
362
        mov     dword[edi], edx
-
 
363
        mov     dword[edi+4], eax
-
 
364
        lea     esi, [ebx + ctx_sha224256.block]
-
 
365
        lea     eax, [ebx + ctx_sha224256.hash]
-
 
366
        stdcall sha224256._.block, eax
-
 
367
 
-
 
368
        mov     ebx, [_ctx]
-
 
369
        lea     eax, [ebx + ctx_sha224256.hash]
-
 
370
        stdcall sha224256._.postprocess, ebx, eax
-
 
371
 
-
 
372
        ret
-
 
373
endp
-
 
374
 
-
 
375
 
-
 
376
proc sha224256._.postprocess _ctx, _hash
-
 
377
        mov     ecx, 8
-
 
378
        mov     esi, [_hash]
-
 
379
        mov     edi, esi
-
 
380
    @@:
-
 
381
        lodsd
-
 
382
        bswap   eax
-
 
383
        stosd
-
 
384
        dec     ecx
-
 
385
        jnz     @b
-
 
386
        ret
-
 
387
endp
-
 
388
 
-
 
389
 
-
 
390
align SHA224256_ALIGN
-
 
391
 
-
 
392
sha224._.hash_init      dd 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\
-
 
393
                           0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4
-
 
394
 
-
 
395
sha256._.hash_init      dd 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\
-
 
396
                           0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19
-
 
397
 
-
 
398
sha256_table            dd 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\
-
 
399
                           0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\
-
 
400
                           0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\
-
 
401
                           0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\
-
 
402
                           0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\
-
 
403
                           0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\
-
 
404
                           0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\
-
 
405
                           0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\
-
 
406
                           0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\
-
 
407
                           0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\
-
 
408
                           0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\
-
 
409
                           0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\
-
 
410
                           0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\
-
 
411
                           0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\
-
 
412
                           0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\