v / vlib / crypto / sha512 / sha384_shavs_monte_test.v
551 lines · 539 sloc · 17.45 KB · 86fe9456a5850026048933de1ba82185168d5a43
Raw
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 SHA384, the test vectors come from:
6// SHA384Monte.rsp
7import crypto.sha512
8import encoding.hex
9
10const seed = 'edff07255c71b54a9beae52cdfa083569a08be89949cbba73ddc8acf429359ca5e5be7a673633ca0d9709848f522a9df'
11
12struct MonteTestCase {
13 name string
14 count int
15 digest string
16}
17
18const monte_cases = [
19 MonteTestCase{
20 name: 'checkpoint 0'
21 count: 0
22 digest: 'e81b86c49a38feddfd185f71ca7da6732a053ed4a2640d52d27f53f9f76422650b0e93645301ac99f8295d6f820f1035'
23 },
24 MonteTestCase{
25 name: 'checkpoint 1'
26 count: 1
27 digest: '1d6bd21713bffd50946a10c39a7742d740e8f271f0c8f643d4c95375094fd9bf29d89ee61a76053f22e44a4b058a64ed'
28 },
29 MonteTestCase{
30 name: 'checkpoint 2'
31 count: 2
32 digest: '425167b66ae965bd7d68515b54ebfa16f33d2bdb2147a4eac515a75224cd19cea564d692017d2a1c41c1a3f68bb5a209'
33 },
34 MonteTestCase{
35 name: 'checkpoint 3'
36 count: 3
37 digest: '9e7477ffd4baad1fcca035f4687b35ed47a57832fb27d131eb8018fcb41edf4d5e25874466d2e2d61ae3accdfc7aa364'
38 },
39 MonteTestCase{
40 name: 'checkpoint 4'
41 count: 4
42 digest: 'd7b4d4e779ca70c8d065630db1f9128ee43b4bde08a81bce13d48659b6ef47b6cfc802af6d8756f6cd43c709bb445bab'
43 },
44 MonteTestCase{
45 name: 'checkpoint 5'
46 count: 5
47 digest: 'a038eaa91772d458a7339612f6a9214e6550f78d5870d91fa7a3dc1c2321e511759c159a371475dda7ad1fd7f51ac82b'
48 },
49 MonteTestCase{
50 name: 'checkpoint 6'
51 count: 6
52 digest: '8552b4ea2da9f855fcc7230ac88ecb1c3cb4841cc28e0495bf1ab97d100d4e4c60a1c51949d26723415f560da2951bb0'
53 },
54 MonteTestCase{
55 name: 'checkpoint 7'
56 count: 7
57 digest: '668338b2e661d9e25b799d7329e55629b62416ee4d42d2e55245ffe7092e7ae4a3da6903944d532c2a88e4632f9a4b36'
58 },
59 MonteTestCase{
60 name: 'checkpoint 8'
61 count: 8
62 digest: 'c40cd19cb770b1fe81135fcb9223ffb9ef50340d13660658ba60656a88f4ea08ee3b572680e2b4abbaf4392486ea589a'
63 },
64 MonteTestCase{
65 name: 'checkpoint 9'
66 count: 9
67 digest: '540c154e82b57914abc0452990abf988e46a2f65b40f5e9ef80a38c7431293d5efa31c7c83df5345b079ad4e31b2c8b2'
68 },
69 MonteTestCase{
70 name: 'checkpoint 10'
71 count: 10
72 digest: 'e112f9359983e7df9b266f53ec950ed2b951b6d832c8fc1ffed22b4be3eae3d015e0771e96d344672000d4959d2829ab'
73 },
74 MonteTestCase{
75 name: 'checkpoint 11'
76 count: 11
77 digest: '186e69c28033e11b152542c86a94f59a25ec4edb7ab5b735faff16bdbacc682b2ae79b5f5a68ece9fee5ea4530b8a8f4'
78 },
79 MonteTestCase{
80 name: 'checkpoint 12'
81 count: 12
82 digest: 'a37c790e641f911ef2929bab0ccbb890627c7e38e1a2fbbd71cd4215de919763c2819c35a0e93984b7d85d0e8858573f'
83 },
84 MonteTestCase{
85 name: 'checkpoint 13'
86 count: 13
87 digest: 'f1b4bdcfe0cce284ca26e0b7e01f26de21bf4a7a409ee99fee1019cc8d23e775bc134ec7987a6575fa64160b5c7f849e'
88 },
89 MonteTestCase{
90 name: 'checkpoint 14'
91 count: 14
92 digest: '45aabfb784a29d6be30104ae9f3c5daa58e48a9c94f61fed94dccd2ec06b527ed564643573d588ce10d3847361a57961'
93 },
94 MonteTestCase{
95 name: 'checkpoint 15'
96 count: 15
97 digest: 'be3a49139a48dafba418bb9e0e8e2bd195e0d239eec77c43d1f0cee844b65f65c30cddfc05b644f9a792459695883a2e'
98 },
99 MonteTestCase{
100 name: 'checkpoint 16'
101 count: 16
102 digest: '3b263277a0d11de4cb4616591d4623e0821da4f111dae33938329cb8cc47f46742c70c09463edb9ff4a0171c4604b243'
103 },
104 MonteTestCase{
105 name: 'checkpoint 17'
106 count: 17
107 digest: '2be323079381bd13a02cca824c2f3cd18cbc89b0c3319afbf33c6f06f2abf2fa3af35ea9752ffe153d1775a95e7accbd'
108 },
109 MonteTestCase{
110 name: 'checkpoint 18'
111 count: 18
112 digest: '14c8c3ea3f5aea2e74a2f138863accf1b5f563d96194c0dcf08ca816e1ac9156c3f5d15aa5701d93c188c2c1f7237518'
113 },
114 MonteTestCase{
115 name: 'checkpoint 19'
116 count: 19
117 digest: 'b9158943803c47678fefafa91c98966aa3dc1fd96f4e86cfdde7ca879dbf9fa9f54b1988a53376f7005df7fd87b1396b'
118 },
119 MonteTestCase{
120 name: 'checkpoint 20'
121 count: 20
122 digest: 'f4395f88c4dc24b6edca5868fcebd24991ced2e3826c04ec00e4630d7e1f70ee56124a90657a795f446f7db94d8b439e'
123 },
124 MonteTestCase{
125 name: 'checkpoint 21'
126 count: 21
127 digest: 'bb56b4ed4683fce0d6d412ef84b7985ccc5fe30306679a994c8221c1212ff7f1492512095b7ddd250411008ce9d54020'
128 },
129 MonteTestCase{
130 name: 'checkpoint 22'
131 count: 22
132 digest: 'cacaeb081a62a4e384e0082f8b994dcd721f38b3c3e4b5836ddcaaab74bcf2700fdc8b6faf3f4df1ec175a0628728a4c'
133 },
134 MonteTestCase{
135 name: 'checkpoint 23'
136 count: 23
137 digest: '231796f44eba3c8c6ad064b0e350093fcae026c3c03d669c28e5f36befa5f35489bf595a0312c38b9b73b7bb4dad5b96'
138 },
139 MonteTestCase{
140 name: 'checkpoint 24'
141 count: 24
142 digest: 'd54559e7eb20534025f8f265bdbdab0e7dd9e2459305288d3ca84190b6d2c6e8ae2cd6f3e51ccb54551d94e9e40b31ac'
143 },
144 MonteTestCase{
145 name: 'checkpoint 25'
146 count: 25
147 digest: 'd6231b809b70ed19478cdf7e05534e92ea01e74e970fe17e92ec9a67b1b7977c4c485cfa74787224fe326b1b8d1ede87'
148 },
149 MonteTestCase{
150 name: 'checkpoint 26'
151 count: 26
152 digest: '8ca1d462cc1b16b734c0e4f1a6b7f7d9d0ba9ce8074addc7755243b05fe269afab6618f07fe73089d9379bcbdce6c728'
153 },
154 MonteTestCase{
155 name: 'checkpoint 27'
156 count: 27
157 digest: '60fa725bbf21ee56545ab24e6f26ec5ec749c4971bf761923c23415cbcb0c02e6a474deb50144abad2b0f16ddbe850a9'
158 },
159 MonteTestCase{
160 name: 'checkpoint 28'
161 count: 28
162 digest: '8b60fe287f5bc133ff842a246bf161a58b4b8ead5be073c702552d664653e384e28e70d28624aa1da951ed33dcdfc7fd'
163 },
164 MonteTestCase{
165 name: 'checkpoint 29'
166 count: 29
167 digest: 'd18a080af3ae7e6318dc69298bd7b13644b7ab00adac18b446c1e9a9366e68dade87687b9129aefae9a98b531309f1c7'
168 },
169 MonteTestCase{
170 name: 'checkpoint 30'
171 count: 30
172 digest: 'faad832a7ce865cf3183e51e07f08aad6570795f8d0274fae52fc5cb637ce4b7cdb8f8092e2ac4a7c96beb70cb288b69'
173 },
174 MonteTestCase{
175 name: 'checkpoint 31'
176 count: 31
177 digest: 'b7bea61748495351409fcf1bd45a94af34e7dd899933ed06d5759fe728f6933781c21f1986b99906c6910d976a0d9c4b'
178 },
179 MonteTestCase{
180 name: 'checkpoint 32'
181 count: 32
182 digest: 'b35027199cf6467302a88e5d0106d01953b41dfa172234b3e11d3ccad33bda9a836e44f43ae94451e2bea28f0dca7989'
183 },
184 MonteTestCase{
185 name: 'checkpoint 33'
186 count: 33
187 digest: '8571acd0d5fdd20909e9cd74e125cb9cd65a2e74056eab3f85f6f13e31a5fc1580aa588997d31a0a3ba1a16dea5528d3'
188 },
189 MonteTestCase{
190 name: 'checkpoint 34'
191 count: 34
192 digest: '3dcf49cb8d79d4ca3f6e06e8a58bb92a7a42d7915b9e710a29d37ece6c1c32eb89a897e9935354db3cbe384a1149964a'
193 },
194 MonteTestCase{
195 name: 'checkpoint 35'
196 count: 35
197 digest: '7b2258c5fbf26780f55054b4aa462a607eecbf7382af941efd75b9b4cadd5b97936a762b9c03e133d7cfb65de501e6df'
198 },
199 MonteTestCase{
200 name: 'checkpoint 36'
201 count: 36
202 digest: 'c54cfebd2381621fed5cf6b82b3dea25965ec99365ce415b184ded71b949eb8009d91c85c02b30b7465fdcf18be885ca'
203 },
204 MonteTestCase{
205 name: 'checkpoint 37'
206 count: 37
207 digest: '39bed6de0e885dfd51569f3c5dc967f7f551065e87b6e7108d15ef5ea407419f936f5ae2288aeecf98777249f384fdfa'
208 },
209 MonteTestCase{
210 name: 'checkpoint 38'
211 count: 38
212 digest: 'b1c341b1428e5df6f4bcec533f1b5ca57e02102f5647b82be0986e523fad24b7f27aa29336a3f333817e8a5336a4a3b4'
213 },
214 MonteTestCase{
215 name: 'checkpoint 39'
216 count: 39
217 digest: '2e1e67546b9424a2f0bd8931082f9fb8951b9fe57a2b61683a5e197017ebcd96592dc47a75d2ae4ab8f436edd5e5bb4e'
218 },
219 MonteTestCase{
220 name: 'checkpoint 40'
221 count: 40
222 digest: '6c84a39bc94af5960715818bf9b4694548dd1f0af8f6344d56b0dc7f86b181d5249172c82572ec8748ff35b6c0a2abd5'
223 },
224 MonteTestCase{
225 name: 'checkpoint 41'
226 count: 41
227 digest: '576705bec035d07e31ebb091f180cd68c3873ea306708c5259f50491463c68d912080ba9f11bcc983a4b849ca19df008'
228 },
229 MonteTestCase{
230 name: 'checkpoint 42'
231 count: 42
232 digest: 'd45c7e9080b6223a2185c490363764f9fb0634f3865d57a15bea438fb243e98fccad4176bf24c4cb7247dd2c5728b761'
233 },
234 MonteTestCase{
235 name: 'checkpoint 43'
236 count: 43
237 digest: 'b3021cedd2ba38b69348867729cfe2ab172e4f1643eb4971cde2db002413458a566ea884d651a9c010b1a6b869168497'
238 },
239 MonteTestCase{
240 name: 'checkpoint 44'
241 count: 44
242 digest: '1cb9c05e35029fe6b114c85a457091b7d9aaf7c95f32447f3f20cd034bc54f87ae85c4013d18fe2a94de8ecf9c6b9f05'
243 },
244 MonteTestCase{
245 name: 'checkpoint 45'
246 count: 45
247 digest: '1e8f037fb920b836b8f36a1ed4875cf7d61390f68d4843e420b2c1ca702a104524c1187c8eec7bb4b174a252e1ae1462'
248 },
249 MonteTestCase{
250 name: 'checkpoint 46'
251 count: 46
252 digest: '07c790c3d4948347ad5fad9992d8a0f6603a2133d138f1ff5cbbdc04c39277fb67d45b2e2c8e6c51fdaa6c5883e3a69c'
253 },
254 MonteTestCase{
255 name: 'checkpoint 47'
256 count: 47
257 digest: '98ef381d9b6b4e26ebf2bc293743e1e07943a3663b17f1be52d12ef8d19621263efb8525506ef6b95f746567a43577c6'
258 },
259 MonteTestCase{
260 name: 'checkpoint 48'
261 count: 48
262 digest: '8beefea2f858f8902928dae6060b10cf6d4a3cd1f91cf1ee5ddef0ee5fc25a8269367c114c1c5c5ab5287c48edc59274'
263 },
264 MonteTestCase{
265 name: 'checkpoint 49'
266 count: 49
267 digest: '03a6509ad6eb7f009931e596f3dab586de3bd6549afab4f218eba4fe47daf37c6faa360afdd931c5a95544f1a028195b'
268 },
269 MonteTestCase{
270 name: 'checkpoint 50'
271 count: 50
272 digest: 'bdf7e8d538e7ef418c808bf2dec1242b716326f83bf0a53db81f4d63aba37a2412f6b2bf00957ad6faf8404e4e2067a8'
273 },
274 MonteTestCase{
275 name: 'checkpoint 51'
276 count: 51
277 digest: '71ad43312ed6e403a5e174480fb14b3c2a3a60bba36611e1c99adf8013d243fe945b947b362b6dc51a3dd96235472f5e'
278 },
279 MonteTestCase{
280 name: 'checkpoint 52'
281 count: 52
282 digest: 'bec45a229217e5fe28d6d1675dc7440ccb5616c0f02eb5d4c814921fc82fdddb04592ce7af192fee6c61b1a08f6ab6aa'
283 },
284 MonteTestCase{
285 name: 'checkpoint 53'
286 count: 53
287 digest: '5d6bc2d2cd0d8f5e41656f73a473bef1eff212fe98b184386cdecade24c5c5e7b92cf76ea16f582b9951634881f85585'
288 },
289 MonteTestCase{
290 name: 'checkpoint 54'
291 count: 54
292 digest: '96e3568d30a1f7810404f3be8d2d26e5606da6c3fc064d0ef62298ca327476d587a1e3ef0d6554f4ad529053b7a651fd'
293 },
294 MonteTestCase{
295 name: 'checkpoint 55'
296 count: 55
297 digest: 'e4df3b7028f5e68753c1f21a556d8468a5d80fb048f6b92d405e519ea9ce44c6c95fb362119c553f5921dc9616dd3937'
298 },
299 MonteTestCase{
300 name: 'checkpoint 56'
301 count: 56
302 digest: '7881e36eef708df4d9c06e37bfa7af5ce7d41d31a2e4332d23922a518de3e2e6fd4b9f27ee64379afae7ca2570d24748'
303 },
304 MonteTestCase{
305 name: 'checkpoint 57'
306 count: 57
307 digest: 'aa12548b63d3a58f6914744111292cfc1f1358f717f1b19fab1a4ecac6292f1ff4b4c67b8a260b048f00ddc83b42453a'
308 },
309 MonteTestCase{
310 name: 'checkpoint 58'
311 count: 58
312 digest: 'b421b6941b5d7748765a4090c224dbbd98e85dcff9a65a77db0c2a83b92f4cad961b5b8ff76b5513d4a7af45ec4d4550'
313 },
314 MonteTestCase{
315 name: 'checkpoint 59'
316 count: 59
317 digest: '14e1b1733b16899c4046a604f8e1e777d55649c5357d7d9e3d7a1c395b6275aecf733a598de1d0bfd7eeaa9ecbd7d1e7'
318 },
319 MonteTestCase{
320 name: 'checkpoint 60'
321 count: 60
322 digest: 'bd05a1f9fa5b77371005a8073f0f3bcc4cb4e08fde3335dd3688921cf9cb5e97cf1b3052ff74bed8a359d170d2bea48f'
323 },
324 MonteTestCase{
325 name: 'checkpoint 61'
326 count: 61
327 digest: 'a319d9b3eeee6da494940ffb08903bcd588b18733a64ed435eadc5d9add6ab4f0c35fc050958bed81303409f388a065e'
328 },
329 MonteTestCase{
330 name: 'checkpoint 62'
331 count: 62
332 digest: '6f19824ec874b55e88fe4b1387433dab85415148870bf4a0612aa9c1cbcd9627925616fcdb66d68760c50fb308f628b0'
333 },
334 MonteTestCase{
335 name: 'checkpoint 63'
336 count: 63
337 digest: 'bacb435a1ff538d0ba3e3d0ab04b5e8868bc1f84e964409229d7eada4b846b813c0e30d8e962786aa83aac2dacf02d19'
338 },
339 MonteTestCase{
340 name: 'checkpoint 64'
341 count: 64
342 digest: 'e8f013470eafd5af84f63d51d51af2ca884789d03d79f8c3089810254b95a6f54fb86c08202cae94681ad702ea29451a'
343 },
344 MonteTestCase{
345 name: 'checkpoint 65'
346 count: 65
347 digest: '374b07621c018cc3935374c2f2f098e661ca0656181f67f55fb80ac36e23da379c4f6c8a3683c2621f874afa1241b918'
348 },
349 MonteTestCase{
350 name: 'checkpoint 66'
351 count: 66
352 digest: '5878f1ebcbe60aa62a7b149bd181167e5898d08a3627a08c589436f007bfb82c040b26ea9944c6f0c9c4079b9b0e1ecf'
353 },
354 MonteTestCase{
355 name: 'checkpoint 67'
356 count: 67
357 digest: '05961b57507c99d0cb7dc24ae34eddde94ac484129de621edac5b001ac5c0b974d09d24f75504f3be1a3cd635c44bf71'
358 },
359 MonteTestCase{
360 name: 'checkpoint 68'
361 count: 68
362 digest: 'd961eb883eecbc083533fa5128695c8d28281fbac23308dd2f504eb079d2d311b973f1a52b45aa6275550e14477a8876'
363 },
364 MonteTestCase{
365 name: 'checkpoint 69'
366 count: 69
367 digest: 'a4557f990f4ccce585ba33453090f66af576f0a501d26667031f48f19538b820b84f870579efb554e7550f9f53fea5ea'
368 },
369 MonteTestCase{
370 name: 'checkpoint 70'
371 count: 70
372 digest: '82194c49f24084249567f0e8963c5f72a23bc20a8f522a6108f12abf95b7437ad93673860a953264838a09bb3968d0a9'
373 },
374 MonteTestCase{
375 name: 'checkpoint 71'
376 count: 71
377 digest: '371dc5573b145f2136eb854591ece253efebf8732d3898bea063fdc3889d07953ee646e533b214f8c2dd66f1355b03cf'
378 },
379 MonteTestCase{
380 name: 'checkpoint 72'
381 count: 72
382 digest: 'cfc4dcecc6103027232029dd9a19850a6f79b9004be7d70054d0af11c692affa44c537f7cd749f2b6317cafe1fa52fe4'
383 },
384 MonteTestCase{
385 name: 'checkpoint 73'
386 count: 73
387 digest: '9920b835400795bd3ed8ae0bc12417d58be8c5ffd6eed151ed738c3031e624c74fb85488953ac81c75f395cab74f1679'
388 },
389 MonteTestCase{
390 name: 'checkpoint 74'
391 count: 74
392 digest: '4a1b040fa38b5cee63f5d308b55502d2a017b349ead5172c288289f42ba9874d0d11c9ac43255580c428a99067495782'
393 },
394 MonteTestCase{
395 name: 'checkpoint 75'
396 count: 75
397 digest: '93c1cb94d0689301728165299057edd78ef48a6dc7654931ae2bf7ea5bc733f3b724f4c3081bc93ed61e7d739c38e137'
398 },
399 MonteTestCase{
400 name: 'checkpoint 76'
401 count: 76
402 digest: '8f2e6c868b224b3cd5ac80669da0ba1d7e799e85a124c9e81c6865ebab1c0481e4ed4957a8989902ec565169ac53b7b4'
403 },
404 MonteTestCase{
405 name: 'checkpoint 77'
406 count: 77
407 digest: 'df045c9302fba73f9f27ceb0fb70e6ca3897f410e81a2b8392489e40aa17f15ac59cf8d6893ab10bacd8b59704eab22b'
408 },
409 MonteTestCase{
410 name: 'checkpoint 78'
411 count: 78
412 digest: '8ab095f49aa7ebfcb8b1410f42c38fb1755a0560e3638b8b82c7a852e8bce8f4b780015e051dda0d2cbd6d6cb08e30c0'
413 },
414 MonteTestCase{
415 name: 'checkpoint 79'
416 count: 79
417 digest: 'd77fdff2f768188efa63a7e29d73b8ade14c1aeb12e77866a57ea12c81bf0b3e1421d1af57fccf91b2098ba02ffb4118'
418 },
419 MonteTestCase{
420 name: 'checkpoint 80'
421 count: 80
422 digest: 'fac5ee7450b3fd1ae2152f5d020680137f553a2c210c57290d058f330d11407593d74c9d3d9ac88bf4af44e023345168'
423 },
424 MonteTestCase{
425 name: 'checkpoint 81'
426 count: 81
427 digest: '39d0ee95db114925ed7ff1577a22eb3dedb8658ce31504bd0f9f8a8f11f90825587203f26c432d216918156ca931fc82'
428 },
429 MonteTestCase{
430 name: 'checkpoint 82'
431 count: 82
432 digest: '17d22080e8a9f589a80a5ca8291b0479c41351008dffff79ff522779c35ba0b09acc2dedde936b07e260451d35ce86a9'
433 },
434 MonteTestCase{
435 name: 'checkpoint 83'
436 count: 83
437 digest: '9d75befac42e6d4d544e70477f7581264b5f8dda988da0dc40ef32f85c31b709284aef5f4f0246d20a855eee9175948e'
438 },
439 MonteTestCase{
440 name: 'checkpoint 84'
441 count: 84
442 digest: '3985f0cbca4c25f624850580516184e3d75996d77f138839c7570b4539b90fae8e751d1cea642816abd7f9ebf9d86c8f'
443 },
444 MonteTestCase{
445 name: 'checkpoint 85'
446 count: 85
447 digest: '93cfd14ade34e50deeee23aa75a63a017b6974e23051117e7e6b56b4ddb88f917a5d88d3af2af27da8e63fe130502f8e'
448 },
449 MonteTestCase{
450 name: 'checkpoint 86'
451 count: 86
452 digest: '7ae513480491a9500fa9afb8f64b8914ffdbeece3b3103048e91f6510b64cdccc8273257e275e5b34ec14c4c4aff4405'
453 },
454 MonteTestCase{
455 name: 'checkpoint 87'
456 count: 87
457 digest: '2585bab1cd98d4b51a1475fbfbe3bca43da2a7be842c5667c98d3b62a9f05918108be94198d96c67388f83c2abebe498'
458 },
459 MonteTestCase{
460 name: 'checkpoint 88'
461 count: 88
462 digest: '32f67419616e11fea79e3baeee4524c58d09f0cfb42049cea70f9a4a74e0096df841a0cf5177e402dd5803f4b51c602c'
463 },
464 MonteTestCase{
465 name: 'checkpoint 89'
466 count: 89
467 digest: '9f4486d93c599e68e7463d07d5cc9d589ab3a7c3d4d3c2b2d1f81f65b5c85068331f4142215f337c3621d096eb36aa91'
468 },
469 MonteTestCase{
470 name: 'checkpoint 90'
471 count: 90
472 digest: 'e3399ed2ac93c6a4a6c88c11bd89655aac3e573493483c81631fd67dba3bb237d46f9e8ddab3a9fd78236296d00dfd79'
473 },
474 MonteTestCase{
475 name: 'checkpoint 91'
476 count: 91
477 digest: 'bd9d1de114afa5ffacfbeb488d4846d012aa6ef66ce09725ae7b15e680d719fc2447f308eeb8247ae8e91e34b5a21ea2'
478 },
479 MonteTestCase{
480 name: 'checkpoint 92'
481 count: 92
482 digest: 'e1c3511ed2ed26f770bf5212c7ec245ab2ba49e1c09edae2abad6a3ee41c9e25445f5e5317cf7c9c3c3f702ecd6778a5'
483 },
484 MonteTestCase{
485 name: 'checkpoint 93'
486 count: 93
487 digest: 'c363234d1a6272d081f351cd68ac90abea09d3eae3a4d64fae7fab251a252591cb34dc63fb10abcbc5460129464c868b'
488 },
489 MonteTestCase{
490 name: 'checkpoint 94'
491 count: 94
492 digest: '6e5f1531eb282a2911a64b72b043cfe43b527d4d557abb9a31a9a632cdf5b5e055317ecb72a517a025eb4286d6f00433'
493 },
494 MonteTestCase{
495 name: 'checkpoint 95'
496 count: 95
497 digest: '19c85253b3c703fee80a70bb2ac2ef836bf8e14464d2a17f35bd5e4f2b0b3a059a27891410950a9ce07197f5b306ae3f'
498 },
499 MonteTestCase{
500 name: 'checkpoint 96'
501 count: 96
502 digest: 'eec713a44cb778811795609610f2f9bfc9bba479e415746efe0dc530b6de66d73cb85b8698a8c0c2ef9344a2043b7a31'
503 },
504 MonteTestCase{
505 name: 'checkpoint 97'
506 count: 97
507 digest: 'b799577aab5e8898326ed88eb96de38a27e76280ce44c3f16e70a1f96543ee7020bc29913ea0b9a9b9d92ae201143e0b'
508 },
509 MonteTestCase{
510 name: 'checkpoint 98'
511 count: 98
512 digest: 'e4dcabf1e22134076a21ea7cf9be6e03b099be40efc2b3080b9ec358cb021623ad27d33129bc68fce3eaec6b25aa2329'
513 },
514 MonteTestCase{
515 name: 'checkpoint 99'
516 count: 99
517 digest: 'ccde4359f23e64579c5c0380df837ee950928aa82937a2d2ed33d216e707c46d847efa5ca52dcbda551145e164fbd594'
518 },
519]
520
521fn 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.sum384(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