| 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 SHA224, the test vectors come from: |
| 6 | // SHA224Monte.rsp |
| 7 | import crypto.sha256 |
| 8 | import encoding.hex |
| 9 | |
| 10 | const seed = 'ed2b70d575d9d0b4196ae84a03eed940057ea89cdd729b95b7d4e6a5' |
| 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: 'cd94d7da13c030208b2d0d78fcfe9ea22fa8906df66aa9a1f42afa70' |
| 23 | }, |
| 24 | MonteTestCase{ |
| 25 | name: 'checkpoint 1' |
| 26 | count: 1 |
| 27 | digest: '555846e884633639565d5e0c01dd93ba58edb01ee18e68ccca28f7b8' |
| 28 | }, |
| 29 | MonteTestCase{ |
| 30 | name: 'checkpoint 2' |
| 31 | count: 2 |
| 32 | digest: '44d5f4a179b33231f24cc209ed2542ddb931391f2a2d604f80ed460b' |
| 33 | }, |
| 34 | MonteTestCase{ |
| 35 | name: 'checkpoint 3' |
| 36 | count: 3 |
| 37 | digest: '18678e3c151f05f92a89fc5b2ec56bfc6fafa66d73ffc1937fcab4d0' |
| 38 | }, |
| 39 | MonteTestCase{ |
| 40 | name: 'checkpoint 4' |
| 41 | count: 4 |
| 42 | digest: 'b285f829b0499ff45f8454eda2d4e0997b3f438c2728f1a25cfbb05a' |
| 43 | }, |
| 44 | MonteTestCase{ |
| 45 | name: 'checkpoint 5' |
| 46 | count: 5 |
| 47 | digest: '206d442c6605be0e675b0efc76243c2f18f2260a93375fb36e469631' |
| 48 | }, |
| 49 | MonteTestCase{ |
| 50 | name: 'checkpoint 6' |
| 51 | count: 6 |
| 52 | digest: '1cd8ea34d8483b6a513c52a74e416bac2f322bbaeee02c6b0b05a781' |
| 53 | }, |
| 54 | MonteTestCase{ |
| 55 | name: 'checkpoint 7' |
| 56 | count: 7 |
| 57 | digest: '00cee48001fe8442ef39c3433ed05473179f34205d337940d4bfd3cd' |
| 58 | }, |
| 59 | MonteTestCase{ |
| 60 | name: 'checkpoint 8' |
| 61 | count: 8 |
| 62 | digest: 'ead3ad27819401912bc9abfdb50037672a3aed0e94fbaa1cc0560621' |
| 63 | }, |
| 64 | MonteTestCase{ |
| 65 | name: 'checkpoint 9' |
| 66 | count: 9 |
| 67 | digest: '8f4dd5aef9cea829d8802ffcced2e8ed6b48ac23bbfbb0fae2fad0fd' |
| 68 | }, |
| 69 | MonteTestCase{ |
| 70 | name: 'checkpoint 10' |
| 71 | count: 10 |
| 72 | digest: '03aeb918feab459e39af29ff3aaf406088bf06d793338bbd563641a2' |
| 73 | }, |
| 74 | MonteTestCase{ |
| 75 | name: 'checkpoint 11' |
| 76 | count: 11 |
| 77 | digest: 'de80c312b153fbd7241c8bc432d1ed253d26dcc6f458b953ac2d9259' |
| 78 | }, |
| 79 | MonteTestCase{ |
| 80 | name: 'checkpoint 12' |
| 81 | count: 12 |
| 82 | digest: '3eb8d347cc2565ddd71f7fc21cff7eb3a2cf8e85c5e1d4c751f69f26' |
| 83 | }, |
| 84 | MonteTestCase{ |
| 85 | name: 'checkpoint 13' |
| 86 | count: 13 |
| 87 | digest: 'dbfd7033a4f884ecf7053f07b4c51f3efb1c09084cc7bbe667196a3e' |
| 88 | }, |
| 89 | MonteTestCase{ |
| 90 | name: 'checkpoint 14' |
| 91 | count: 14 |
| 92 | digest: '5323fc60310fe29900eb7a500f29897001c37945c5f8849674725553' |
| 93 | }, |
| 94 | MonteTestCase{ |
| 95 | name: 'checkpoint 15' |
| 96 | count: 15 |
| 97 | digest: 'c3d9416549bebebf679c0122a9c5bb86c0b514c6a4e9eda1e9782040' |
| 98 | }, |
| 99 | MonteTestCase{ |
| 100 | name: 'checkpoint 16' |
| 101 | count: 16 |
| 102 | digest: '749fc9c8c21957ddcaf5eff69c297284d722c79be1fc6c910495a586' |
| 103 | }, |
| 104 | MonteTestCase{ |
| 105 | name: 'checkpoint 17' |
| 106 | count: 17 |
| 107 | digest: 'aa307d91c4037372ff0ca60eb17ec8f1faba862601b95754783ea808' |
| 108 | }, |
| 109 | MonteTestCase{ |
| 110 | name: 'checkpoint 18' |
| 111 | count: 18 |
| 112 | digest: '071e361909c38791e941d995b0b25a3294bdf39456cc012806ada3c5' |
| 113 | }, |
| 114 | MonteTestCase{ |
| 115 | name: 'checkpoint 19' |
| 116 | count: 19 |
| 117 | digest: '18751a765f3b06fc2c9a1888d4bb78b2d2226799a54dba72b5429f25' |
| 118 | }, |
| 119 | MonteTestCase{ |
| 120 | name: 'checkpoint 20' |
| 121 | count: 20 |
| 122 | digest: '54b39c96f6377e3fc2ae0ba4ec89049a6c04808da3fa0415c9053ce4' |
| 123 | }, |
| 124 | MonteTestCase{ |
| 125 | name: 'checkpoint 21' |
| 126 | count: 21 |
| 127 | digest: '58c1eda7eab2fc4046ae153ee95de5df036dbba25b9bb5c5428ea882' |
| 128 | }, |
| 129 | MonteTestCase{ |
| 130 | name: 'checkpoint 22' |
| 131 | count: 22 |
| 132 | digest: '3a02eaf55d04b6052b7d79b96d1e316f90f5dbbb3217dbfaea55faef' |
| 133 | }, |
| 134 | MonteTestCase{ |
| 135 | name: 'checkpoint 23' |
| 136 | count: 23 |
| 137 | digest: 'c8b5eac17f450458c60c075a8f75a24a1dbc58247fcd0ccfaf03e446' |
| 138 | }, |
| 139 | MonteTestCase{ |
| 140 | name: 'checkpoint 24' |
| 141 | count: 24 |
| 142 | digest: '53084cacfebbc4d1ff2db614b42714c18ddde36c6b7c2fbc3b1a8706' |
| 143 | }, |
| 144 | MonteTestCase{ |
| 145 | name: 'checkpoint 25' |
| 146 | count: 25 |
| 147 | digest: '528b867aa481d42fc4931a47d24c3c905aaafa8f6dd5820c67d3579c' |
| 148 | }, |
| 149 | MonteTestCase{ |
| 150 | name: 'checkpoint 26' |
| 151 | count: 26 |
| 152 | digest: 'f0a3cd3f53eb72df80ab67d264a973b6bb2f58bde8f636d9100e8864' |
| 153 | }, |
| 154 | MonteTestCase{ |
| 155 | name: 'checkpoint 27' |
| 156 | count: 27 |
| 157 | digest: '7912f20299d803ba917f408a5a59822d147bcd1008ad5c7b678e2390' |
| 158 | }, |
| 159 | MonteTestCase{ |
| 160 | name: 'checkpoint 28' |
| 161 | count: 28 |
| 162 | digest: '6f0e49505c15669302133d66e45d192e0c6ad02fc5b9aa128aa5517a' |
| 163 | }, |
| 164 | MonteTestCase{ |
| 165 | name: 'checkpoint 29' |
| 166 | count: 29 |
| 167 | digest: 'd06aed0f18e6c377174fd00cc74a92020b3df218c376eac0501a094a' |
| 168 | }, |
| 169 | MonteTestCase{ |
| 170 | name: 'checkpoint 30' |
| 171 | count: 30 |
| 172 | digest: 'cb1bbf7cc5dad591d32534c570e5bca93b8952832779dd6e0ccdc91c' |
| 173 | }, |
| 174 | MonteTestCase{ |
| 175 | name: 'checkpoint 31' |
| 176 | count: 31 |
| 177 | digest: '4775bc11834930118654a3e66e5b7f51871d6f5068f4305dc2845574' |
| 178 | }, |
| 179 | MonteTestCase{ |
| 180 | name: 'checkpoint 32' |
| 181 | count: 32 |
| 182 | digest: 'ce3b5703ed9f946ec4af62fade6e69c2751474ab8da570064ecd2ef6' |
| 183 | }, |
| 184 | MonteTestCase{ |
| 185 | name: 'checkpoint 33' |
| 186 | count: 33 |
| 187 | digest: '49a9e1aa84700874ac27eee43f193df69ed6718b131c4854f729a32e' |
| 188 | }, |
| 189 | MonteTestCase{ |
| 190 | name: 'checkpoint 34' |
| 191 | count: 34 |
| 192 | digest: 'd2c6592251a27cae7d819ac7b476c8a2ff608e57b018f79e0cf19b87' |
| 193 | }, |
| 194 | MonteTestCase{ |
| 195 | name: 'checkpoint 35' |
| 196 | count: 35 |
| 197 | digest: 'a861be4fe188858b913aad179ba575cec91bed54c1ca27608daa27dc' |
| 198 | }, |
| 199 | MonteTestCase{ |
| 200 | name: 'checkpoint 36' |
| 201 | count: 36 |
| 202 | digest: 'bf7975e63aa7f1bef84e7446f1c4a00a75c13285fd7c4a7a8318b1cf' |
| 203 | }, |
| 204 | MonteTestCase{ |
| 205 | name: 'checkpoint 37' |
| 206 | count: 37 |
| 207 | digest: '5d125b14e966c9e431bdc5592d3e6305fae678dc5d6dd064fa1345f9' |
| 208 | }, |
| 209 | MonteTestCase{ |
| 210 | name: 'checkpoint 38' |
| 211 | count: 38 |
| 212 | digest: '8c0fbb471404371145dbb66e8b1c6fc428e6dcfa263e3f5ddb47b30d' |
| 213 | }, |
| 214 | MonteTestCase{ |
| 215 | name: 'checkpoint 39' |
| 216 | count: 39 |
| 217 | digest: '7148b69b04457296fca18e6f7b7f2145d9af9e6bc8f48b8571af0e53' |
| 218 | }, |
| 219 | MonteTestCase{ |
| 220 | name: 'checkpoint 40' |
| 221 | count: 40 |
| 222 | digest: '0bd47a04fc42fb3d9643496e5b0719c22262f741e862adfcef91d61c' |
| 223 | }, |
| 224 | MonteTestCase{ |
| 225 | name: 'checkpoint 41' |
| 226 | count: 41 |
| 227 | digest: '3dbb14133351e5d4bc885d9594c07f7f0f99d4a7c745eff3e7aadc2c' |
| 228 | }, |
| 229 | MonteTestCase{ |
| 230 | name: 'checkpoint 42' |
| 231 | count: 42 |
| 232 | digest: '94f6ba7f94ba9903f7e9bde9b131353fce560c7de7159458f1a39cfa' |
| 233 | }, |
| 234 | MonteTestCase{ |
| 235 | name: 'checkpoint 43' |
| 236 | count: 43 |
| 237 | digest: '65fc03fabbf57904f572358c20f004aa16e0b5ae6530fa961ea10b9d' |
| 238 | }, |
| 239 | MonteTestCase{ |
| 240 | name: 'checkpoint 44' |
| 241 | count: 44 |
| 242 | digest: 'e46532e3e4bd0a0cb389abfba5d679e916a7c193324f1bac498ee1ee' |
| 243 | }, |
| 244 | MonteTestCase{ |
| 245 | name: 'checkpoint 45' |
| 246 | count: 45 |
| 247 | digest: '131d096c684345311cff958706eded139676a74d97a1beb861998485' |
| 248 | }, |
| 249 | MonteTestCase{ |
| 250 | name: 'checkpoint 46' |
| 251 | count: 46 |
| 252 | digest: 'fe3e03637088ac8ee2e035bfc1e7f4e944304663c832c26089e85f9f' |
| 253 | }, |
| 254 | MonteTestCase{ |
| 255 | name: 'checkpoint 47' |
| 256 | count: 47 |
| 257 | digest: 'd570c2b7040fc721b41f2d213f6ee87ac1e37f2b86526cf46c699aa7' |
| 258 | }, |
| 259 | MonteTestCase{ |
| 260 | name: 'checkpoint 48' |
| 261 | count: 48 |
| 262 | digest: '82ede72ad163b914be7c22c085cd99438b6d5557ddd3b752f0a9fb7b' |
| 263 | }, |
| 264 | MonteTestCase{ |
| 265 | name: 'checkpoint 49' |
| 266 | count: 49 |
| 267 | digest: '343c21a0cbde3cccdbbd66eee32c50f5a54b0ac267ec3f41ec07a67f' |
| 268 | }, |
| 269 | MonteTestCase{ |
| 270 | name: 'checkpoint 50' |
| 271 | count: 50 |
| 272 | digest: '94ad254f3b4a76f6140d0dd3775bd75eb3c081085fcb76c91b4cca92' |
| 273 | }, |
| 274 | MonteTestCase{ |
| 275 | name: 'checkpoint 51' |
| 276 | count: 51 |
| 277 | digest: '65fa84f358bc32caaff799129bc2cad883636826415703a2dd1a3cbe' |
| 278 | }, |
| 279 | MonteTestCase{ |
| 280 | name: 'checkpoint 52' |
| 281 | count: 52 |
| 282 | digest: '1c2f47c532856198d03dd85275357dce085c8f6c5a871aac4ff4ea28' |
| 283 | }, |
| 284 | MonteTestCase{ |
| 285 | name: 'checkpoint 53' |
| 286 | count: 53 |
| 287 | digest: '1d51c1019131b41a076cc603f4a8e56b2f4ee70dba326af30d926827' |
| 288 | }, |
| 289 | MonteTestCase{ |
| 290 | name: 'checkpoint 54' |
| 291 | count: 54 |
| 292 | digest: '9789daba3a8e9702d2d0b319878f88b08ebc5876dd5dff6414bf1922' |
| 293 | }, |
| 294 | MonteTestCase{ |
| 295 | name: 'checkpoint 55' |
| 296 | count: 55 |
| 297 | digest: '1968789785f1ef61f849bcb29fbc1491c006021f729718e72f29b80d' |
| 298 | }, |
| 299 | MonteTestCase{ |
| 300 | name: 'checkpoint 56' |
| 301 | count: 56 |
| 302 | digest: '62dca9550461f8a85e1abca4192a8a55a6e6663ebcda9ba6fb95f10c' |
| 303 | }, |
| 304 | MonteTestCase{ |
| 305 | name: 'checkpoint 57' |
| 306 | count: 57 |
| 307 | digest: 'ee190aa251c1a2ae0a376b4c6b6ab3bb09f743fa01eafaab68d170e3' |
| 308 | }, |
| 309 | MonteTestCase{ |
| 310 | name: 'checkpoint 58' |
| 311 | count: 58 |
| 312 | digest: '02273be94aaaf4a1d22496821e8abda8c418d3a4c278947c27d6c912' |
| 313 | }, |
| 314 | MonteTestCase{ |
| 315 | name: 'checkpoint 59' |
| 316 | count: 59 |
| 317 | digest: '3998a213e392978a38016545a59bd435180da66d2b3da373088f406a' |
| 318 | }, |
| 319 | MonteTestCase{ |
| 320 | name: 'checkpoint 60' |
| 321 | count: 60 |
| 322 | digest: '7308f2145d345bdb01c38a9993a0ec81ed5164ed0c6caabfa3b23fea' |
| 323 | }, |
| 324 | MonteTestCase{ |
| 325 | name: 'checkpoint 61' |
| 326 | count: 61 |
| 327 | digest: '3ccde61f4734978995b7489bad8c1e6bafe03f7c3886e9b4ef0f1aa0' |
| 328 | }, |
| 329 | MonteTestCase{ |
| 330 | name: 'checkpoint 62' |
| 331 | count: 62 |
| 332 | digest: 'cca9745f59f3ae2bbb8d65d31c171aa33960c8c6fa4689bb7e6d2152' |
| 333 | }, |
| 334 | MonteTestCase{ |
| 335 | name: 'checkpoint 63' |
| 336 | count: 63 |
| 337 | digest: 'c976de72db46c1a254293af6093c563ce43232077c249584c016ff6f' |
| 338 | }, |
| 339 | MonteTestCase{ |
| 340 | name: 'checkpoint 64' |
| 341 | count: 64 |
| 342 | digest: 'f1448af3cfe317aff1470f0a3de7bf533d77dc7f55e8dd790fd57727' |
| 343 | }, |
| 344 | MonteTestCase{ |
| 345 | name: 'checkpoint 65' |
| 346 | count: 65 |
| 347 | digest: 'd4be0ccfe4913851c9636ed036c625524e72891c5c0627aae50288ce' |
| 348 | }, |
| 349 | MonteTestCase{ |
| 350 | name: 'checkpoint 66' |
| 351 | count: 66 |
| 352 | digest: '6bd99c53693d4e2467ba6094710a6d2f48cc2ae907c4ae28604586a1' |
| 353 | }, |
| 354 | MonteTestCase{ |
| 355 | name: 'checkpoint 67' |
| 356 | count: 67 |
| 357 | digest: '2eb4fa0872ede2a378386e40002cb00b4d1c2fca3413b944ed210915' |
| 358 | }, |
| 359 | MonteTestCase{ |
| 360 | name: 'checkpoint 68' |
| 361 | count: 68 |
| 362 | digest: '48b624151c9d3a1cc8e9d6665d42d4e640ac91abcd3556a31ff0250c' |
| 363 | }, |
| 364 | MonteTestCase{ |
| 365 | name: 'checkpoint 69' |
| 366 | count: 69 |
| 367 | digest: '31159840b7cb040d819ebee1ed0e52d09f5805be523cccc22eeacba9' |
| 368 | }, |
| 369 | MonteTestCase{ |
| 370 | name: 'checkpoint 70' |
| 371 | count: 70 |
| 372 | digest: 'f9a67791dcae0aea00f77f8536ddba439e9fcf7e5b1ed827f83818a8' |
| 373 | }, |
| 374 | MonteTestCase{ |
| 375 | name: 'checkpoint 71' |
| 376 | count: 71 |
| 377 | digest: 'a5913105fba645ba0df942da96d271a1d5efb923a4f61eb463450ea9' |
| 378 | }, |
| 379 | MonteTestCase{ |
| 380 | name: 'checkpoint 72' |
| 381 | count: 72 |
| 382 | digest: '6ece291f81eceaa9eb5a5e228c9924f165b8b10e2cf0e143dd5fe601' |
| 383 | }, |
| 384 | MonteTestCase{ |
| 385 | name: 'checkpoint 73' |
| 386 | count: 73 |
| 387 | digest: 'e07ab143f09eb8ad0d381b888adb22229c2e2a8b067e0fd012ef67a7' |
| 388 | }, |
| 389 | MonteTestCase{ |
| 390 | name: 'checkpoint 74' |
| 391 | count: 74 |
| 392 | digest: '88a33980be5bc911c1713d5c2bd2e5ecca7fc87879501aefa9722c89' |
| 393 | }, |
| 394 | MonteTestCase{ |
| 395 | name: 'checkpoint 75' |
| 396 | count: 75 |
| 397 | digest: 'a709d188da8ee187d91bd17069f785ebb379df013d78844a45b2bfe5' |
| 398 | }, |
| 399 | MonteTestCase{ |
| 400 | name: 'checkpoint 76' |
| 401 | count: 76 |
| 402 | digest: '306fa7bd696b3e9841f84d1c861712acba0febddd7a952499b96579e' |
| 403 | }, |
| 404 | MonteTestCase{ |
| 405 | name: 'checkpoint 77' |
| 406 | count: 77 |
| 407 | digest: '61341dee2e2869112bba2e1077fb409375f755dcafc1457bf49e0e8e' |
| 408 | }, |
| 409 | MonteTestCase{ |
| 410 | name: 'checkpoint 78' |
| 411 | count: 78 |
| 412 | digest: '0959a6e3b727c6213119b9e8411132b5819eb848bec6ebda0b75578a' |
| 413 | }, |
| 414 | MonteTestCase{ |
| 415 | name: 'checkpoint 79' |
| 416 | count: 79 |
| 417 | digest: '11cef0312aaedb9d0b26de64656406c8f4c358e6d3db459d364481de' |
| 418 | }, |
| 419 | MonteTestCase{ |
| 420 | name: 'checkpoint 80' |
| 421 | count: 80 |
| 422 | digest: '5de71b191eec70e591c22ebe3a5d2973aa3172f1c272e926cc0d4873' |
| 423 | }, |
| 424 | MonteTestCase{ |
| 425 | name: 'checkpoint 81' |
| 426 | count: 81 |
| 427 | digest: 'ab218bf4268aec9b41dd2db80622e4c0319cc0de12a60e06d80414ea' |
| 428 | }, |
| 429 | MonteTestCase{ |
| 430 | name: 'checkpoint 82' |
| 431 | count: 82 |
| 432 | digest: '5c83874afe6da0443abfbbbf8ceef38f9400b63593ee7a29d467b4f5' |
| 433 | }, |
| 434 | MonteTestCase{ |
| 435 | name: 'checkpoint 83' |
| 436 | count: 83 |
| 437 | digest: 'ba0fd01f699a0d00a0dff4c63f6ad19e9530a7ad11fec504e6481816' |
| 438 | }, |
| 439 | MonteTestCase{ |
| 440 | name: 'checkpoint 84' |
| 441 | count: 84 |
| 442 | digest: '835ec2c57424baaeed09a7c0c0b6e8bf9d1cec83de4c719846c990fb' |
| 443 | }, |
| 444 | MonteTestCase{ |
| 445 | name: 'checkpoint 85' |
| 446 | count: 85 |
| 447 | digest: '64d95f2c92343d8fca6f6914fba8814478850b5d4c2eb227f4ae6fa1' |
| 448 | }, |
| 449 | MonteTestCase{ |
| 450 | name: 'checkpoint 86' |
| 451 | count: 86 |
| 452 | digest: 'f8dd5355827ac4bd040fc05ed6cb2914d013f126487a6d5f2c22f767' |
| 453 | }, |
| 454 | MonteTestCase{ |
| 455 | name: 'checkpoint 87' |
| 456 | count: 87 |
| 457 | digest: 'be5bbf68d6b99749edefa6b113638ca5cf5fddfd8fcd4d719aeb54b5' |
| 458 | }, |
| 459 | MonteTestCase{ |
| 460 | name: 'checkpoint 88' |
| 461 | count: 88 |
| 462 | digest: '3434d03e98d0af69281e7a7ff8301369c5bc6166cd29b83397ad3fd7' |
| 463 | }, |
| 464 | MonteTestCase{ |
| 465 | name: 'checkpoint 89' |
| 466 | count: 89 |
| 467 | digest: '747b2a7cfb8c4fef7de0a08499f8b19f37e9161b855a84bd50ef84c5' |
| 468 | }, |
| 469 | MonteTestCase{ |
| 470 | name: 'checkpoint 90' |
| 471 | count: 90 |
| 472 | digest: 'c1c1fa2bbb10c5672b040ed0c33d4d93e0fd210d1373fc7fd2312c0c' |
| 473 | }, |
| 474 | MonteTestCase{ |
| 475 | name: 'checkpoint 91' |
| 476 | count: 91 |
| 477 | digest: '671f67380b7676ee7c9fbfe71f3807e3575745ec3ae3128420a141fd' |
| 478 | }, |
| 479 | MonteTestCase{ |
| 480 | name: 'checkpoint 92' |
| 481 | count: 92 |
| 482 | digest: 'e88394adf710b9764a448abc6d62928b0268c6b119306f3c93d7b6d2' |
| 483 | }, |
| 484 | MonteTestCase{ |
| 485 | name: 'checkpoint 93' |
| 486 | count: 93 |
| 487 | digest: '711cc90bfdeed121bd5a8629a9cba6df7bf8df89184ec64ee918cc67' |
| 488 | }, |
| 489 | MonteTestCase{ |
| 490 | name: 'checkpoint 94' |
| 491 | count: 94 |
| 492 | digest: '3f63432484eaa1f389d27947a84e256618f9bc81015993cac386887a' |
| 493 | }, |
| 494 | MonteTestCase{ |
| 495 | name: 'checkpoint 95' |
| 496 | count: 95 |
| 497 | digest: 'e00e0bf2a32227461230a065bbd2eeb5364277e83a850c53ef5c92e9' |
| 498 | }, |
| 499 | MonteTestCase{ |
| 500 | name: 'checkpoint 96' |
| 501 | count: 96 |
| 502 | digest: '1977311cea23a681c83dc58a6863e362bf6c02e30f4c9c4c8439ab4e' |
| 503 | }, |
| 504 | MonteTestCase{ |
| 505 | name: 'checkpoint 97' |
| 506 | count: 97 |
| 507 | digest: '2853a64f56c6282de53e30eba9418dd62eccb8c9a662c313b4768265' |
| 508 | }, |
| 509 | MonteTestCase{ |
| 510 | name: 'checkpoint 98' |
| 511 | count: 98 |
| 512 | digest: 'ca9d0a2eeb484b9809c3850f166362d893f951f5e93cc7a3c72522e0' |
| 513 | }, |
| 514 | MonteTestCase{ |
| 515 | name: 'checkpoint 99' |
| 516 | count: 99 |
| 517 | digest: '27033d2d89329ba9d2a39c0292552a5f1f945c115d5abf2064e93754' |
| 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 = sha256.sum224(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 | |