v
Зеркало из https://github.com/vlang/v
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, the test vectors come from:
6// SHA512Monte.rsp
7import crypto.sha512
8import encoding.hex
9
10const seed = '5c337de5caf35d18ed90b5cddfce001ca1b8ee8602f367e7c24ccca6f893802fb1aca7a3dae32dcd60800a59959bc540d63237876b799229ae71a2526fbc52cd'
11
12struct MonteTestCase {
13name string
14count int
15digest string
16}
17
18const monte_cases = [
19MonteTestCase{
20name: 'checkpoint 0'
21count: 0
22digest: 'ada69add0071b794463c8806a177326735fa624b68ab7bcab2388b9276c036e4eaaff87333e83c81c0bca0359d4aeebcbcfd314c0630e0c2af68c1fb19cc470e'
23},
24MonteTestCase{
25name: 'checkpoint 1'
26count: 1
27digest: 'ef219b37c24ae507a2b2b26d1add51b31fb5327eb8c3b19b882fe38049433dbeccd63b3d5b99ba2398920bcefb8aca98cd28a1ee5d2aaf139ce58a15d71b06b4'
28},
29MonteTestCase{
30name: 'checkpoint 2'
31count: 2
32digest: 'c3d5087a62db0e5c6f5755c417f69037308cbce0e54519ea5be8171496cc6d18023ba15768153cfd74c7e7dc103227e9eed4b0f82233362b2a7b1a2cbcda9daf'
33},
34MonteTestCase{
35name: 'checkpoint 3'
36count: 3
37digest: 'bb3a58f71148116e377505461d65d6c89906481fedfbcfe481b7aa8ceb977d252b3fe21bfff6e7fbf7575ceecf5936bd635e1cf52698c36ef6908ddbd5b6ae05'
38},
39MonteTestCase{
40name: 'checkpoint 4'
41count: 4
42digest: 'b68f0cd2d63566b3934a50666dec6d62ca1db98e49d7733084c1f86d91a8a08c756fa7ece815e20930dd7cb66351bad8c087c2f94e8757cb98e7f4b86b21a8a8'
43},
44MonteTestCase{
45name: 'checkpoint 5'
46count: 5
47digest: '937d7856a82a84c163c79417d0540c47daaf9ffe662c843737dbbcbe5f865bf6f47a9d2bd10129a4f498073094653c324a2519a1c71ac1279b1623ff7d24647a'
48},
49MonteTestCase{
50name: 'checkpoint 6'
51count: 6
52digest: 'f8fbc058c2b9f84131c9decfa543a35ade41581f670398efd61b3abfced9c1cfcb5324f2370487f9c59a65bc668ea596c8d22ce8a33014dfad28357fa7d05f04'
53},
54MonteTestCase{
55name: 'checkpoint 7'
56count: 7
57digest: '4ab0c9484ff5c30fa64ae6e81510c5fea566eafb88f175f8bc19109f40fe80014c8b77fff10b8750778429bf3c5497e4cb92d9b30014f4cb975dff2a45244c28'
58},
59MonteTestCase{
60name: 'checkpoint 8'
61count: 8
62digest: '685179397554d276513d630234a03419808c698abf2600d7490aabb8e455c6ab6ea412c7729dc140a79dff66533c6946cbe90f9da9ed16e2e629db1651bea870'
63},
64MonteTestCase{
65name: 'checkpoint 9'
66count: 9
67digest: '335e6e941ab7dadfecdb74ea6cb4e8584b6e3408841a33a6cf7fd6a63294b1930a60983240311672acac3840a90e64cc366ce75081b2252627e9c31197ebad03'
68},
69MonteTestCase{
70name: 'checkpoint 10'
71count: 10
72digest: 'e3217f6af6e279e9445dc3738cbf9ba0e9edba0455844a73648139777afdea2c4d8032e214f541bf92675fb23f24df8e4fe98e0003aadfb6d8f9cc2cd799bbf7'
73},
74MonteTestCase{
75name: 'checkpoint 11'
76count: 11
77digest: 'ee2fdfb3ae630613b7d890977cf2515deac272a37f27e4a01961ecf103d4ff5b45cc8aef53b635dd75aa51aabf71c0642555ccd3281e0388f8ca09d83258cf30'
78},
79MonteTestCase{
80name: 'checkpoint 12'
81count: 12
82digest: '6a30d97cc98af6a25b673dce7aeab8d762bf2e55ea0c6dc899179281f84dd02a2896f77e9c106b472f55f7adbef7b1157be567ee1236ebdac2a3c5d8cb133eb5'
83},
84MonteTestCase{
85name: 'checkpoint 13'
86count: 13
87digest: 'ac1176abdc5f71170183d92ae55856221b0d95590af11d9d72ba605ec026bbec52d6974bc43a1efb125ff2b161fbdc616fda00f04193a0bc26aacdfa052a5741'
88},
89MonteTestCase{
90name: 'checkpoint 14'
91count: 14
92digest: '59fa909480620ecc08d34531a6da1b55158b74fc93ddf68e1d242615b6f3843a7952e63e798c6445cde1b07e0be09d0d711cb7b42a0e7760a593b08acfceb63d'
93},
94MonteTestCase{
95name: 'checkpoint 15'
96count: 15
97digest: '9eb253319efa61b864f27bd334d7dd78b38d3265fb544e0c8edee950a547e1d8db921a285774ab94d66beae933298d20f2a5aa87c62fe1e383cc3b18e7af18ac'
98},
99MonteTestCase{
100name: 'checkpoint 16'
101count: 16
102digest: '81735324005671f7bdad9e685ee8257f5e0622b9fcb5d38dbdfb2df27258c3e1d46d76e24c0c92c744e1b50a2b4b0d31525b3af83cc80a75722d921bdeef59c4'
103},
104MonteTestCase{
105name: 'checkpoint 17'
106count: 17
107digest: '17498cdff4323bb8021e44eca6559e05d8ff9a0ef2ee9d4ba0ac6e73f83972a0dfbb6d47728fa70311d7c82e154966e1b7678263b0f65133e9116969193d429b'
108},
109MonteTestCase{
110name: 'checkpoint 18'
111count: 18
112digest: '228c4574d7c45eb9ba9240722133fce74abe00c7328ab30b4bde373dc79afdd6e0569d36268cd5eaa2f27205fc00512577bcbb6699e1d66ed85eafaba7548afb'
113},
114MonteTestCase{
115name: 'checkpoint 19'
116count: 19
117digest: '3d40ccd9cc445bbecca9227c67fe455d89e0b7c1c858d32f30e2b544ca9a5a606535aea2e59fec6ec4d1ba898cc4338c6eadef9c0884bcf56aca2f481a2d7d3e'
118},
119MonteTestCase{
120name: 'checkpoint 20'
121count: 20
122digest: 'e1e577aeac92e3a2b7f8a262bf2ac9c037d2274ca6618fbe4cc21db7c699e9946b6671ae45ea433a1e392a5bc9eec96fd641ba8f4a047f022a04a337227004df'
123},
124MonteTestCase{
125name: 'checkpoint 21'
126count: 21
127digest: '5e4424c0bcb2f0f7a2428821a9d5840a82401f4440ae6bed25c53cd9e71cf9d39904d6a375bd721f4332ab0202529c91feb9c094c3e6d34ca4f66649ee6fa212'
128},
129MonteTestCase{
130name: 'checkpoint 22'
131count: 22
132digest: '56b199d63ca37189d5ca0d40006ac7bcb9f39cbdc00ef7b8a5697caa7d81d05b645a146995b1151d01958f1589337e14afc6e7dd10a815170e527a398e6ce8c3'
133},
134MonteTestCase{
135name: 'checkpoint 23'
136count: 23
137digest: 'd2d498ff93fb03013a64f295b5bc68e57d2fb5600da578aa011d43ff432eae3e0c800f9e2a53155e56fdbf5e068fe2b4beb3e42b2585531b8b16c4d8ca3356c6'
138},
139MonteTestCase{
140name: 'checkpoint 24'
141count: 24
142digest: '3d3875489903710f17cf4247b5842ace6f017b1a3b99e9ee5fbc04fc7898e78b12693879878028ca40c63cd0f6925fb7d0ca0412e4f06619e3ace223690f03b8'
143},
144MonteTestCase{
145name: 'checkpoint 25'
146count: 25
147digest: 'a013e21cd1234483c95c2ea2757be949bc79401ba39b09c316a1612d594642be65ca106e12695ac3808c57c6f2980e895fd1fe188946562afc238414e1e43649'
148},
149MonteTestCase{
150name: 'checkpoint 26'
151count: 26
152digest: 'c5f6367d7195489e16242f912fbe0d8002e947de3a7e9c53f77b1e5e90e05bd7ca395e787e34cb5f500c02da59c9d83de35601de7ae80dae74a0d6b4a292d43b'
153},
154MonteTestCase{
155name: 'checkpoint 27'
156count: 27
157digest: '7c28c44c6aaba83c122f24d68273e28a5afd65b4071d02b7ea3300478d5118971e1356ae57cbc70d2a177ea464a1c2c50d4297b933e789c63b1481797ae8f08c'
158},
159MonteTestCase{
160name: 'checkpoint 28'
161count: 28
162digest: 'af7cb42b1c70a85ac1ae1c2991b25b657c19f4fcf83af7f7dc0ae1028c1452a6a17dc98929634fe6ed3855b70b96bc2caa93d82037b94ebeddc77e4c1a7cc563'
163},
164MonteTestCase{
165name: 'checkpoint 29'
166count: 29
167digest: 'bd56ad4c0cbd162706053da929d667253aadcf417affb483fff4f2699bf406d128cfdf5196dfbb05bb89ccbf04c5147bd2ebb3156b0bc1768ca6faa171c91c01'
168},
169MonteTestCase{
170name: 'checkpoint 30'
171count: 30
172digest: '004d7b0fff9bcddf4b3913ae190a76728705a3d23874d92a8b7ff246c8fcad46623cb04723c8aded0cba4968d1a8cc1375b99005786c1bcb7ae4bf13325c3ae0'
173},
174MonteTestCase{
175name: 'checkpoint 31'
176count: 31
177digest: '8299a5bf5ed64f525c4eebbeca969fc1b91a81adb58c584bdd2d7676386a31fa546643a3cf505007584f02fb712d708cab645bf078a1b9339f5a76aee985d017'
178},
179MonteTestCase{
180name: 'checkpoint 32'
181count: 32
182digest: 'ce7100f3455db1a9776a9f40d562ea998afca1f9fee7e0d81c8db34cf68ad23a8bfa6fc04774703e1e56d5196b66966158fcf2a8335a58c6ba7ba1af756ba1dc'
183},
184MonteTestCase{
185name: 'checkpoint 33'
186count: 33
187digest: '90aaabcb655ee921b8350229efe6064a60051cf0cac858fa3d43afd5b97cc82301bd1b8cc1f874022e5af948185638783a13ca1bbd5049ace7fbf4f6d90c201f'
188},
189MonteTestCase{
190name: 'checkpoint 34'
191count: 34
192digest: '3cf0a25b33ded3e0806dfe603b9987f1d6f2b3fdcb1ec7f8566828c00e17e8f59e38b3bca302396c7525ca194e6cc8501369059e2e34ae21e3141215876847c4'
193},
194MonteTestCase{
195name: 'checkpoint 35'
196count: 35
197digest: 'bdc5266aee339a1ff13fcf5229773cd3d14b47101e83076927c160bb71bf7445590525a2012d52af008e118e16df1b6bfcaf8f22b4e45f9e749f3c20625a2bc8'
198},
199MonteTestCase{
200name: 'checkpoint 36'
201count: 36
202digest: 'ef8d2ba885381ab97756d59dbbbf53a1ea35d152b2d8f82c3518430aa34e708359194ea43950d032e151f576d343a5c3cfe6b71d4ed0ead9d3a107402589bad0'
203},
204MonteTestCase{
205name: 'checkpoint 37'
206count: 37
207digest: '194ea5324c4179998dd7057755f255fdea04dadf533f7851e3e9718b610948e32fd28323077d9421142ac808978adfa325b668c8599a2e01c757a5a14ed2dd37'
208},
209MonteTestCase{
210name: 'checkpoint 38'
211count: 38
212digest: '106984d2f0087e621dae760552bc6279072267883c204079481af6034354f1a2b77c17e6c039a1063e479342aa3ccd90330dd3fb5a7d5e976619497e2d3326cd'
213},
214MonteTestCase{
215name: 'checkpoint 39'
216count: 39
217digest: 'a1347216f1a6db47b90c4ded3c5c75440f54c22c87d538314d1340f86f88acba01378acb933ddad0adc6b75d55bfb7e8efc9c4a531b2a410610b7515b6dac66a'
218},
219MonteTestCase{
220name: 'checkpoint 40'
221count: 40
222digest: 'b76e4db147e0eaa4f04880654088b9d0fce518c8c377d92c846345604dc6b2b18d377fdb8e30f06d9bcfe6d7dacc07d6adff73d98d49f8f132b80f3084390830'
223},
224MonteTestCase{
225name: 'checkpoint 41'
226count: 41
227digest: 'acd4e527763dfd4513f0def0b1edf8ea12dc78d336b7b796f3dcc32e1068725443a2f55ab4f666b27d6bf2ab39669c98293f0a9108051fd3144d31a1ed171ddd'
228},
229MonteTestCase{
230name: 'checkpoint 42'
231count: 42
232digest: '10128c15494bc87a87374f676ef9fe2df20b36ffcca41a80bd40b216637b3de710efd070e277827820a7bba3cceb7b21f8fe7f9775d6c4df4d3da5349434ec49'
233},
234MonteTestCase{
235name: 'checkpoint 43'
236count: 43
237digest: '2632dd5c188c6ed3a4610405fdda704add752f5424d9de65a51400fe478e26cd0412e5f91ca4b744c34f4954f40a3a4254431d21954623208b527b7b4daa687e'
238},
239MonteTestCase{
240name: 'checkpoint 44'
241count: 44
242digest: '45707f5b6fc5ccd1f78d77f177d10fb8b462c74cc821518cd5cfa4b5d6b40b418044900693c37abbb82367d340fec67f800d74072935da1706b4d90ae26099c7'
243},
244MonteTestCase{
245name: 'checkpoint 45'
246count: 45
247digest: '56c37f31220b5b3040373d91b2c5e42fe9e601a12f7f8dc4534459bf28e484b8713db243c5782c031e674003a3c14c42fd152e7188789065e82795e10f87d54b'
248},
249MonteTestCase{
250name: 'checkpoint 46'
251count: 46
252digest: '5da94c899d48bd8299fee3d81662f8d6c5f8f8bc54d18cb0368b13cebaee7ad71e74ea80f34974ad166f04f9a0602809166fe4085a475a8ca86cade12b6754c4'
253},
254MonteTestCase{
255name: 'checkpoint 47'
256count: 47
257digest: '0664363f97ba910760b0922e31ca880ca97469506cb007e3108c36c3ce3ce1801fb4197609479339e8820632b6a38bffffee05a9adc11cc544b9aa6f5b95cc6f'
258},
259MonteTestCase{
260name: 'checkpoint 48'
261count: 48
262digest: '732c41a1edaa727c04f627ff158aaff67c18efd667216132b99ab84d108996a10bb008b5d803b22ed1aa78bb0d10f8a762fd34777d7dccce8e84827ba88d4193'
263},
264MonteTestCase{
265name: 'checkpoint 49'
266count: 49
267digest: 'fc9c21d67e393a2b05a23a17d8db630cbaebaa3def211181749f1bcad181560627fb60ee20fae2e5980cbf50fce0a19dce807e7fb75c4da0ef008bc75d413a65'
268},
269MonteTestCase{
270name: 'checkpoint 50'
271count: 50
272digest: '0453b765afc1edffa595efe345177f5805ed3abc1297ceab757ae7161723a6144cb543299f418049276d16b7896662631634fab9549127c10f27505b7dee8665'
273},
274MonteTestCase{
275name: 'checkpoint 51'
276count: 51
277digest: '3853f3bf024e0668e8d1ea53733a97537f97d9307c5f3a19864ab4eeb1654710693bb961a344dec8a758f5e64b26fcb6dd423419c4a114fa749211a9de06c281'
278},
279MonteTestCase{
280name: 'checkpoint 52'
281count: 52
282digest: '240137f0dd57beb3f7fc283bb3ead423c67883fd46f4e27471d7be57ad469a49bad03a3658418bd55614678f3a463bceff85291314b90ef43ccbcb028f0a7a07'
283},
284MonteTestCase{
285name: 'checkpoint 53'
286count: 53
287digest: 'f9050a5271edbe4cfdb9520ec05bbdc3cbcb9bce36fd212338d3e7028a39b9ab30793e561d75a2e424193264c7f0775e65599ef0c94e0ad24dbfe18252364267'
288},
289MonteTestCase{
290name: 'checkpoint 54'
291count: 54
292digest: '47caa7a5862fad837aaa409a4a9df2575e645528c35159115911b7c4e2f08ae49d68de97249b31b83ce2c163f649cad4559dc6e6a7191f2922d79a5fd6af167b'
293},
294MonteTestCase{
295name: 'checkpoint 55'
296count: 55
297digest: '13f5825c41fa49edf6104e3e35c9c224eba93e37374f730004c39c54e7391e4a847fd61865235a3fe32224c96fbe86f7e14c3d5df496e83ec989a71b4f293a44'
298},
299MonteTestCase{
300name: 'checkpoint 56'
301count: 56
302digest: 'e5b55e05efe1ca6b9a96a57e3a1523d610d70f837e93b31fa98c2736d3e114d238d46ec6b6e3d19e774b253f6b0c7a2ebe69b7e60fc0874444806b2a2278df45'
303},
304MonteTestCase{
305name: 'checkpoint 57'
306count: 57
307digest: 'f14a586ac30f0af255f597a9aef9abba5e99c04d17b01f24427c4ee2c196b52acb1ceefc9b15cb822b3ecffdc2f7c49e11d3fc0769acee33361537d379c62e0c'
308},
309MonteTestCase{
310name: 'checkpoint 58'
311count: 58
312digest: '7e2d3398807195c48e6ec52d20710bbf8b21ea8de4d1abc197897ccc58aeff40259edc67270cdae0edcc686c0d0dccc5760c1495ab1cf48482dc2000ae2d42ad'
313},
314MonteTestCase{
315name: 'checkpoint 59'
316count: 59
317digest: '2f3d5c5f990bf615d5e8b396ccbd0337da39fad09b059f955a431db76a9dc720dffc4e02c0be397c7e0463799cd75fd6ab7c52bec66c8df5ef0d47e14a4c5927'
318},
319MonteTestCase{
320name: 'checkpoint 60'
321count: 60
322digest: '483a1764d308cc494a2b543d29ba616483aefdf91c7769fd084eedaac1add1891df95d317a47430b2bf73e4081f86597020e28afe2d34a22b77ea62b6112d09a'
323},
324MonteTestCase{
325name: 'checkpoint 61'
326count: 61
327digest: 'bfa88691ec951511651c6f14af100eeb26d87729e18ac3ef49a80d73ffeaeea53e97c4a7277a7ee9f2fba070b1c9720d6cdba407dd82267019e3f0f5662b2f2b'
328},
329MonteTestCase{
330name: 'checkpoint 62'
331count: 62
332digest: '4c17c8e2e7132dbf82afebc40efc77926d16f4d2c082d846dac28733aa767e2840ebf04f2563df75933466a36e11968d342e4157827605d04d9627ce9b5216c8'
333},
334MonteTestCase{
335name: 'checkpoint 63'
336count: 63
337digest: '70bbfc29a2a765220af84e7bb10d759a3152ad4b5643ef6b89966950ec7ef9503d57bc0a28c4ee789a60bf9dcac59139e15241d73b990410cf92eff213da9eca'
338},
339MonteTestCase{
340name: 'checkpoint 64'
341count: 64
342digest: '8d1d56f37fc19b84984a6fa33aa9c2dbdbf79a29c04ad0b4cf20333e6bec943447be2416242f8cd2f9732e79bb925cc5a61a80c5fc9c079961243fd1c1f5900e'
343},
344MonteTestCase{
345name: 'checkpoint 65'
346count: 65
347digest: '492fd0171f4dcd5d20ea6c0d34b5576c8894664ae5955e6737f5e3b711c2804d99ccca065b7ec18c82da98b18a3029b765c51ebc7c433b36492e0ed6b8511bb6'
348},
349MonteTestCase{
350name: 'checkpoint 66'
351count: 66
352digest: '7f49e8e54db7e5b4323cae2db71f3e8b8eba172dcad3602e9b7b058007a5589358732d5afffa56072a46e89b1ea27ef8d556deb86b569c635d394f15d99d8a15'
353},
354MonteTestCase{
355name: 'checkpoint 67'
356count: 67
357digest: '56884a6a9210d5f371e25823efb2511a9c410c26a441e07c1bdffe8605084267d49c315baf6a692d7d97844b2714b4930877a5d7f52cf6fa151700fcb6980546'
358},
359MonteTestCase{
360name: 'checkpoint 68'
361count: 68
362digest: '6aaef8284eef221ecb17ea3c9596f075b5155fe7b925d737ed3c6543c761c28c7cd9d9d4b5e2a37b2f183a2a367bbd34b633497bc7a1737d61c8c1f3ef295062'
363},
364MonteTestCase{
365name: 'checkpoint 69'
366count: 69
367digest: '38ef178f5688e59d47c375252db7b39f40c0c84169878ee7ba5086e4b25fea81076b9c37847e9e6bf24ae0b343689c265ec5ca7469e619acd61b0276721efb1b'
368},
369MonteTestCase{
370name: 'checkpoint 70'
371count: 70
372digest: 'e3fe1aabad120777cf24eaae289b486632ca46ceb89afae73dbae5fa87c767879369355a9cc5c21ca604ed91d0f2f58c466573f3e6d88e52c62c0d3cb188e141'
373},
374MonteTestCase{
375name: 'checkpoint 71'
376count: 71
377digest: '82f5bd920457bb2763a0da031a7fed47b236951b1ea420c20fd2b6de1dbfbb9c4600ea7092788493e2d4be6ee24b6dba04e57af3e8f2f14d9837295420ac7631'
378},
379MonteTestCase{
380name: 'checkpoint 72'
381count: 72
382digest: '6d0b26208ba9b1615067bb3ff97b292fe67e4c02d240d649c32370e0a4cd22d03bdf864be4d24a3f5f51aeccfd1afd5191e590edeb5f7bec323b0506c3104b89'
383},
384MonteTestCase{
385name: 'checkpoint 73'
386count: 73
387digest: 'd081083158054d08371ec84f4d3aa5aa761734ac6091a30330a861fda056f835c750bf4f7981af1693ff28545366bd05cec47bccd77a7d237befb0135c534138'
388},
389MonteTestCase{
390name: 'checkpoint 74'
391count: 74
392digest: '6ba8b52780b8a07a2a2015dd8f0c5e7437b8e024c4ee428f7ba91dfea118cb72a939872550983317132b841b7cbc29a22b8f1cfea0c55203cafc69b55ed6244a'
393},
394MonteTestCase{
395name: 'checkpoint 75'
396count: 75
397digest: '312692b0a51f002b7f06d05b39d15a5637dbddd2f4f1a73e6c88a4c841cdba5cd8e69c0939ab39bb1a9c54fa35402143c97edb9704a0e9e1a98701710f6a5dad'
398},
399MonteTestCase{
400name: 'checkpoint 76'
401count: 76
402digest: 'aaee960de201a8dcccff95b834fccf0dafc03fe6cffc0429162bf4aff01165ab07a0c9435e9cb412121b7ba010657ccc3152118602b665072136317d92fd4262'
403},
404MonteTestCase{
405name: 'checkpoint 77'
406count: 77
407digest: '21fdff552e08c86c07f080cefacaaaf31846eb893bfe2e4f88c3c3cd8cbf592a84500942695a5e5ae971ab343ce2695dd1baeb1f94dd4b53d678e14265e421ae'
408},
409MonteTestCase{
410name: 'checkpoint 78'
411count: 78
412digest: 'ca8f1a5b2172f6adb474da53b35e3f73ffd88263d3eecde72e48b16e1a0658015b555ee319005a1d82802e91431ee777610f9b1028d819921e1044ad426b0270'
413},
414MonteTestCase{
415name: 'checkpoint 79'
416count: 79
417digest: 'ce5ab25eff9c1ddc569a1eaaa66b689109ee269db7066e0b02d39b3564fd14ca6249987b7791e203d3d7c2ebf18558d2f23f94c03dd1d03aa63849e4d2889a76'
418},
419MonteTestCase{
420name: 'checkpoint 80'
421count: 80
422digest: 'a6f8b0561000dd4ae8b828c5f676e8c1a6474c4a042a645f1815bd52e9ff53c97dc36d5d8997f8ce332185feead76267f5b2e63f597fb3345ca0046e58fc0f24'
423},
424MonteTestCase{
425name: 'checkpoint 81'
426count: 81
427digest: 'fec86794bad4106c5ad1c1a2d9a1b7aae480396ec231eb5cac21c4077d17a0b652da0037363399a5a1dababa4a40e4c54b9124167580dee9108c4dbb24c57512'
428},
429MonteTestCase{
430name: 'checkpoint 82'
431count: 82
432digest: '594f5dd3f4c87bdc0d81309386e9163a9718e34c7b0dcb4613f8487aa786f9d211cfb61bb247fa9f5ecef042e710f192850f5571807294bfd8a54397850e5773'
433},
434MonteTestCase{
435name: 'checkpoint 83'
436count: 83
437digest: 'd81ad866f25ef6a0a6431d267114da564513e5ebdcf48db7e95db8cf32a89f0ab107874d796035db97420ffcf1db5f04dc1a52ddbbb960fc63b7f3f835cc8be6'
438},
439MonteTestCase{
440name: 'checkpoint 84'
441count: 84
442digest: '431d537e098e9949f6a68108d55d20952e3bfcdeb7273bac3917e37790a84fa5db04c33a79c113a06cf333e831d7702a00853a93fd0aa5146d934f4f71242a6a'
443},
444MonteTestCase{
445name: 'checkpoint 85'
446count: 85
447digest: '4ed95636c6885ae4e63d042e82f4da830c702dbf3b9746d64770a64dd666b33208315f3a947c4dff790771ef283788a9c74da83e22b97f750286a820ee46698c'
448},
449MonteTestCase{
450name: 'checkpoint 86'
451count: 86
452digest: 'a9bcb60b4d7724cdddddbc232b4ac70b94d0d7e9f0724b1222d918930cbb9bdbb04b3ad43e3c8caf3bf8b004ee4aec6bd527ff8eb6189b44827f7ba7057f6a90'
453},
454MonteTestCase{
455name: 'checkpoint 87'
456count: 87
457digest: 'd6d5e44d5bb07fc4144ab6ab309f048968f73f7992beb326047e9e2cd7af6240bc8abf46703c32fdb58fb2a8672594a660ef855be74f24cec09d4fb00219de82'
458},
459MonteTestCase{
460name: 'checkpoint 88'
461count: 88
462digest: 'dfda9ac0c7147530da97715ccf47814182255f2f2cf40287db97a4c63b43fcd39e6d41e560921492badb253a7dea0aba863c7c33b912bb59d1ff4de03a4f03bb'
463},
464MonteTestCase{
465name: 'checkpoint 89'
466count: 89
467digest: '0395faaaf2e907f27779d6f1cc9c9db68ec390a38fbb0702c6475b46f7a399498d46fd8014f834b131e1e83abba0359b1f16d8fc0a393580615def2ad0caba73'
468},
469MonteTestCase{
470name: 'checkpoint 90'
471count: 90
472digest: '41cb98f09029abe85d24a0f131f116c7f69f54f7e91c250642606512bf3da4ca89ba70a4714a5f66d9ae81ff09317dadaff12a02057074c970f0f02a52bfafd2'
473},
474MonteTestCase{
475name: 'checkpoint 91'
476count: 91
477digest: '8e8f161d48e306c5533ed614b8ef3a1979df6db7e13d0780a73c4a3980ddf0a95f93941d412c93683e39915a660c3fbec0dbb1bb6beea2e2099cd968011535c0'
478},
479MonteTestCase{
480name: 'checkpoint 92'
481count: 92
482digest: '789593f0b8fb83ef9b3ec50ab8f6e1e47344f763d4f7ceab5600989e7b6fd5fef6ee5e487975f64474af6cd71ae4d9ecce8f009edea0227c7ebe73080b8f961b'
483},
484MonteTestCase{
485name: 'checkpoint 93'
486count: 93
487digest: 'f37e1449e0b313d9537a6177f7a31158d353e5b79c781facf02526ec94e0c6cfda37105bac67098b194ea82efb307c2929a9ab8aca0e76c53e829e3f901cd245'
488},
489MonteTestCase{
490name: 'checkpoint 94'
491count: 94
492digest: '2e74e745caaf2d449ab3b031dd214b48616853a512cf2e95c40cb8e7594fe5e4879ac8a26d02eb35b3b96a5c9e7dcae3e15fd050a0bcc1fb3b9cb9c4df0fad3e'
493},
494MonteTestCase{
495name: 'checkpoint 95'
496count: 95
497digest: '6eac7069c26082e52574ca6a58abb9b1b9faf452e8cca9f1c7023679ce192ca554892f30e38104d39088a24df35612444a0fc90084af7535fd9344fa51dded84'
498},
499MonteTestCase{
500name: 'checkpoint 96'
501count: 96
502digest: 'ada6caf30c4f6e3644d952366e01519af6771b406e2c447552f0c597b8dd10e9e9b4e699c9a835de03f422be8980538d9786172dfd2fe511db272a1543d5aa35'
503},
504MonteTestCase{
505name: 'checkpoint 97'
506count: 97
507digest: '4d4b0086b2cb05d713f2805caa7e6605c8f7dbbb2e0f92aa159aebdcd63060305f47b748f1bca6e0b6e11cf8f9697fcccb6584b878c4b54a699290728a40aa1b'
508},
509MonteTestCase{
510name: 'checkpoint 98'
511count: 98
512digest: '97420b8a0ad102aeb92139da2c052d2748dd7d2dbb93a9ea79dc15b520d0ca7cab8cb7a00f5b5aebcb49d7e7f52a27180935ce617aeecdecba04064c668edd37'
513},
514MonteTestCase{
515name: 'checkpoint 99'
516count: 99
517digest: '4aa7dad74eb51d09a6ae7735c4b795b078f51c314f14f42a0d63071e13bdc5fd9f51612e77b36d44567502a3b5eb66c609ec017e51d8df93e58d1a44f3c1e375'
518},
519]
520
521fn test_monte_messages() {
522mut msg_seed := hex.decode(seed)!
523
524for c in monte_cases {
525mut md0 := msg_seed.clone()
526mut md1 := msg_seed.clone()
527mut md2 := msg_seed.clone()
528mut md3 := msg_seed.clone()
529
530mut mi := []u8{len: 0, cap: 64}
531
532for _ in 0 .. 1000 {
533mi.clear()
534mi << md0
535mi << md1
536mi << md2
537
538md3 = sha512.sum512(mi)
539
540md0 = md1.clone()
541md1 = md2.clone()
542md2 = md3.clone()
543}
544
545msg_seed = md3.clone()
546
547expected_result := hex.decode(c.digest)!
548
549assert md3 == expected_result, 'failed ${c.name}'
550}
551}
552