| ... | ... | @@ -474,6 +474,9 @@ test "blake2b384 single" { |
| 474 | 474 | |
| 475 | 475 | const h3 = "b7c81b228b6bd912930e8f0b5387989691c1cee1e65aade4da3b86a3c9f678fc8018f6ed9e2906720c8d2a3aeda9c03d"; |
| 476 | 476 | htest.assertEqualHash(Blake2b384, h3, "The quick brown fox jumps over the lazy dog"); |
| 477 | |
| 478 | const h4 = "b7283f0172fecbbd7eca32ce10d8a6c06b453cb3cf675b33eb4246f0da2bb94a6c0bdd6eec0b5fd71ec4fd51be80bf4c"; |
| 479 | htest.assertEqualHash(Blake2b384, h4, "a" ** 64 ++ "b" ** 64); |
| 477 | 480 | } |
| 478 | 481 | |
| 479 | 482 | test "blake2b384 streaming" { |
| ... | ... | @@ -498,6 +501,34 @@ test "blake2b384 streaming" { |
| 498 | 501 | h.update("c"); |
| 499 | 502 | h.final(out[0..]); |
| 500 | 503 | htest.assertEqual(h2, out[0..]); |
| 504 | |
| 505 | const h3 = "b7283f0172fecbbd7eca32ce10d8a6c06b453cb3cf675b33eb4246f0da2bb94a6c0bdd6eec0b5fd71ec4fd51be80bf4c"; |
| 506 | |
| 507 | h.reset(); |
| 508 | h.update("a" ** 64 ++ "b" ** 64); |
| 509 | h.final(out[0..]); |
| 510 | htest.assertEqual(h3, out[0..]); |
| 511 | |
| 512 | h.reset(); |
| 513 | h.update("a" ** 64); |
| 514 | h.update("b" ** 64); |
| 515 | h.final(out[0..]); |
| 516 | htest.assertEqual(h3, out[0..]); |
| 517 | } |
| 518 | |
| 519 | test "blake2b384 aligned final" { |
| 520 | var block = [_]u8{0} ** Blake2b384.block_length; |
| 521 | var out: [Blake2b384.digest_length]u8 = undefined; |
| 522 | |
| 523 | const h1 = "e8aa1931ea0422e4446fecdd25c16cf35c240b10cb4659dd5c776eddcaa4d922397a589404b46eb2e53d78132d05fd7d"; |
| 524 | |
| 525 | htest.assertEqualHash(Blake2b384, h1, block[0..]); |
| 526 | |
| 527 | var h = Blake2b384.init(); |
| 528 | h.update(&block); |
| 529 | h.final(out[0..]); |
| 530 | |
| 531 | htest.assertEqual(h1, out[0..]); |
| 501 | 532 | } |
| 502 | 533 | |
| 503 | 534 | test "blake2b512 single" { |
| ... | ... | @@ -509,6 +540,9 @@ test "blake2b512 single" { |
| 509 | 540 | |
| 510 | 541 | const h3 = "a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918"; |
| 511 | 542 | htest.assertEqualHash(Blake2b512, h3, "The quick brown fox jumps over the lazy dog"); |
| 543 | |
| 544 | const h4 = "049980af04d6a2cf16b4b49793c3ed7e40732073788806f2c989ebe9547bda0541d63abe298ec8955d08af48ae731f2e8a0bd6d201655a5473b4aa79d211b920"; |
| 545 | htest.assertEqualHash(Blake2b512, h4, "a" ** 64 ++ "b" ** 64); |
| 512 | 546 | } |
| 513 | 547 | |
| 514 | 548 | test "blake2b512 streaming" { |
| ... | ... | @@ -533,13 +567,32 @@ test "blake2b512 streaming" { |
| 533 | 567 | h.update("c"); |
| 534 | 568 | h.final(out[0..]); |
| 535 | 569 | htest.assertEqual(h2, out[0..]); |
| 570 | |
| 571 | const h3 = "049980af04d6a2cf16b4b49793c3ed7e40732073788806f2c989ebe9547bda0541d63abe298ec8955d08af48ae731f2e8a0bd6d201655a5473b4aa79d211b920"; |
| 572 | |
| 573 | h.reset(); |
| 574 | h.update("a" ** 64 ++ "b" ** 64); |
| 575 | h.final(out[0..]); |
| 576 | htest.assertEqual(h3, out[0..]); |
| 577 | |
| 578 | h.reset(); |
| 579 | h.update("a" ** 64); |
| 580 | h.update("b" ** 64); |
| 581 | h.final(out[0..]); |
| 582 | htest.assertEqual(h3, out[0..]); |
| 536 | 583 | } |
| 537 | 584 | |
| 538 | 585 | test "blake2b512 aligned final" { |
| 539 | 586 | var block = [_]u8{0} ** Blake2b512.block_length; |
| 540 | 587 | var out: [Blake2b512.digest_length]u8 = undefined; |
| 541 | 588 | |
| 589 | const h1 = "865939e120e6805438478841afb739ae4250cf372653078a065cdcfffca4caf798e6d462b65d658fc165782640eded70963449ae1500fb0f24981d7727e22c41"; |
| 590 | |
| 591 | htest.assertEqualHash(Blake2b512, h1, block[0..]); |
| 592 | |
| 542 | 593 | var h = Blake2b512.init(); |
| 543 | 594 | h.update(&block); |
| 544 | 595 | h.final(out[0..]); |
| 596 | |
| 597 | htest.assertEqual(h1, out[0..]); |
| 545 | 598 | } |