test_suite_hmac_shax.function 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. BEGIN_HEADER
  2. #include <polarssl/sha1.h>
  3. #include <polarssl/sha2.h>
  4. #include <polarssl/sha4.h>
  5. END_HEADER
  6. BEGIN_CASE
  7. sha1_hmac:trunc_size:hex_key_string:hex_src_string:hex_hash_string
  8. {
  9. unsigned char src_str[10000];
  10. unsigned char key_str[10000];
  11. unsigned char hash_str[10000];
  12. unsigned char output[41];
  13. int key_len, src_len;
  14. memset(src_str, 0x00, 10000);
  15. memset(key_str, 0x00, 10000);
  16. memset(hash_str, 0x00, 10000);
  17. memset(output, 0x00, 41);
  18. key_len = unhexify( key_str, {hex_key_string} );
  19. src_len = unhexify( src_str, {hex_src_string} );
  20. sha1_hmac( key_str, key_len, src_str, src_len, output );
  21. hexify( hash_str, output, 20 );
  22. TEST_ASSERT( strncmp( (char *) hash_str, {hex_hash_string}, {trunc_size} * 2 ) == 0 );
  23. }
  24. END_CASE
  25. BEGIN_CASE
  26. sha224_hmac:trunc_size:hex_key_string:hex_src_string:hex_hash_string
  27. {
  28. unsigned char src_str[10000];
  29. unsigned char key_str[10000];
  30. unsigned char hash_str[10000];
  31. unsigned char output[57];
  32. int key_len, src_len;
  33. memset(src_str, 0x00, 10000);
  34. memset(key_str, 0x00, 10000);
  35. memset(hash_str, 0x00, 10000);
  36. memset(output, 0x00, 57);
  37. key_len = unhexify( key_str, {hex_key_string} );
  38. src_len = unhexify( src_str, {hex_src_string} );
  39. sha2_hmac( key_str, key_len, src_str, src_len, output, 1 );
  40. hexify( hash_str, output, 28 );
  41. TEST_ASSERT( strncmp( (char *) hash_str, {hex_hash_string}, {trunc_size} * 2 ) == 0 );
  42. }
  43. END_CASE
  44. BEGIN_CASE
  45. sha256_hmac:trunc_size:hex_key_string:hex_src_string:hex_hash_string
  46. {
  47. unsigned char src_str[10000];
  48. unsigned char key_str[10000];
  49. unsigned char hash_str[10000];
  50. unsigned char output[65];
  51. int key_len, src_len;
  52. memset(src_str, 0x00, 10000);
  53. memset(key_str, 0x00, 10000);
  54. memset(hash_str, 0x00, 10000);
  55. memset(output, 0x00, 65);
  56. key_len = unhexify( key_str, {hex_key_string} );
  57. src_len = unhexify( src_str, {hex_src_string} );
  58. sha2_hmac( key_str, key_len, src_str, src_len, output, 0 );
  59. hexify( hash_str, output, 32 );
  60. TEST_ASSERT( strncmp( (char *) hash_str, {hex_hash_string}, {trunc_size} * 2 ) == 0 );
  61. }
  62. END_CASE
  63. BEGIN_CASE
  64. sha384_hmac:trunc_size:hex_key_string:hex_src_string:hex_hash_string
  65. {
  66. unsigned char src_str[10000];
  67. unsigned char key_str[10000];
  68. unsigned char hash_str[10000];
  69. unsigned char output[97];
  70. int key_len, src_len;
  71. memset(src_str, 0x00, 10000);
  72. memset(key_str, 0x00, 10000);
  73. memset(hash_str, 0x00, 10000);
  74. memset(output, 0x00, 97);
  75. key_len = unhexify( key_str, {hex_key_string} );
  76. src_len = unhexify( src_str, {hex_src_string} );
  77. sha4_hmac( key_str, key_len, src_str, src_len, output, 1 );
  78. hexify( hash_str, output, 48 );
  79. TEST_ASSERT( strncmp( (char *) hash_str, {hex_hash_string}, {trunc_size} * 2 ) == 0 );
  80. }
  81. END_CASE
  82. BEGIN_CASE
  83. sha512_hmac:trunc_size:hex_key_string:hex_src_string:hex_hash_string
  84. {
  85. unsigned char src_str[10000];
  86. unsigned char key_str[10000];
  87. unsigned char hash_str[10000];
  88. unsigned char output[129];
  89. int key_len, src_len;
  90. memset(src_str, 0x00, 10000);
  91. memset(key_str, 0x00, 10000);
  92. memset(hash_str, 0x00, 10000);
  93. memset(output, 0x00, 129);
  94. key_len = unhexify( key_str, {hex_key_string} );
  95. src_len = unhexify( src_str, {hex_src_string} );
  96. sha4_hmac( key_str, key_len, src_str, src_len, output, 0 );
  97. hexify( hash_str, output, 64 );
  98. TEST_ASSERT( strncmp( (char *) hash_str, {hex_hash_string}, {trunc_size} * 2 ) == 0 );
  99. }
  100. END_CASE