add HMAC/SHA2 test vectors

fix cosmetic issues with test suite
pull/2/head
weidai 2010-08-08 07:29:51 +00:00
parent d938406410
commit 87a60d8825
4 changed files with 162 additions and 44 deletions

View File

@ -123,3 +123,159 @@ Key: r80 0xaa
Message: "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"
MAC: 0x69ea60798d71616cce5fd0871e23754cd75d5a0a
Test: Verify
AlgorithmType: MAC
Name: HMAC(SHA-224)
Source: RFC 4231
Comment: Test Case 1
Key: 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
Message: "Hi There"
MAC: 0x896fb1128abbdf196832107cd49df33f47b4b1169912ba4f53684b22
Test: Verify
Comment: Test Case 2
Key: "Jefe"
Message: "what do ya want for nothing?"
MAC: 0xa30e01098bc6dbbf45690f3a7e9e6d0f8bbea2a39e6148008fd05e44
Test: Verify
Comment: Test Case 3
Key: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Message: r50 0xdd
MAC: 0x7fb3cb3588c6c1f6ffa9694d7d6ad2649365b0c1f65d69d1ec8333ea
Test: Verify
Comment: Test Case 4
Key: 0x0102030405060708090a0b0c0d0e0f10111213141516171819
Message: r50 0xcd
MAC: 0x6c11506874013cac6a2abc1bb382627cec6a90d86efc012de7afec5a
Test: Verify
Comment: Test Case 5
Key: 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
Message: "Test With Truncation"
MAC: 0x0e2aea68a90c8d37c988bcdb9fca6fa8
Test: VerifyTruncated
Comment: Test Case 6
Key: r131 0xaa
Message: "Test Using Larger Than Block-Size Key - Hash Key First"
MAC: 0x95e9a0db962095adaebe9b2d6f0dbce2d499f112f2d2b7273fa6870e
Test: Verify
Comment: Test Case 7
Key: r131 0xaa
Message: "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.")
MAC: 0x3a854166ac5d9f023f54d517d0b39dbd946770db9c2b95c9f6f565d1
Test: Verify
AlgorithmType: MAC
Name: HMAC(SHA-256)
Source: RFC 4231
Comment: Test Case 1
Key: 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
Message: "Hi There"
MAC: b0344c61d8db38535ca8afceaf0bf12b881dc200c9833da726e9376c2e32cff7
Test: Verify
Comment: Test Case 2
Key: "Jefe"
Message: "what do ya want for nothing?"
MAC: 5bdcc146bf60754e6a042426089575c75a003f089d2739839dec58b964ec3843
Test: Verify
Comment: Test Case 3
Key: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Message: r50 0xdd
MAC: 773ea91e36800e46854db8ebd09181a72959098b3ef8c122d9635514ced565fe
Test: Verify
Comment: Test Case 4
Key: 0x0102030405060708090a0b0c0d0e0f10111213141516171819
Message: r50 0xcd
MAC: 82558a389a443c0ea4cc819899f2083a85f0faa3e578f8077a2e3ff46729665b
Test: Verify
Comment: Test Case 5
Key: 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
Message: "Test With Truncation"
MAC: a3b6167473100ee06e0c796c2955552b
Test: VerifyTruncated
Comment: Test Case 6
Key: r131 0xaa
Message: "Test Using Larger Than Block-Size Key - Hash Key First"
MAC: 60e431591ee0b67f0d8a26aacbf5b77f8e0bc6213728c5140546040f0ee37f54
Test: Verify
Comment: Test Case 7
Key: r131 0xaa
Message: "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.")
MAC: 9b09ffa71b942fcb27635fbcd5b0e944bfdc63644f0713938a7f51535c3a35e2
Test: Verify
AlgorithmType: MAC
Name: HMAC(SHA-384)
Source: RFC 4231
Comment: Test Case 1
Key: 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
Message: "Hi There"
MAC: afd03944d84895626b0825f4ab46907f15f9dadbe4101ec682aa034c7cebc59cfaea9ea9076ede7f4af152e8b2fa9cb6
Test: Verify
Comment: Test Case 2
Key: "Jefe"
Message: "what do ya want for nothing?"
MAC: af45d2e376484031617f78d2b58a6b1b9c7ef464f5a01b47e42ec3736322445e8e2240ca5e69e2c78b3239ecfab21649
Test: Verify
Comment: Test Case 3
Key: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Message: r50 0xdd
MAC: 88062608d3e6ad8a0aa2ace014c8a86f0aa635d947ac9febe83ef4e55966144b2a5ab39dc13814b94e3ab6e101a34f27
Test: Verify
Comment: Test Case 4
Key: 0x0102030405060708090a0b0c0d0e0f10111213141516171819
Message: r50 0xcd
MAC: 3e8a69b7783c25851933ab6290af6ca77a9981480850009cc5577c6e1f573b4e6801dd23c4a7d679ccf8a386c674cffb
Test: Verify
Comment: Test Case 5
Key: 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
Message: "Test With Truncation"
MAC: 3abf34c3503b2a23a46efc619baef897
Test: VerifyTruncated
Comment: Test Case 6
Key: r131 0xaa
Message: "Test Using Larger Than Block-Size Key - Hash Key First"
MAC: 4ece084485813e9088d2c63a041bc5b44f9ef1012a2b588f3cd11f05033ac4c60c2ef6ab4030fe8296248df163f44952
Test: Verify
Comment: Test Case 7
Key: r131 0xaa
Message: "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.")
MAC: 6617178e941f020d351e2f254e8fd32c602420feb0b8fb9adccebb82461e99c5a678cc31e799176d3860e6110c46523e
Test: Verify
AlgorithmType: MAC
Name: HMAC(SHA-512)
Source: RFC 4231
Comment: Test Case 1
Key: 0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
Message: "Hi There"
MAC: 87aa7cdea5ef619d4ff0b4241a1d6cb02379f4e2ce4ec2787ad0b30545e17cdedaa833b7d6b8a702038b274eaea3f4e4be9d914eeb61f1702e696c203a126854
Test: Verify
Comment: Test Case 2
Key: "Jefe"
Message: "what do ya want for nothing?"
MAC: 164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737
Test: Verify
Comment: Test Case 3
Key: 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Message: r50 0xdd
MAC: fa73b0089d56a284efb0f0756c890be9b1b5dbdd8ee81a3655f83e33b2279d39bf3e848279a722c806b485a47e67c807b946a337bee8942674278859e13292fb
Test: Verify
Comment: Test Case 4
Key: 0x0102030405060708090a0b0c0d0e0f10111213141516171819
Message: r50 0xcd
MAC: b0ba465637458c6990e5a8c5f61d4af7e576d97ff94b872de76f8050361ee3dba91ca5c11aa25eb4d679275cc5788063a5f19741120c4f2de2adebeb10a298dd
Test: Verify
Comment: Test Case 5
Key: 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
Message: "Test With Truncation"
MAC: 415fad6271580a531d4179bc891d87a6
Test: VerifyTruncated
Comment: Test Case 6
Key: r131 0xaa
Message: "Test Using Larger Than Block-Size Key - Hash Key First"
MAC: 80b24263c7c1a3ebb71493c1dd7be8b49b46d1f41b4aeec1121b013783f8f3526b56d037e05f2598bd0fd2215d6a1e5295e64f73f63f0aec8b915a985d786598
Test: Verify
Comment: Test Case 7
Key: r131 0xaa
Message: "This is a test using a larger than block-size key and a larger than block-size data. The key needs to be hashed before being used by the HMAC algorithm.")
MAC: e37b6a775dc87dbaa4dfa9f96e5e3ffddebd71f8867289865df5a32d20cdc944b6022cac3c4982b10d5eeb55c3e4de15134676fb6de0446065c97440fa8c6a58
Test: Verify

View File

@ -745,7 +745,7 @@ bool RunTestDataFile(const char *filename, const NameValuePairs &overrideParamet
{
unsigned int totalTests = 0, failedTests = 0;
TestDataFile(filename, overrideParameters, totalTests, failedTests);
cout << "\nTests complete. Total tests = " << totalTests << ". Failed tests = " << failedTests << ".\n";
cout << dec << "\nTests complete. Total tests = " << totalTests << ". Failed tests = " << failedTests << ".\n";
if (failedTests != 0)
cout << "SOME TESTS FAILED!\n";
return failedTests == 0;

View File

@ -76,6 +76,10 @@ void RegisterFactories()
RegisterDefaultFactoryFor<MessageAuthenticationCode, HMAC<Weak::MD5> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, HMAC<SHA1> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, HMAC<RIPEMD160> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, HMAC<SHA224> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, HMAC<SHA256> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, HMAC<SHA384> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, HMAC<SHA512> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, TTMAC>();
RegisterDefaultFactoryFor<MessageAuthenticationCode, VMAC<AES> >();
RegisterDefaultFactoryFor<MessageAuthenticationCode, VMAC<AES, 64> >();

View File

@ -321,15 +321,11 @@ bool ValidateHAVAL()
bool ValidatePanama()
{
cout << "\nPanama validation suite running...\n";
return RunTestDataFile("TestVectors/panama.txt");
}
bool ValidateWhirlpool()
{
cout << "\nWhirlpool Hash Function validation suite running...\n";
return RunTestDataFile("TestVectors/whrlpool.txt");
}
@ -397,45 +393,7 @@ bool ValidateMD5MAC()
bool ValidateHMAC()
{
typedef HMAC<Weak::MD5> HMAC_MD5;
const char* keys[]=
{
"\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b\x0b",
"Jefe",
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA",
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
"\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA\xAA"
};
HashTestTuple testSet[] =
{
HashTestTuple("Hi There", "\x92\x94\x72\x7a\x36\x38\xbb\x1c\x13\xf4\x8e\xf8\x15\x8b\xfc\x9d"),
HashTestTuple("what do ya want for nothing?", "\x75\x0c\x78\x3e\x6a\xb0\xb5\x03\xea\xa8\x6e\x31\x0a\x5d\xb7\x38"),
HashTestTuple("\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD\xDD",
"\x56\xbe\x34\x52\x1d\x14\x4c\x88\xdb\xb8\xc7\x33\xf0\xe8\xb3\xf6"),
HashTestTuple("Test Using Larger Than Block-Size Key - Hash Key First", "\x6b\x1a\xb7\xfe\x4b\xd7\xbf\x8f\x0b\x62\xe6\xce\x61\xb9\xd0\xcd")
};
bool pass=true;
cout << "\nHMAC/MD5 validation suite running...\n";
for (int k=0; k<4; k++)
{
HMAC_MD5 mac((byte *)keys[k], strlen(keys[k]));
cout << "\nKEY: ";
for (int j=0; keys[k][j] != 0; j++)
cout << setw(2) << setfill('0') << hex << (int)(byte)keys[k][j];
cout << endl;
pass = HashModuleTest(mac, testSet+k, 1) && pass;
}
return pass;
return RunTestDataFile("TestVectors/hmac.txt");
}
#ifdef CRYPTOPP_REMOVED