forked from wolfSSL/wolfssl
added HMAC-SHA test cases, made the HMAC-MD5 test cases conditional on NO_MD5 flag
This commit is contained in:
@@ -101,7 +101,8 @@ int sha_test(void);
|
|||||||
int sha256_test(void);
|
int sha256_test(void);
|
||||||
int sha512_test(void);
|
int sha512_test(void);
|
||||||
int sha384_test(void);
|
int sha384_test(void);
|
||||||
int hmac_test(void);
|
int hmac_md5_test(void);
|
||||||
|
int hmac_sha_test(void);
|
||||||
int arc4_test(void);
|
int arc4_test(void);
|
||||||
int hc128_test(void);
|
int hc128_test(void);
|
||||||
int rabbit_test(void);
|
int rabbit_test(void);
|
||||||
@@ -159,7 +160,7 @@ void ctaocrypt_test(void* args)
|
|||||||
#endif /* USE_FAST_MATH */
|
#endif /* USE_FAST_MATH */
|
||||||
#endif /* !CYASSL_LEANPSK */
|
#endif /* !CYASSL_LEANPSK */
|
||||||
|
|
||||||
#ifdef NO_MD5
|
#ifndef NO_MD5
|
||||||
if ( (ret = md5_test()) )
|
if ( (ret = md5_test()) )
|
||||||
err_sys("MD5 test failed!\n", ret);
|
err_sys("MD5 test failed!\n", ret);
|
||||||
else
|
else
|
||||||
@@ -214,10 +215,17 @@ void ctaocrypt_test(void* args)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef NO_HMAC
|
#ifndef NO_HMAC
|
||||||
if ( (ret = hmac_test()) )
|
#ifndef NO_MD5
|
||||||
err_sys("HMAC test failed!\n", ret);
|
if ( (ret = hmac_md5_test()) )
|
||||||
|
err_sys("HMAC-MD5 test failed!\n", ret);
|
||||||
|
else
|
||||||
|
printf( "HMAC-MD5 test passed!\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ( (ret = hmac_sha_test()) )
|
||||||
|
err_sys("HMAC-SHA test failed!\n", ret);
|
||||||
else
|
else
|
||||||
printf( "HMAC test passed!\n");
|
printf( "HMAC-SHA test passed!\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
if ( (ret = arc4_test()) )
|
if ( (ret = arc4_test()) )
|
||||||
@@ -411,7 +419,7 @@ int md2_test()
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_MD5
|
||||||
int md5_test(void)
|
int md5_test(void)
|
||||||
{
|
{
|
||||||
Md5 md5;
|
Md5 md5;
|
||||||
@@ -471,6 +479,7 @@ int md5_test(void)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif /* NO_MD5 */
|
||||||
|
|
||||||
|
|
||||||
#ifndef NO_MD4
|
#ifndef NO_MD4
|
||||||
@@ -796,8 +805,8 @@ int sha384_test(void)
|
|||||||
#endif /* CYASSL_SHA384 */
|
#endif /* CYASSL_SHA384 */
|
||||||
|
|
||||||
|
|
||||||
#ifndef NO_HMAC
|
#if !defined(NO_HMAC) && !defined(NO_MD5)
|
||||||
int hmac_test(void)
|
int hmac_md5_test(void)
|
||||||
{
|
{
|
||||||
Hmac hmac;
|
Hmac hmac;
|
||||||
byte hash[MD5_DIGEST_SIZE];
|
byte hash[MD5_DIGEST_SIZE];
|
||||||
@@ -851,6 +860,65 @@ int hmac_test(void)
|
|||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
#endif /* NO_HMAC && NO_MD5 */
|
||||||
|
|
||||||
|
#ifndef NO_HMAC
|
||||||
|
int hmac_sha_test(void)
|
||||||
|
{
|
||||||
|
Hmac hmac;
|
||||||
|
byte hash[SHA_DIGEST_SIZE];
|
||||||
|
|
||||||
|
const char* keys[]=
|
||||||
|
{
|
||||||
|
"\x0b\x0b\x0b\x0b\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"
|
||||||
|
};
|
||||||
|
|
||||||
|
testVector a, b, c;
|
||||||
|
testVector test_hmac[3];
|
||||||
|
|
||||||
|
int times = sizeof(test_hmac) / sizeof(testVector), i;
|
||||||
|
|
||||||
|
a.input = "Hi There";
|
||||||
|
a.output = "\xb6\x17\x31\x86\x55\x05\x72\x64\xe2\x8b\xc0\xb6\xfb\x37\x8c"
|
||||||
|
"\x8e\xf1\x46\xbe\x00";
|
||||||
|
a.inLen = strlen(a.input);
|
||||||
|
a.outLen = strlen(a.output);
|
||||||
|
|
||||||
|
b.input = "what do ya want for nothing?";
|
||||||
|
b.output = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74\x16\xd5\xf1\x84\xdf"
|
||||||
|
"\x9c\x25\x9a\x7c\x79";
|
||||||
|
b.inLen = strlen(b.input);
|
||||||
|
b.outLen = strlen(b.output);
|
||||||
|
|
||||||
|
c.input = "\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";
|
||||||
|
c.output = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3\x9a\xf4\x8a\xa1\x7b"
|
||||||
|
"\x4f\x63\xf1\x75\xd3";
|
||||||
|
c.inLen = strlen(c.input);
|
||||||
|
c.outLen = strlen(c.output);
|
||||||
|
|
||||||
|
test_hmac[0] = a;
|
||||||
|
test_hmac[1] = b;
|
||||||
|
test_hmac[2] = c;
|
||||||
|
|
||||||
|
for (i = 0; i < times; ++i) {
|
||||||
|
HmacSetKey(&hmac, SHA, (byte*)keys[i], (word32)strlen(keys[i]));
|
||||||
|
HmacUpdate(&hmac, (byte*)test_hmac[i].input,
|
||||||
|
(word32)test_hmac[i].inLen);
|
||||||
|
HmacFinal(&hmac, hash);
|
||||||
|
|
||||||
|
if (memcmp(hash, test_hmac[i].output, SHA_DIGEST_SIZE) != 0)
|
||||||
|
return -20 - i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
83
tests/hash.c
83
tests/hash.c
@@ -49,7 +49,8 @@ int sha256_test(void);
|
|||||||
int sha512_test(void);
|
int sha512_test(void);
|
||||||
int sha384_test(void);
|
int sha384_test(void);
|
||||||
int ripemd_test(void);
|
int ripemd_test(void);
|
||||||
int hmac_test(void);
|
int hmac_md5_test(void);
|
||||||
|
int hmac_sha_test(void);
|
||||||
|
|
||||||
int HashTest(void)
|
int HashTest(void)
|
||||||
{
|
{
|
||||||
@@ -110,11 +111,18 @@ int HashTest(void)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef NO_HMAC
|
#ifndef NO_HMAC
|
||||||
if ( (ret = hmac_test()) ) {
|
#ifndef NO_MD5
|
||||||
printf( " HMAC test failed!\n");
|
if ( (ret = hmac_md5_test()) ) {
|
||||||
return ret;
|
printf( " HMAC-MD5 test failed!\n");
|
||||||
} else
|
return ret;
|
||||||
printf( " HMAC test passed!\n");
|
} else
|
||||||
|
printf( " HMAC-MD5 test passed!\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if ( (ret = hmac_sha_test()) )
|
||||||
|
printf( " HMAC-SHA test failed!\n");
|
||||||
|
else
|
||||||
|
printf( " HMAC-SHA test passed!\n");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
printf(" End HASH Tests\n");
|
printf(" End HASH Tests\n");
|
||||||
@@ -500,8 +508,8 @@ int ripemd_test(void)
|
|||||||
}
|
}
|
||||||
#endif /* CYASSL_RIPEMD */
|
#endif /* CYASSL_RIPEMD */
|
||||||
|
|
||||||
#ifndef NO_HMAC
|
#if !defined(NO_HMAC) && !defined(NO_MD5)
|
||||||
int hmac_test(void)
|
int hmac_md5_test(void)
|
||||||
{
|
{
|
||||||
Hmac hmac;
|
Hmac hmac;
|
||||||
byte hash[MD5_DIGEST_SIZE];
|
byte hash[MD5_DIGEST_SIZE];
|
||||||
@@ -557,3 +565,62 @@ int hmac_test(void)
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef NO_HMAC
|
||||||
|
int hmac_sha_test(void)
|
||||||
|
{
|
||||||
|
Hmac hmac;
|
||||||
|
byte hash[SHA_DIGEST_SIZE];
|
||||||
|
|
||||||
|
const char* keys[]=
|
||||||
|
{
|
||||||
|
"\x0b\x0b\x0b\x0b\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"
|
||||||
|
};
|
||||||
|
|
||||||
|
testVector a, b, c;
|
||||||
|
testVector test_hmac[3];
|
||||||
|
|
||||||
|
int times = sizeof(test_hmac) / sizeof(testVector), i;
|
||||||
|
|
||||||
|
a.input = "Hi There";
|
||||||
|
a.output = "\xb6\x17\x31\x86\x55\x05\x72\x64\xe2\x8b\xc0\xb6\xfb\x37\x8c"
|
||||||
|
"\x8e\xf1\x46\xbe\x00";
|
||||||
|
a.inLen = strlen(a.input);
|
||||||
|
a.outLen = strlen(a.output);
|
||||||
|
|
||||||
|
b.input = "what do ya want for nothing?";
|
||||||
|
b.output = "\xef\xfc\xdf\x6a\xe5\xeb\x2f\xa2\xd2\x74\x16\xd5\xf1\x84\xdf"
|
||||||
|
"\x9c\x25\x9a\x7c\x79";
|
||||||
|
b.inLen = strlen(b.input);
|
||||||
|
b.outLen = strlen(b.output);
|
||||||
|
|
||||||
|
c.input = "\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";
|
||||||
|
c.output = "\x12\x5d\x73\x42\xb9\xac\x11\xcd\x91\xa3\x9a\xf4\x8a\xa1\x7b"
|
||||||
|
"\x4f\x63\xf1\x75\xd3";
|
||||||
|
c.inLen = strlen(c.input);
|
||||||
|
c.outLen = strlen(c.output);
|
||||||
|
|
||||||
|
test_hmac[0] = a;
|
||||||
|
test_hmac[1] = b;
|
||||||
|
test_hmac[2] = c;
|
||||||
|
|
||||||
|
for (i = 0; i < times; ++i) {
|
||||||
|
HmacSetKey(&hmac, SHA, (byte*)keys[i], (word32)strlen(keys[i]));
|
||||||
|
HmacUpdate(&hmac, (byte*)test_hmac[i].input,
|
||||||
|
(word32)test_hmac[i].inLen);
|
||||||
|
HmacFinal(&hmac, hash);
|
||||||
|
|
||||||
|
if (memcmp(hash, test_hmac[i].output, SHA_DIGEST_SIZE) != 0)
|
||||||
|
return -20 - i;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user