| 705 | |
| 706 | |
| 707 | int hmac_test() |
| 708 | { |
| 709 | HMAC<MD5> hmacMD5; |
| 710 | byte hash[MD5::DIGEST_SIZE]; |
| 711 | |
| 712 | const char* keys[]= |
| 713 | { |
| 714 | "\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b", |
| 715 | "Jefe", |
| 716 | "\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA" |
| 717 | }; |
| 718 | |
| 719 | testVector test_hmacMD5[] = |
| 720 | { |
| 721 | testVector("Hi There", |
| 722 | "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc" |
| 723 | "\x9d"), |
| 724 | testVector("what do ya want for nothing?", |
| 725 | "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7" |
| 726 | "\x38"), |
| 727 | testVector("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" |
| 728 | "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" |
| 729 | "\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD" |
| 730 | "\xDD\xDD\xDD\xDD\xDD\xDD", |
| 731 | "\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3" |
| 732 | "\xf6") |
| 733 | }; |
| 734 | |
| 735 | int times( sizeof(test_hmacMD5) / sizeof(testVector) ); |
| 736 | for (int i = 0; i < times; ++i) { |
| 737 | hmacMD5.SetKey((byte*)keys[i], (word32)strlen(keys[i])); |
| 738 | hmacMD5.Update(test_hmacMD5[i].input_, test_hmacMD5[i].inLen_); |
| 739 | hmacMD5.Final(hash); |
| 740 | |
| 741 | if (memcmp(hash, test_hmacMD5[i].output_, MD5::DIGEST_SIZE) != 0) |
| 742 | return -20 - i; |
| 743 | } |
| 744 | |
| 745 | return 0; |
| 746 | } |
| 747 | |
| 748 | |
| 749 | int arc4_test() |
no test coverage detected