| 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_224, the test vectors come from: |
| 6 | // SHA512_224Monte.rsp |
| 7 | import crypto.sha512 |
| 8 | import encoding.hex |
| 9 | |
| 10 | const seed = '2e325bf8c98c0be54493d04c329e706343aebe4968fdd33b37da9c0a' |
| 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: '9ee006873962aa0842d636c759646a4ef4b65bcbebcc35430b20f7f4' |
| 23 | }, |
| 24 | MonteTestCase{ |
| 25 | name: 'checkpoint 1' |
| 26 | count: 1 |
| 27 | digest: '87726eda4570734b396f4c253146ecb9770b8591739240f02a4f2a02' |
| 28 | }, |
| 29 | MonteTestCase{ |
| 30 | name: 'checkpoint 2' |
| 31 | count: 2 |
| 32 | digest: '7be0871653db5fa514b4ec1a0363df004657155575b0383bc9fdec35' |
| 33 | }, |
| 34 | MonteTestCase{ |
| 35 | name: 'checkpoint 3' |
| 36 | count: 3 |
| 37 | digest: '7a794a3a1ae255e67ffbf688a05b6aba7f231cebec64b4fc75092d49' |
| 38 | }, |
| 39 | MonteTestCase{ |
| 40 | name: 'checkpoint 4' |
| 41 | count: 4 |
| 42 | digest: 'aaf5d4ecaf9426149821b15821b41c49e3900c0fc91664fb294216ea' |
| 43 | }, |
| 44 | MonteTestCase{ |
| 45 | name: 'checkpoint 5' |
| 46 | count: 5 |
| 47 | digest: '60f6ff2fbffc9151f67c7e9325e27706f9904d1d55311bb587c183c7' |
| 48 | }, |
| 49 | MonteTestCase{ |
| 50 | name: 'checkpoint 6' |
| 51 | count: 6 |
| 52 | digest: 'c6e46e63fd0b37a7fd460f724315796a6be5dcfd047907acc0512278' |
| 53 | }, |
| 54 | MonteTestCase{ |
| 55 | name: 'checkpoint 7' |
| 56 | count: 7 |
| 57 | digest: '1c9dd92b35f00ea3cd13bcdef3c99e73fd604fe167d4a23ba1aec8eb' |
| 58 | }, |
| 59 | MonteTestCase{ |
| 60 | name: 'checkpoint 8' |
| 61 | count: 8 |
| 62 | digest: '3ebec6bbf913b0eee0cc8aec7f9611648432674551fc3f1e01520dd8' |
| 63 | }, |
| 64 | MonteTestCase{ |
| 65 | name: 'checkpoint 9' |
| 66 | count: 9 |
| 67 | digest: 'b09556d256b3de7b122096a7a2a8c1d2ffcb23a9bfc38bb1d919739a' |
| 68 | }, |
| 69 | MonteTestCase{ |
| 70 | name: 'checkpoint 10' |
| 71 | count: 10 |
| 72 | digest: '756dd96518eff331dc48e2af06c6f2a92831d49bef28af687d0c3912' |
| 73 | }, |
| 74 | MonteTestCase{ |
| 75 | name: 'checkpoint 11' |
| 76 | count: 11 |
| 77 | digest: '08ef4f1cfe5b707ff57218240f5c02e75cc875e6585fc17fd60d3af7' |
| 78 | }, |
| 79 | MonteTestCase{ |
| 80 | name: 'checkpoint 12' |
| 81 | count: 12 |
| 82 | digest: '6f956e415d7c29d8073d6e5f89d9288215988db029b86183af622de5' |
| 83 | }, |
| 84 | MonteTestCase{ |
| 85 | name: 'checkpoint 13' |
| 86 | count: 13 |
| 87 | digest: 'a39947509d4a45d39837f785b2205a2fb4ab184fc40c88ec8dd7fe7b' |
| 88 | }, |
| 89 | MonteTestCase{ |
| 90 | name: 'checkpoint 14' |
| 91 | count: 14 |
| 92 | digest: 'c7b53227a32fc6e03f300ec56bc4505f03bad3d66a39940e1670b62f' |
| 93 | }, |
| 94 | MonteTestCase{ |
| 95 | name: 'checkpoint 15' |
| 96 | count: 15 |
| 97 | digest: 'b61a60ea4173d714cbcccff0dfef932f9d719175d5747ebca2b55b09' |
| 98 | }, |
| 99 | MonteTestCase{ |
| 100 | name: 'checkpoint 16' |
| 101 | count: 16 |
| 102 | digest: 'ee2c5fc1649e4033884ddbf3c2d93fe3ec9e8e8171df0cd94b438613' |
| 103 | }, |
| 104 | MonteTestCase{ |
| 105 | name: 'checkpoint 17' |
| 106 | count: 17 |
| 107 | digest: 'a333fbe4ea8dc682f8dc5e96cc2365ec2510b96d8e6bffdec1324b41' |
| 108 | }, |
| 109 | MonteTestCase{ |
| 110 | name: 'checkpoint 18' |
| 111 | count: 18 |
| 112 | digest: '5ae36caae04f3426a6b8da72d16b261b79ddef7e94a5ac2c601a40cd' |
| 113 | }, |
| 114 | MonteTestCase{ |
| 115 | name: 'checkpoint 19' |
| 116 | count: 19 |
| 117 | digest: '0d13a738747e8a15dc02e26338ad47a556afb4af033874de50e31a39' |
| 118 | }, |
| 119 | MonteTestCase{ |
| 120 | name: 'checkpoint 20' |
| 121 | count: 20 |
| 122 | digest: '4fd90174f249e11b99e7eb63ebca5e06f8f1f78efee855b71545ef5d' |
| 123 | }, |
| 124 | MonteTestCase{ |
| 125 | name: 'checkpoint 21' |
| 126 | count: 21 |
| 127 | digest: '02a47cd22538f44db8e2b0f769cf8fe2c0528dac2f47e53740fa7384' |
| 128 | }, |
| 129 | MonteTestCase{ |
| 130 | name: 'checkpoint 22' |
| 131 | count: 22 |
| 132 | digest: '75ceb64019f21eecef34741b96e2dd57eb261b24d65fcd1a409210ce' |
| 133 | }, |
| 134 | MonteTestCase{ |
| 135 | name: 'checkpoint 23' |
| 136 | count: 23 |
| 137 | digest: '4ffe012bc77387dd23c521ece6686e67c8584f308f5f62adc46715c8' |
| 138 | }, |
| 139 | MonteTestCase{ |
| 140 | name: 'checkpoint 24' |
| 141 | count: 24 |
| 142 | digest: 'c1b12961b27395bd2d309b5e6a20451411bd3986d992bb83b30b92d5' |
| 143 | }, |
| 144 | MonteTestCase{ |
| 145 | name: 'checkpoint 25' |
| 146 | count: 25 |
| 147 | digest: '0547c463bf3aeac722005c48d45e008f09c33551f1cfdd85b8d67dec' |
| 148 | }, |
| 149 | MonteTestCase{ |
| 150 | name: 'checkpoint 26' |
| 151 | count: 26 |
| 152 | digest: '8704119b4a6f7fd8ac25bc1ad72c1d573106a0af5dad3c8b7563c742' |
| 153 | }, |
| 154 | MonteTestCase{ |
| 155 | name: 'checkpoint 27' |
| 156 | count: 27 |
| 157 | digest: '877f5024aa6fa131e4660a8c7dd19bc80ce77c784b01ad79a5528fbb' |
| 158 | }, |
| 159 | MonteTestCase{ |
| 160 | name: 'checkpoint 28' |
| 161 | count: 28 |
| 162 | digest: '15750a559a4aed2925d280671b75d34e3a5b080259143f7b671e0e5e' |
| 163 | }, |
| 164 | MonteTestCase{ |
| 165 | name: 'checkpoint 29' |
| 166 | count: 29 |
| 167 | digest: 'deb48a5c402f539d0a0a62d81928debf78519cbeaebce1a29f203b06' |
| 168 | }, |
| 169 | MonteTestCase{ |
| 170 | name: 'checkpoint 30' |
| 171 | count: 30 |
| 172 | digest: '19af4d392fecc6a03f443f8aeb8e59a5496ca3b75481771b3efe45f9' |
| 173 | }, |
| 174 | MonteTestCase{ |
| 175 | name: 'checkpoint 31' |
| 176 | count: 31 |
| 177 | digest: 'd7e0d727fea61dae8f2c92fe884f2cd939ab2737f6bbf4545aa27e67' |
| 178 | }, |
| 179 | MonteTestCase{ |
| 180 | name: 'checkpoint 32' |
| 181 | count: 32 |
| 182 | digest: 'c8b6e303d2c654a5f330209502ac89adf9840a6c832a356095c98b70' |
| 183 | }, |
| 184 | MonteTestCase{ |
| 185 | name: 'checkpoint 33' |
| 186 | count: 33 |
| 187 | digest: 'bbc6d0112d60da2975d2028cf3c6b9509aed404f378540235199456c' |
| 188 | }, |
| 189 | MonteTestCase{ |
| 190 | name: 'checkpoint 34' |
| 191 | count: 34 |
| 192 | digest: 'b8bec3ad04591295081ef9484df499d4659ee1cfbd74b11033fa3d27' |
| 193 | }, |
| 194 | MonteTestCase{ |
| 195 | name: 'checkpoint 35' |
| 196 | count: 35 |
| 197 | digest: 'e6f5a285cdc65b24496c1b5040fd354b7abbc930128e6c750fe72ef8' |
| 198 | }, |
| 199 | MonteTestCase{ |
| 200 | name: 'checkpoint 36' |
| 201 | count: 36 |
| 202 | digest: 'af77e2ccd33403b22954796a071da760f7c27fd998e9aaa38126172a' |
| 203 | }, |
| 204 | MonteTestCase{ |
| 205 | name: 'checkpoint 37' |
| 206 | count: 37 |
| 207 | digest: 'de0e347e717e3331a73fc27c4d0a6f4adae82de2c70c701a6d5ab2b3' |
| 208 | }, |
| 209 | MonteTestCase{ |
| 210 | name: 'checkpoint 38' |
| 211 | count: 38 |
| 212 | digest: '00397993b6b0ab272be84263167167270c45df00483b01fe9b1ea365' |
| 213 | }, |
| 214 | MonteTestCase{ |
| 215 | name: 'checkpoint 39' |
| 216 | count: 39 |
| 217 | digest: '9a95e0f3e52e822552ff16c701d3541674de4cf183b6f30c43154bcd' |
| 218 | }, |
| 219 | MonteTestCase{ |
| 220 | name: 'checkpoint 40' |
| 221 | count: 40 |
| 222 | digest: '6a9d0c77cc592b625be5896b41e5dfc10a28ebbfdf688c84b525e0ca' |
| 223 | }, |
| 224 | MonteTestCase{ |
| 225 | name: 'checkpoint 41' |
| 226 | count: 41 |
| 227 | digest: '39b8102119ff29ab458d92c691bad39cad3e3a9bd08a6d051b9e8603' |
| 228 | }, |
| 229 | MonteTestCase{ |
| 230 | name: 'checkpoint 42' |
| 231 | count: 42 |
| 232 | digest: '49aad2c03b7c4d3dcf8356325fe6c43705731341697290c824f9eacf' |
| 233 | }, |
| 234 | MonteTestCase{ |
| 235 | name: 'checkpoint 43' |
| 236 | count: 43 |
| 237 | digest: 'fe4e83590811ce54caa352e52829268532a20b1a38d069ad99fa9a41' |
| 238 | }, |
| 239 | MonteTestCase{ |
| 240 | name: 'checkpoint 44' |
| 241 | count: 44 |
| 242 | digest: 'eeba13d3177da1b2b6877cdbb8ba32e0886b94bae893a9a062af4d4d' |
| 243 | }, |
| 244 | MonteTestCase{ |
| 245 | name: 'checkpoint 45' |
| 246 | count: 45 |
| 247 | digest: 'edd2d2365300c6a904526ad7106ee74d75bcbb9634c97f3fec57fc48' |
| 248 | }, |
| 249 | MonteTestCase{ |
| 250 | name: 'checkpoint 46' |
| 251 | count: 46 |
| 252 | digest: '46bd3b5289ff2278b2d1d652c9294f31415dda38694fce83fdd25f15' |
| 253 | }, |
| 254 | MonteTestCase{ |
| 255 | name: 'checkpoint 47' |
| 256 | count: 47 |
| 257 | digest: '1e1059e7089fa33e23fc1572b08131c7600ac8a1bbe583b6a4c6e09e' |
| 258 | }, |
| 259 | MonteTestCase{ |
| 260 | name: 'checkpoint 48' |
| 261 | count: 48 |
| 262 | digest: 'cd70a5e3d6ba8281c5ecc468dd7e96bb3d7723754d2cdc19e8a6063d' |
| 263 | }, |
| 264 | MonteTestCase{ |
| 265 | name: 'checkpoint 49' |
| 266 | count: 49 |
| 267 | digest: 'cb46f0380d1db1b1bec9b70d51c29d1300c5c814a4b360a0db548363' |
| 268 | }, |
| 269 | MonteTestCase{ |
| 270 | name: 'checkpoint 50' |
| 271 | count: 50 |
| 272 | digest: '76b467577856973eab224e2ecd0689601446c7915f6805e93276a4bc' |
| 273 | }, |
| 274 | MonteTestCase{ |
| 275 | name: 'checkpoint 51' |
| 276 | count: 51 |
| 277 | digest: '3f4d4db5e47d20c7458a87c5029eb340c4b639ebd3b6f1fca9c20427' |
| 278 | }, |
| 279 | MonteTestCase{ |
| 280 | name: 'checkpoint 52' |
| 281 | count: 52 |
| 282 | digest: 'f8fff1c83b456dd8ce96aa977a7a1b968c1a5bd4f2cb6e0ff80aa923' |
| 283 | }, |
| 284 | MonteTestCase{ |
| 285 | name: 'checkpoint 53' |
| 286 | count: 53 |
| 287 | digest: 'f88800640deb5328d0a6985474a041be43c7248609fa97ea0b9236cb' |
| 288 | }, |
| 289 | MonteTestCase{ |
| 290 | name: 'checkpoint 54' |
| 291 | count: 54 |
| 292 | digest: 'a071d9e4da86be8c17bbbbcf47a863ceea303bf02bb872565f829bdf' |
| 293 | }, |
| 294 | MonteTestCase{ |
| 295 | name: 'checkpoint 55' |
| 296 | count: 55 |
| 297 | digest: '19e399fc939c03fd3d016f69f77345580c1f8869b42c8231aea37027' |
| 298 | }, |
| 299 | MonteTestCase{ |
| 300 | name: 'checkpoint 56' |
| 301 | count: 56 |
| 302 | digest: '87f1884b3f78b9c962beef4e024e235fc9ca25c8667426fdcf18ee34' |
| 303 | }, |
| 304 | MonteTestCase{ |
| 305 | name: 'checkpoint 57' |
| 306 | count: 57 |
| 307 | digest: '6172fb88775686115c5d62e7b32affb353b40a41fe1ebfc603917274' |
| 308 | }, |
| 309 | MonteTestCase{ |
| 310 | name: 'checkpoint 58' |
| 311 | count: 58 |
| 312 | digest: 'df9e73edd801f9f457192f7d3aae4261dd89515200b028b27684d554' |
| 313 | }, |
| 314 | MonteTestCase{ |
| 315 | name: 'checkpoint 59' |
| 316 | count: 59 |
| 317 | digest: '3c5c668e1b085b7efb28c5413657b921c7db8cec6eb91177bc5fdb25' |
| 318 | }, |
| 319 | MonteTestCase{ |
| 320 | name: 'checkpoint 60' |
| 321 | count: 60 |
| 322 | digest: '2273fe0a482b701a54dc397ea93bbf73f7a8ce0fd891cf4bd7d0b9e0' |
| 323 | }, |
| 324 | MonteTestCase{ |
| 325 | name: 'checkpoint 61' |
| 326 | count: 61 |
| 327 | digest: 'bdfd8d50df97a02af4ba997e237f99d17503321f67cc5af8c3aadf2f' |
| 328 | }, |
| 329 | MonteTestCase{ |
| 330 | name: 'checkpoint 62' |
| 331 | count: 62 |
| 332 | digest: '24f6e6a0d54767dc5b33a46ca073d368cb3ec1b36fecc2672838a194' |
| 333 | }, |
| 334 | MonteTestCase{ |
| 335 | name: 'checkpoint 63' |
| 336 | count: 63 |
| 337 | digest: 'ea7672b36987befb16352c13231fb7668c75673a932bf880181765e4' |
| 338 | }, |
| 339 | MonteTestCase{ |
| 340 | name: 'checkpoint 64' |
| 341 | count: 64 |
| 342 | digest: 'e45da9a4f5c0dc38a2f7d2a30b0c8fe153584a56d80ce69e929a2784' |
| 343 | }, |
| 344 | MonteTestCase{ |
| 345 | name: 'checkpoint 65' |
| 346 | count: 65 |
| 347 | digest: '86983ba278254438244b1bf5ea59492ec36504a078530b6a7812f832' |
| 348 | }, |
| 349 | MonteTestCase{ |
| 350 | name: 'checkpoint 66' |
| 351 | count: 66 |
| 352 | digest: 'ad9c1161761135fff88c17963e86cdbc74ff1b1cfc4433fbc8d9efc1' |
| 353 | }, |
| 354 | MonteTestCase{ |
| 355 | name: 'checkpoint 67' |
| 356 | count: 67 |
| 357 | digest: '9af064cf4fa078b50835f283cee8ecb6ada36012ece1a8426a62342c' |
| 358 | }, |
| 359 | MonteTestCase{ |
| 360 | name: 'checkpoint 68' |
| 361 | count: 68 |
| 362 | digest: '046810fe8fb6826cc5b6b15eaa5e52f6b3679359ccdd773d6d3b638c' |
| 363 | }, |
| 364 | MonteTestCase{ |
| 365 | name: 'checkpoint 69' |
| 366 | count: 69 |
| 367 | digest: 'a5ecb35e74f484c8dfbf759ab4c0ab432aa2a9d7d75fdce80e556fb0' |
| 368 | }, |
| 369 | MonteTestCase{ |
| 370 | name: 'checkpoint 70' |
| 371 | count: 70 |
| 372 | digest: '5e1de1624a8111e59cb1955a4c2c4a2b54aa4df035679c0bdbaafc2d' |
| 373 | }, |
| 374 | MonteTestCase{ |
| 375 | name: 'checkpoint 71' |
| 376 | count: 71 |
| 377 | digest: '9b449c13d9633869261dfa842c63c82ee9ac71b392b1ab268d536917' |
| 378 | }, |
| 379 | MonteTestCase{ |
| 380 | name: 'checkpoint 72' |
| 381 | count: 72 |
| 382 | digest: '502270faa8397007684f76f331365a793e7a6cc8298dd9798229a515' |
| 383 | }, |
| 384 | MonteTestCase{ |
| 385 | name: 'checkpoint 73' |
| 386 | count: 73 |
| 387 | digest: '7e1fb43c7ffd08d08ca9a0cc5d5414f8e2b20cc3458a63ac00ab388d' |
| 388 | }, |
| 389 | MonteTestCase{ |
| 390 | name: 'checkpoint 74' |
| 391 | count: 74 |
| 392 | digest: 'b8694aa799471f785e33c6f8d5729f6c0db59f46d652cbacc923dd70' |
| 393 | }, |
| 394 | MonteTestCase{ |
| 395 | name: 'checkpoint 75' |
| 396 | count: 75 |
| 397 | digest: '6b431252c1f23628d7ec11656d52e8d6724100a6204e136bfc7ccd92' |
| 398 | }, |
| 399 | MonteTestCase{ |
| 400 | name: 'checkpoint 76' |
| 401 | count: 76 |
| 402 | digest: '357f7779dc289dd46231a46bdeabaf899b167984864d232410736505' |
| 403 | }, |
| 404 | MonteTestCase{ |
| 405 | name: 'checkpoint 77' |
| 406 | count: 77 |
| 407 | digest: '28cd0f7181f891e138c3cc43f14b7e826eff9dea465cdfe948d31d88' |
| 408 | }, |
| 409 | MonteTestCase{ |
| 410 | name: 'checkpoint 78' |
| 411 | count: 78 |
| 412 | digest: 'd3eefb1a85d7ade8278706aec0c0c2b889004ca386278fe466605d2d' |
| 413 | }, |
| 414 | MonteTestCase{ |
| 415 | name: 'checkpoint 79' |
| 416 | count: 79 |
| 417 | digest: 'bbcf4c4b31af3a6ea82d23907fe71bdaf5ae4db1446fe28fabf01145' |
| 418 | }, |
| 419 | MonteTestCase{ |
| 420 | name: 'checkpoint 80' |
| 421 | count: 80 |
| 422 | digest: '1f8354c43cb18715125c504ea1bff73e4e95c64fbc19e850468924a3' |
| 423 | }, |
| 424 | MonteTestCase{ |
| 425 | name: 'checkpoint 81' |
| 426 | count: 81 |
| 427 | digest: 'd3a57114d5572427096478d26162d7cebbbe6b99cb06234327b21ef9' |
| 428 | }, |
| 429 | MonteTestCase{ |
| 430 | name: 'checkpoint 82' |
| 431 | count: 82 |
| 432 | digest: '45b964bcdbde997f8b8de4a7617152a2f80b0333aeac6aa3e53901fd' |
| 433 | }, |
| 434 | MonteTestCase{ |
| 435 | name: 'checkpoint 83' |
| 436 | count: 83 |
| 437 | digest: '2fad09cb0e93263548120115972110979eec7ef94e303c462223005d' |
| 438 | }, |
| 439 | MonteTestCase{ |
| 440 | name: 'checkpoint 84' |
| 441 | count: 84 |
| 442 | digest: '6680932f0332b4c0ccb708d4bf351af23bb05b6fb8c36b458efa46f3' |
| 443 | }, |
| 444 | MonteTestCase{ |
| 445 | name: 'checkpoint 85' |
| 446 | count: 85 |
| 447 | digest: '1076a4637cc36c9f5c2fff3700362a9d62cda3596be7b5e7f244fff1' |
| 448 | }, |
| 449 | MonteTestCase{ |
| 450 | name: 'checkpoint 86' |
| 451 | count: 86 |
| 452 | digest: '0a819369c413d8d20195fa16660b320988357d63c1a94602eb117377' |
| 453 | }, |
| 454 | MonteTestCase{ |
| 455 | name: 'checkpoint 87' |
| 456 | count: 87 |
| 457 | digest: '397fcc30577bc5327a8cf9284cc64a02700f1b2f2d1ca8a1506b9916' |
| 458 | }, |
| 459 | MonteTestCase{ |
| 460 | name: 'checkpoint 88' |
| 461 | count: 88 |
| 462 | digest: '217be1548b8d99bb1080ea0f3995be3c6494c91235fbf3a6d854a08e' |
| 463 | }, |
| 464 | MonteTestCase{ |
| 465 | name: 'checkpoint 89' |
| 466 | count: 89 |
| 467 | digest: 'ddcc841fd03e9d942f886657b0feb522682979e836307f68f4f19843' |
| 468 | }, |
| 469 | MonteTestCase{ |
| 470 | name: 'checkpoint 90' |
| 471 | count: 90 |
| 472 | digest: '4a33efa590ee444c75b6a4530a0fedd9987661199ccded49e40bc8b0' |
| 473 | }, |
| 474 | MonteTestCase{ |
| 475 | name: 'checkpoint 91' |
| 476 | count: 91 |
| 477 | digest: '970a4a3334796b06cb0ba8014eca67bbc471dbcea0efbcb22c666b2e' |
| 478 | }, |
| 479 | MonteTestCase{ |
| 480 | name: 'checkpoint 92' |
| 481 | count: 92 |
| 482 | digest: 'a7630df9688bbc66ceac6ae4a3a549513e427f5dc0f55ad2696b021a' |
| 483 | }, |
| 484 | MonteTestCase{ |
| 485 | name: 'checkpoint 93' |
| 486 | count: 93 |
| 487 | digest: 'd63c202d5feab56898d8eb793115a8ac216ea1b163a967eb119367fc' |
| 488 | }, |
| 489 | MonteTestCase{ |
| 490 | name: 'checkpoint 94' |
| 491 | count: 94 |
| 492 | digest: '0dec4d35fa7737c2d93d901a0556ce3cb357224d3caa25dec8095a05' |
| 493 | }, |
| 494 | MonteTestCase{ |
| 495 | name: 'checkpoint 95' |
| 496 | count: 95 |
| 497 | digest: 'c40b609646eef457dea98eb32f45ee1f0af31658d742680bdb784f53' |
| 498 | }, |
| 499 | MonteTestCase{ |
| 500 | name: 'checkpoint 96' |
| 501 | count: 96 |
| 502 | digest: '1b2a12a3bc4403a1bebfc1358cb2844c56215ae413ed6df10fe2f8d3' |
| 503 | }, |
| 504 | MonteTestCase{ |
| 505 | name: 'checkpoint 97' |
| 506 | count: 97 |
| 507 | digest: '8342cbc0b0e8c270134a7907448037e07201150f0891b20dcf20867c' |
| 508 | }, |
| 509 | MonteTestCase{ |
| 510 | name: 'checkpoint 98' |
| 511 | count: 98 |
| 512 | digest: 'a09ed66100b982070edecb5af45ac354759778134098ca3c0bf67b05' |
| 513 | }, |
| 514 | MonteTestCase{ |
| 515 | name: 'checkpoint 99' |
| 516 | count: 99 |
| 517 | digest: '5d8fc89761e82efe7188596a52eb43efd9492038bbc47bc0df5e9843' |
| 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_224(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 | |