test_suite_shax.function 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. /* BEGIN_HEADER */
  2. #include "mbedtls/sha1.h"
  3. #include "mbedtls/sha256.h"
  4. #include "mbedtls/sha512.h"
  5. /* END_HEADER */
  6. /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
  7. void sha1_valid_param( )
  8. {
  9. TEST_VALID_PARAM( mbedtls_sha1_free( NULL ) );
  10. }
  11. /* END_CASE */
  12. /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
  13. void sha1_invalid_param( )
  14. {
  15. mbedtls_sha1_context ctx;
  16. unsigned char buf[64] = { 0 };
  17. size_t const buflen = sizeof( buf );
  18. TEST_INVALID_PARAM( mbedtls_sha1_init( NULL ) );
  19. TEST_INVALID_PARAM( mbedtls_sha1_clone( NULL, &ctx ) );
  20. TEST_INVALID_PARAM( mbedtls_sha1_clone( &ctx, NULL ) );
  21. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  22. mbedtls_sha1_starts_ret( NULL ) );
  23. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  24. mbedtls_sha1_update_ret( NULL, buf, buflen ) );
  25. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  26. mbedtls_sha1_update_ret( &ctx, NULL, buflen ) );
  27. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  28. mbedtls_sha1_finish_ret( NULL, buf ) );
  29. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  30. mbedtls_sha1_finish_ret( &ctx, NULL ) );
  31. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  32. mbedtls_internal_sha1_process( NULL, buf ) );
  33. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  34. mbedtls_internal_sha1_process( &ctx, NULL ) );
  35. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  36. mbedtls_sha1_ret( NULL, buflen, buf ) );
  37. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
  38. mbedtls_sha1_ret( buf, buflen, NULL ) );
  39. exit:
  40. return;
  41. }
  42. /* END_CASE */
  43. /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
  44. void mbedtls_sha1( data_t * src_str, data_t * hash )
  45. {
  46. unsigned char output[41];
  47. memset(output, 0x00, 41);
  48. TEST_ASSERT( mbedtls_sha1_ret( src_str->x, src_str->len, output ) == 0 );
  49. TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 20, hash->len ) == 0 );
  50. }
  51. /* END_CASE */
  52. /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
  53. void sha256_valid_param( )
  54. {
  55. TEST_VALID_PARAM( mbedtls_sha256_free( NULL ) );
  56. }
  57. /* END_CASE */
  58. /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
  59. void sha256_invalid_param( )
  60. {
  61. mbedtls_sha256_context ctx;
  62. unsigned char buf[64] = { 0 };
  63. size_t const buflen = sizeof( buf );
  64. int valid_type = 0;
  65. int invalid_type = 42;
  66. TEST_INVALID_PARAM( mbedtls_sha256_init( NULL ) );
  67. TEST_INVALID_PARAM( mbedtls_sha256_clone( NULL, &ctx ) );
  68. TEST_INVALID_PARAM( mbedtls_sha256_clone( &ctx, NULL ) );
  69. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  70. mbedtls_sha256_starts_ret( NULL, valid_type ) );
  71. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  72. mbedtls_sha256_starts_ret( &ctx, invalid_type ) );
  73. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  74. mbedtls_sha256_update_ret( NULL, buf, buflen ) );
  75. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  76. mbedtls_sha256_update_ret( &ctx, NULL, buflen ) );
  77. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  78. mbedtls_sha256_finish_ret( NULL, buf ) );
  79. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  80. mbedtls_sha256_finish_ret( &ctx, NULL ) );
  81. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  82. mbedtls_internal_sha256_process( NULL, buf ) );
  83. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  84. mbedtls_internal_sha256_process( &ctx, NULL ) );
  85. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  86. mbedtls_sha256_ret( NULL, buflen,
  87. buf, valid_type ) );
  88. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  89. mbedtls_sha256_ret( buf, buflen,
  90. NULL, valid_type ) );
  91. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
  92. mbedtls_sha256_ret( buf, buflen,
  93. buf, invalid_type ) );
  94. exit:
  95. return;
  96. }
  97. /* END_CASE */
  98. /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
  99. void sha224( data_t * src_str, data_t * hash )
  100. {
  101. unsigned char output[57];
  102. memset(output, 0x00, 57);
  103. TEST_ASSERT( mbedtls_sha256_ret( src_str->x, src_str->len, output, 1 ) == 0 );
  104. TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 28, hash->len ) == 0 );
  105. }
  106. /* END_CASE */
  107. /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
  108. void mbedtls_sha256( data_t * src_str, data_t * hash )
  109. {
  110. unsigned char output[65];
  111. memset(output, 0x00, 65);
  112. TEST_ASSERT( mbedtls_sha256_ret( src_str->x, src_str->len, output, 0 ) == 0 );
  113. TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 32, hash->len ) == 0 );
  114. }
  115. /* END_CASE */
  116. /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
  117. void sha512_valid_param( )
  118. {
  119. TEST_VALID_PARAM( mbedtls_sha512_free( NULL ) );
  120. }
  121. /* END_CASE */
  122. /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
  123. void sha512_invalid_param( )
  124. {
  125. mbedtls_sha512_context ctx;
  126. unsigned char buf[64] = { 0 };
  127. size_t const buflen = sizeof( buf );
  128. int valid_type = 0;
  129. int invalid_type = 42;
  130. TEST_INVALID_PARAM( mbedtls_sha512_init( NULL ) );
  131. TEST_INVALID_PARAM( mbedtls_sha512_clone( NULL, &ctx ) );
  132. TEST_INVALID_PARAM( mbedtls_sha512_clone( &ctx, NULL ) );
  133. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  134. mbedtls_sha512_starts_ret( NULL, valid_type ) );
  135. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  136. mbedtls_sha512_starts_ret( &ctx, invalid_type ) );
  137. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  138. mbedtls_sha512_update_ret( NULL, buf, buflen ) );
  139. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  140. mbedtls_sha512_update_ret( &ctx, NULL, buflen ) );
  141. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  142. mbedtls_sha512_finish_ret( NULL, buf ) );
  143. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  144. mbedtls_sha512_finish_ret( &ctx, NULL ) );
  145. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  146. mbedtls_internal_sha512_process( NULL, buf ) );
  147. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  148. mbedtls_internal_sha512_process( &ctx, NULL ) );
  149. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  150. mbedtls_sha512_ret( NULL, buflen,
  151. buf, valid_type ) );
  152. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  153. mbedtls_sha512_ret( buf, buflen,
  154. NULL, valid_type ) );
  155. TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
  156. mbedtls_sha512_ret( buf, buflen,
  157. buf, invalid_type ) );
  158. exit:
  159. return;
  160. }
  161. /* END_CASE */
  162. /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
  163. void sha384( data_t * src_str, data_t * hash )
  164. {
  165. unsigned char output[97];
  166. memset(output, 0x00, 97);
  167. TEST_ASSERT( mbedtls_sha512_ret( src_str->x, src_str->len, output, 1 ) == 0 );
  168. TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 48, hash->len ) == 0 );
  169. }
  170. /* END_CASE */
  171. /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
  172. void mbedtls_sha512( data_t * src_str, data_t * hash )
  173. {
  174. unsigned char output[129];
  175. memset(output, 0x00, 129);
  176. TEST_ASSERT( mbedtls_sha512_ret( src_str->x, src_str->len, output, 0 ) == 0 );
  177. TEST_ASSERT( mbedtls_test_hexcmp( output, hash->x, 64, hash->len ) == 0 );
  178. }
  179. /* END_CASE */
  180. /* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
  181. void sha1_selftest( )
  182. {
  183. TEST_ASSERT( mbedtls_sha1_self_test( 1 ) == 0 );
  184. }
  185. /* END_CASE */
  186. /* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
  187. void sha256_selftest( )
  188. {
  189. TEST_ASSERT( mbedtls_sha256_self_test( 1 ) == 0 );
  190. }
  191. /* END_CASE */
  192. /* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
  193. void sha512_selftest( )
  194. {
  195. TEST_ASSERT( mbedtls_sha512_self_test( 1 ) == 0 );
  196. }
  197. /* END_CASE */