| ... | @@ -474,6 +474,9 @@ test "blake2b384 single" { | ... | @@ -474,6 +474,9 @@ test "blake2b384 single" { |
| 474 | | 474 | |
| 475 | const h3 = "b7c81b228b6bd912930e8f0b5387989691c1cee1e65aade4da3b86a3c9f678fc8018f6ed9e2906720c8d2a3aeda9c03d"; | 475 | const h3 = "b7c81b228b6bd912930e8f0b5387989691c1cee1e65aade4da3b86a3c9f678fc8018f6ed9e2906720c8d2a3aeda9c03d"; |
| 476 | htest.assertEqualHash(Blake2b384, h3, "The quick brown fox jumps over the lazy dog"); | 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 | test "blake2b384 streaming" { | 482 | test "blake2b384 streaming" { |
| ... | @@ -498,6 +501,34 @@ test "blake2b384 streaming" { | ... | @@ -498,6 +501,34 @@ test "blake2b384 streaming" { |
| 498 | h.update("c"); | 501 | h.update("c"); |
| 499 | h.final(out[0..]); | 502 | h.final(out[0..]); |
| 500 | htest.assertEqual(h2, out[0..]); | 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 | test "blake2b512 single" { | 534 | test "blake2b512 single" { |
| ... | @@ -509,6 +540,9 @@ test "blake2b512 single" { | ... | @@ -509,6 +540,9 @@ test "blake2b512 single" { |
| 509 | | 540 | |
| 510 | const h3 = "a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918"; | 541 | const h3 = "a8add4bdddfd93e4877d2746e62817b116364a1fa7bc148d95090bc7333b3673f82401cf7aa2e4cb1ecd90296e3f14cb5413f8ed77be73045b13914cdcd6a918"; |
| 511 | htest.assertEqualHash(Blake2b512, h3, "The quick brown fox jumps over the lazy dog"); | 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 | test "blake2b512 streaming" { | 548 | test "blake2b512 streaming" { |
| ... | @@ -533,13 +567,32 @@ test "blake2b512 streaming" { | ... | @@ -533,13 +567,32 @@ test "blake2b512 streaming" { |
| 533 | h.update("c"); | 567 | h.update("c"); |
| 534 | h.final(out[0..]); | 568 | h.final(out[0..]); |
| 535 | htest.assertEqual(h2, out[0..]); | 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 | test "blake2b512 aligned final" { | 585 | test "blake2b512 aligned final" { |
| 539 | var block = [_]u8{0} ** Blake2b512.block_length; | 586 | var block = [_]u8{0} ** Blake2b512.block_length; |
| 540 | var out: [Blake2b512.digest_length]u8 = undefined; | 587 | var out: [Blake2b512.digest_length]u8 = undefined; |
| 541 | | 588 | |
| | 589 | const h1 = "865939e120e6805438478841afb739ae4250cf372653078a065cdcfffca4caf798e6d462b65d658fc165782640eded70963449ae1500fb0f24981d7727e22c41"; |
| | 590 | |
| | 591 | htest.assertEqualHash(Blake2b512, h1, block[0..]); |
| | 592 | |
| 542 | var h = Blake2b512.init(); | 593 | var h = Blake2b512.init(); |
| 543 | h.update(&block); | 594 | h.update(&block); |
| 544 | h.final(out[0..]); | 595 | h.final(out[0..]); |
| | 596 | |
| | 597 | htest.assertEqual(h1, out[0..]); |
| 545 | } | 598 | } |