v

Зеркало из https://github.com/vlang/v
Форк
0
/
sha512_256_shavs_monte_test.v 
551 строка · 14.3 Кб
1
// These tests are derived from the Secure Hash Algorithm Validation System
2
// test vectors contained in:
3
// https://csrc.nist.gov/CSRC/media/Projects/Cryptographic-Algorithm-Validation-Program/documents/shs/shabytetestvectors.zip
4
//
5
// For SHA512_256, the test vectors come from:
6
//     SHA512_256Monte.rsp
7
import crypto.sha512
8
import encoding.hex
9

10
const seed = 'f41ece2613e4573915696b5adcd51ca328be3bf566a9ca99c9ceb0279c1cb0a7'
11

12
struct MonteTestCase {
13
	name   string
14
	count  int
15
	digest string
16
}
17

18
const monte_cases = [
19
	MonteTestCase{
20
		name:   'checkpoint 0'
21
		count:  0
22
		digest: 'b1d97a6536896aa01098fb2b9e15d8692621c84077051fc1f70a8a48baa6dfaf'
23
	},
24
	MonteTestCase{
25
		name:   'checkpoint 1'
26
		count:  1
27
		digest: 'a008d2c5adce31a95b30397ac691d8606c6769a47b801441ba3afb7f727c8a9c'
28
	},
29
	MonteTestCase{
30
		name:   'checkpoint 2'
31
		count:  2
32
		digest: '8eb896cb2b309db019121eb72564b89c1a59f74d4e2f2f6773c87b98c1997d77'
33
	},
34
	MonteTestCase{
35
		name:   'checkpoint 3'
36
		count:  3
37
		digest: 'ac71b694438cc300dde0f6f9f548d2304e2bdb6ea45e2b305af5fb3e4ec27761'
38
	},
39
	MonteTestCase{
40
		name:   'checkpoint 4'
41
		count:  4
42
		digest: 'd47cca4ae027778fc285bc78fb2a9c1cc7cde498267c35157e86b05fc58e698d'
43
	},
44
	MonteTestCase{
45
		name:   'checkpoint 5'
46
		count:  5
47
		digest: '8bc1516ecea32fa3cd4f9f12ac13a2af6763090226e7c1484b2d85757fc9e82a'
48
	},
49
	MonteTestCase{
50
		name:   'checkpoint 6'
51
		count:  6
52
		digest: '1abe44379539744d7806f5d3ef7c2202d0b08f575d1899b7a3df737b18e2a2a6'
53
	},
54
	MonteTestCase{
55
		name:   'checkpoint 7'
56
		count:  7
57
		digest: '324a7606ee9fc9cb26abd881581e70a06fedf33456f385b370973fcee8d01b7a'
58
	},
59
	MonteTestCase{
60
		name:   'checkpoint 8'
61
		count:  8
62
		digest: '06d1ccb978ca4b455ed380bea2e8c3afe24d0b935f5740677927f6f1a96fa111'
63
	},
64
	MonteTestCase{
65
		name:   'checkpoint 9'
66
		count:  9
67
		digest: 'cc78adb572c8cff2cc84020dfb61c521657baf3bcd8aea9593437cd2cdb94266'
68
	},
69
	MonteTestCase{
70
		name:   'checkpoint 10'
71
		count:  10
72
		digest: '935a43189f019f06a630f7601e1d40d51fc2c2ea602fea2c0da8404730c5a475'
73
	},
74
	MonteTestCase{
75
		name:   'checkpoint 11'
76
		count:  11
77
		digest: 'a99225bcdbbac4a87d8ed9e8e06889e823fc993a9661cedf1af02c6d38505989'
78
	},
79
	MonteTestCase{
80
		name:   'checkpoint 12'
81
		count:  12
82
		digest: 'e5e769874da74a143cd49f0a2f7a6cd3ad4c28f55d8719c85063dfdf0e1efbbf'
83
	},
84
	MonteTestCase{
85
		name:   'checkpoint 13'
86
		count:  13
87
		digest: '43f7ff7effc58dead5f13a47f8ea7e19f83dbcb409b10b3f985c78346817448f'
88
	},
89
	MonteTestCase{
90
		name:   'checkpoint 14'
91
		count:  14
92
		digest: 'c1acce072812dfc53682f0c4794b1cc4ae21fca882f4046e6d2c945f6d29dc24'
93
	},
94
	MonteTestCase{
95
		name:   'checkpoint 15'
96
		count:  15
97
		digest: 'a78313758117cf3319d90decbe3b46bf7ba20c079879f485b3290fbead662ac9'
98
	},
99
	MonteTestCase{
100
		name:   'checkpoint 16'
101
		count:  16
102
		digest: '8eca6994ac6093c1f7701bec60770293d754e9eb95372f9ab10ca58fe8864bd0'
103
	},
104
	MonteTestCase{
105
		name:   'checkpoint 17'
106
		count:  17
107
		digest: '05457ef20a508c205225b9a836f11964febd60d9dd31943c49b91578741dd7fc'
108
	},
109
	MonteTestCase{
110
		name:   'checkpoint 18'
111
		count:  18
112
		digest: '8ee3ca17f5ad34649a41b3cb6f4c60d24229d3c39b9afdce11725779296ce412'
113
	},
114
	MonteTestCase{
115
		name:   'checkpoint 19'
116
		count:  19
117
		digest: 'c9873b3341592ea56d0321a6653c350ebab65beb5e37f0a1554e9c07d93924a4'
118
	},
119
	MonteTestCase{
120
		name:   'checkpoint 20'
121
		count:  20
122
		digest: 'eba87758a57c5f9e3caa8da51b1acdbb2e69be17379f81715a134f5f09c4662f'
123
	},
124
	MonteTestCase{
125
		name:   'checkpoint 21'
126
		count:  21
127
		digest: '8f70a95573734147b50866372b11673d97a8cd0754013f7f6fb35f96b2911353'
128
	},
129
	MonteTestCase{
130
		name:   'checkpoint 22'
131
		count:  22
132
		digest: '19ec8b72cf00b934d5bde820566eadc516e0038cb54bfc59349c68b36d079a62'
133
	},
134
	MonteTestCase{
135
		name:   'checkpoint 23'
136
		count:  23
137
		digest: '22f7a748d30425980a9f83298b0b053ff8ac156f304c87aa5d10a01e2e05c397'
138
	},
139
	MonteTestCase{
140
		name:   'checkpoint 24'
141
		count:  24
142
		digest: '3429d8880a8862eb6973b245c7d62f2f8078b7defe8eb117e8c787b30df520bf'
143
	},
144
	MonteTestCase{
145
		name:   'checkpoint 25'
146
		count:  25
147
		digest: '373806e57129e849aa91a208a1f855f9bedfcd9f85b259a70fe481a35f0266ad'
148
	},
149
	MonteTestCase{
150
		name:   'checkpoint 26'
151
		count:  26
152
		digest: '6fa0be65b46bfc853be64470cc9cfe46e2001d1345b3eb4ce3e2f881a2c7a56d'
153
	},
154
	MonteTestCase{
155
		name:   'checkpoint 27'
156
		count:  27
157
		digest: 'b32b578b078f6e3c8c48ca07de123fc7db6b6abe8ec09f6b91263e0353d2c584'
158
	},
159
	MonteTestCase{
160
		name:   'checkpoint 28'
161
		count:  28
162
		digest: '8cb0edd50a485250433188a66758fc8167e07d665aeb1553f53e08169d1842b5'
163
	},
164
	MonteTestCase{
165
		name:   'checkpoint 29'
166
		count:  29
167
		digest: '92150694ff1674bf073856b6df9a6cd015087e9bd366e7387e8c19084e0cc598'
168
	},
169
	MonteTestCase{
170
		name:   'checkpoint 30'
171
		count:  30
172
		digest: '3ec487fd88c8e1321e9279f8d5a82026efee762d686968cd2d801ab7f6b3d912'
173
	},
174
	MonteTestCase{
175
		name:   'checkpoint 31'
176
		count:  31
177
		digest: '894c78e468398414affcf1e9ab8fb14426e1fae964379615a212b744e61b12e9'
178
	},
179
	MonteTestCase{
180
		name:   'checkpoint 32'
181
		count:  32
182
		digest: '7f6a9d2c8d476ad79c845f786da4bd4a8de9a4af05ad0cb12af1375077714cb4'
183
	},
184
	MonteTestCase{
185
		name:   'checkpoint 33'
186
		count:  33
187
		digest: '092ae9d7a22cff2d6f28cb2ed47c082ef279fc20e2246b638c6c0c941238a075'
188
	},
189
	MonteTestCase{
190
		name:   'checkpoint 34'
191
		count:  34
192
		digest: '553d007076a97c6c6566600693cff33fcba2d021c1fb690427823d65076e4249'
193
	},
194
	MonteTestCase{
195
		name:   'checkpoint 35'
196
		count:  35
197
		digest: '17a8b074390ff2aca2b9cb7bfa17310a293f522b6bfe9b6b6f1429d709f8be7b'
198
	},
199
	MonteTestCase{
200
		name:   'checkpoint 36'
201
		count:  36
202
		digest: '6d903e776f8edadc19c680fab311dfec6aebf7333dd924dadc21fd0b624ea856'
203
	},
204
	MonteTestCase{
205
		name:   'checkpoint 37'
206
		count:  37
207
		digest: '1a340486e0703cfddf87dbedb73c93b499ed6018ed8a50ae148ec9cb0be1a608'
208
	},
209
	MonteTestCase{
210
		name:   'checkpoint 38'
211
		count:  38
212
		digest: 'd694d39fadf623aaf0144abd69d5cb580d050fc4efe49f98f0d910cba5ca3531'
213
	},
214
	MonteTestCase{
215
		name:   'checkpoint 39'
216
		count:  39
217
		digest: '128d31156899fec03b0251cd739f2ee6b5041e9323a5aa31389f67ddf0c5a981'
218
	},
219
	MonteTestCase{
220
		name:   'checkpoint 40'
221
		count:  40
222
		digest: '1b3df866d64c5db4f55a4137e1d88da5b6e8a107a6fbe0022cde5e5c293a6a35'
223
	},
224
	MonteTestCase{
225
		name:   'checkpoint 41'
226
		count:  41
227
		digest: '31feabe0b78b6a9ab56929570e48afc949e8150e5e1dd11ad7a8c6b43f1db943'
228
	},
229
	MonteTestCase{
230
		name:   'checkpoint 42'
231
		count:  42
232
		digest: 'c7c08d91944704e9de672577acc1a0cc832cc109e26742a2812822c55dd432ff'
233
	},
234
	MonteTestCase{
235
		name:   'checkpoint 43'
236
		count:  43
237
		digest: '76b41e08876b881dcf0007746a1a1e275e512b38c0f949cadd0521cc4bb43a2a'
238
	},
239
	MonteTestCase{
240
		name:   'checkpoint 44'
241
		count:  44
242
		digest: 'eb015a3eee8b130cba1f120e41b83eb032124d366f8a40eedb0569124b013c34'
243
	},
244
	MonteTestCase{
245
		name:   'checkpoint 45'
246
		count:  45
247
		digest: '537d4b84f4c9ce3c30723db6ea2dfc3a8df1d2a4fb090c651dee04ebc019145a'
248
	},
249
	MonteTestCase{
250
		name:   'checkpoint 46'
251
		count:  46
252
		digest: '9000799092b166e5042f996f9dc4273daee4c96b80716e321ea17f50e3e74e18'
253
	},
254
	MonteTestCase{
255
		name:   'checkpoint 47'
256
		count:  47
257
		digest: '20c9c91bf7bfd79ed144cfbf5ea7226f5513ceed5944834c53326dad1a6a77a4'
258
	},
259
	MonteTestCase{
260
		name:   'checkpoint 48'
261
		count:  48
262
		digest: '5d3b9b8125e1c55ee5dd70548d38ebf9bc706536b6db98f85c48b3072d27cb2d'
263
	},
264
	MonteTestCase{
265
		name:   'checkpoint 49'
266
		count:  49
267
		digest: '53e469865c36cddde9a53b29a3ed6b8bcc5e38f2c0f6dd3b356f1354be481a62'
268
	},
269
	MonteTestCase{
270
		name:   'checkpoint 50'
271
		count:  50
272
		digest: '4df8eb71a1f46ab35861dfcaccb723d372dfe58af9c036e5079f70661a419c85'
273
	},
274
	MonteTestCase{
275
		name:   'checkpoint 51'
276
		count:  51
277
		digest: '503fd9149292f8e65f5a59db63dc8305e527f7e70e9cdc282b9d5075f23f92c9'
278
	},
279
	MonteTestCase{
280
		name:   'checkpoint 52'
281
		count:  52
282
		digest: '904c87a50b6383843b48cf9ce2a17c945b45c516fb0efa9eed88015fd10bb0dc'
283
	},
284
	MonteTestCase{
285
		name:   'checkpoint 53'
286
		count:  53
287
		digest: '888062fa782842258cadec93b1bd624bfe392500f5e6d6ef9e71b2963b73bb3a'
288
	},
289
	MonteTestCase{
290
		name:   'checkpoint 54'
291
		count:  54
292
		digest: '90c2a13524c81890be3f184cddb2feb44053de85335fb7933c6af8e3ee5d4ac4'
293
	},
294
	MonteTestCase{
295
		name:   'checkpoint 55'
296
		count:  55
297
		digest: '1efd7a3e6331c66b21c40416ce4f27d6aba8099359ad950b752e5491a156d9c8'
298
	},
299
	MonteTestCase{
300
		name:   'checkpoint 56'
301
		count:  56
302
		digest: '3f2a1f7bdda96ae3abe859e7767a0831ee69971b15d09d9385fac858643b0207'
303
	},
304
	MonteTestCase{
305
		name:   'checkpoint 57'
306
		count:  57
307
		digest: 'e021e5b9b812248cf5ea9563b84d753f5230cb1b442b04895871e3d8a7c6733e'
308
	},
309
	MonteTestCase{
310
		name:   'checkpoint 58'
311
		count:  58
312
		digest: 'a54312fe62b278b87bf440ff26703e280a13046071cfed2e23922e23ed7f8b17'
313
	},
314
	MonteTestCase{
315
		name:   'checkpoint 59'
316
		count:  59
317
		digest: '2b9906372367f7704556d4345602337c581917c3d91711466f4d27c8597c1628'
318
	},
319
	MonteTestCase{
320
		name:   'checkpoint 60'
321
		count:  60
322
		digest: 'd13e8e889226f72a1cfbb6d77a8cba9238900d148b4d0395e17415efc026a45f'
323
	},
324
	MonteTestCase{
325
		name:   'checkpoint 61'
326
		count:  61
327
		digest: '0977ad675ee02c46cc7523a4d617e5c8e69894efe0ad2d159b616eac65fdb68d'
328
	},
329
	MonteTestCase{
330
		name:   'checkpoint 62'
331
		count:  62
332
		digest: 'd34cd5081453b756bba9a455e0cabe97281fab2c6b5952a69171f8ed60bfb8d6'
333
	},
334
	MonteTestCase{
335
		name:   'checkpoint 63'
336
		count:  63
337
		digest: '720dc85f63580df35589802b1ee71cfa0522e92022382d875fd862bca3e64a19'
338
	},
339
	MonteTestCase{
340
		name:   'checkpoint 64'
341
		count:  64
342
		digest: '933991fa66485b36788447d2f0c8fd0f4d3d815f95a64fb197a1f66e7655ec3e'
343
	},
344
	MonteTestCase{
345
		name:   'checkpoint 65'
346
		count:  65
347
		digest: 'f80e89277c950a465d4b8a857efb1200dd7acf6b2dc4842bd6d3edeb1be232bd'
348
	},
349
	MonteTestCase{
350
		name:   'checkpoint 66'
351
		count:  66
352
		digest: 'c180da36f5e94ebc6a41747500728394cf2fbb06c003a14c9c977e20a6d98deb'
353
	},
354
	MonteTestCase{
355
		name:   'checkpoint 67'
356
		count:  67
357
		digest: '2d3e75cc7f37a6dee320001adc7e0d8811b87f532e126cbd99f13874cd149a80'
358
	},
359
	MonteTestCase{
360
		name:   'checkpoint 68'
361
		count:  68
362
		digest: '3edd7afe868f3876cfce54aeb22fb55475aa4df87015c1defed2fb41f13ee786'
363
	},
364
	MonteTestCase{
365
		name:   'checkpoint 69'
366
		count:  69
367
		digest: '7548c1cc9b96a65a918b37b4817825f32841bbc575ea8e6d12fd9d0c66ce8cd6'
368
	},
369
	MonteTestCase{
370
		name:   'checkpoint 70'
371
		count:  70
372
		digest: 'a0ea397e82b8c7639d3594199c517b8f42f5c3dc40d104b51a42b46eb891d1ac'
373
	},
374
	MonteTestCase{
375
		name:   'checkpoint 71'
376
		count:  71
377
		digest: '7fce4436abbf5da053cad07e8cf721c24442f926d4cc20cb8ac0a68b9d63b8b7'
378
	},
379
	MonteTestCase{
380
		name:   'checkpoint 72'
381
		count:  72
382
		digest: '48f93612a3689b8123fa234251e59a9784dc865dda43186e02a3fa10eac57732'
383
	},
384
	MonteTestCase{
385
		name:   'checkpoint 73'
386
		count:  73
387
		digest: 'f0c29f8e390435a2e233afa958ae208eb5d8eeb38e448df53a6d2e7a8e3a8266'
388
	},
389
	MonteTestCase{
390
		name:   'checkpoint 74'
391
		count:  74
392
		digest: 'fa43fb8ffa7d953a4da11627e11c51ba4f1cf0a62464b0e9d34cb9f1ca4a2339'
393
	},
394
	MonteTestCase{
395
		name:   'checkpoint 75'
396
		count:  75
397
		digest: '18a1c86b7c266b55b253f509e6457df10b48e6705bc0c78b638f9ee4eb937633'
398
	},
399
	MonteTestCase{
400
		name:   'checkpoint 76'
401
		count:  76
402
		digest: 'f5cd2b6b4a6bd0070942f81d012bdc85cf55c095075578a0404f2273908c20d2'
403
	},
404
	MonteTestCase{
405
		name:   'checkpoint 77'
406
		count:  77
407
		digest: 'b7825bba2320209852668a29f8b0eca4a3a0ad77e0e33cd2a7185761da5061b1'
408
	},
409
	MonteTestCase{
410
		name:   'checkpoint 78'
411
		count:  78
412
		digest: 'e7688883bbc0dbc767dd8d46ce58a0463f29d0781dfe1bde55a83ba9ca54b1b5'
413
	},
414
	MonteTestCase{
415
		name:   'checkpoint 79'
416
		count:  79
417
		digest: '54ba60a63f82f501435dd8a51d772404e5cfbddf226bcbc47836cf717fadb4e8'
418
	},
419
	MonteTestCase{
420
		name:   'checkpoint 80'
421
		count:  80
422
		digest: 'c533fff054d8dabfd37c4e860761d215954c7bf8f37ab6d6ef7ff9ec4713ea65'
423
	},
424
	MonteTestCase{
425
		name:   'checkpoint 81'
426
		count:  81
427
		digest: '71f36f26cb92c129f7450d76849a7f2f4bb0554e9ade0a9d5182f435541ca1fd'
428
	},
429
	MonteTestCase{
430
		name:   'checkpoint 82'
431
		count:  82
432
		digest: 'c39f5bfe6c241d0f64c13b05e5fb6725ffda3789ef9946c8af1dfcb424ba3d75'
433
	},
434
	MonteTestCase{
435
		name:   'checkpoint 83'
436
		count:  83
437
		digest: '27401de7cc0d86a8f07e276a9fbf4fe5cdf7b3d73802a5c7edd27b686f6f7039'
438
	},
439
	MonteTestCase{
440
		name:   'checkpoint 84'
441
		count:  84
442
		digest: 'bc56733b8682bab456b8c0819e1c9d6d3bb864b2427ec2a2003a871c44dc0246'
443
	},
444
	MonteTestCase{
445
		name:   'checkpoint 85'
446
		count:  85
447
		digest: 'e3843383a52a8c3d6315d255d1708467f5de61a5372308978b295460220d99aa'
448
	},
449
	MonteTestCase{
450
		name:   'checkpoint 86'
451
		count:  86
452
		digest: 'e03de5004325a1dc96eb709c849bb6ecadc5db9c6152aba480ca10c8fe2573e1'
453
	},
454
	MonteTestCase{
455
		name:   'checkpoint 87'
456
		count:  87
457
		digest: 'df09f2a9bceab29b5c149ec7db23b1c8b1cc849ff2612c4ad9d66e98cc1f1faa'
458
	},
459
	MonteTestCase{
460
		name:   'checkpoint 88'
461
		count:  88
462
		digest: '123426906e20a02fd517c4cee4e5f5273f894c56ae456ca466c7a0a2d1b0676c'
463
	},
464
	MonteTestCase{
465
		name:   'checkpoint 89'
466
		count:  89
467
		digest: '14a9e07e6280a8c7cf824cd1896ad974c310859eb1bb4bef59b715b25cfaaa30'
468
	},
469
	MonteTestCase{
470
		name:   'checkpoint 90'
471
		count:  90
472
		digest: 'ae7febea114679a52c9f7351aa0a207dc40ba8c8394585cc5a0b9bfc7f67d76a'
473
	},
474
	MonteTestCase{
475
		name:   'checkpoint 91'
476
		count:  91
477
		digest: '4966b9ba04ef0590cf0f335798c9b3e15ad32d5ebd2719a0c914c8faeed65326'
478
	},
479
	MonteTestCase{
480
		name:   'checkpoint 92'
481
		count:  92
482
		digest: '8ea5a43cdaf50149c3aef14cb2ff2db42279ca36267355a0e023f3ec2ea13375'
483
	},
484
	MonteTestCase{
485
		name:   'checkpoint 93'
486
		count:  93
487
		digest: '14ca6c157502aa86c4900086c373c5d2b8789e5cc9863a384938e498fdaa52e0'
488
	},
489
	MonteTestCase{
490
		name:   'checkpoint 94'
491
		count:  94
492
		digest: '8471a7d5a2cdc61a8bc885c1b0b79491a54d6610ab19a3cffbe0c83479628cb3'
493
	},
494
	MonteTestCase{
495
		name:   'checkpoint 95'
496
		count:  95
497
		digest: '51749feaa3f2ea9c89b38d77814ea2796a3265e4f6ee7a2c08a1804c6fbfe042'
498
	},
499
	MonteTestCase{
500
		name:   'checkpoint 96'
501
		count:  96
502
		digest: '8163861f1ca72bbc19cb8ce59bcee8a3d6d28c8ce17e33cea67f04277a68360a'
503
	},
504
	MonteTestCase{
505
		name:   'checkpoint 97'
506
		count:  97
507
		digest: '6c00f3fae370e7d14504c48cd7199064b3b4828163905af7b7a0593d2b5d06fd'
508
	},
509
	MonteTestCase{
510
		name:   'checkpoint 98'
511
		count:  98
512
		digest: '5fe007f269a854e2394874f1a95ef7ef3844cf06248deda3af561cfacaed1e35'
513
	},
514
	MonteTestCase{
515
		name:   'checkpoint 99'
516
		count:  99
517
		digest: '1822ede971ca1407fbcb1dff487ea9d93d71d756cdf32945703de673f4b3d816'
518
	},
519
]
520

521
fn test_monte_messages() {
522
	mut msg_seed := hex.decode(seed)!
523

524
	for c in monte_cases {
525
		mut md0 := msg_seed.clone()
526
		mut md1 := msg_seed.clone()
527
		mut md2 := msg_seed.clone()
528
		mut md3 := msg_seed.clone()
529

530
		mut mi := []u8{len: 0, cap: 64}
531

532
		for _ in 0 .. 1000 {
533
			mi.clear()
534
			mi << md0
535
			mi << md1
536
			mi << md2
537

538
			md3 = sha512.sum512_256(mi)
539

540
			md0 = md1.clone()
541
			md1 = md2.clone()
542
			md2 = md3.clone()
543
		}
544

545
		msg_seed = md3.clone()
546

547
		expected_result := hex.decode(c.digest)!
548

549
		assert md3 == expected_result, 'failed ${c.name}'
550
	}
551
}
552

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.