blob: 64280098cf4a9dd462468a73e6bf89333eee3710 [file] [log] [blame]
Paul Bakker33b43f12013-08-20 11:48:36 +02001/* BEGIN_HEADER */
Manuel Pégourié-Gonnard7f809972015-03-09 17:05:11 +00002#include "mbedtls/sha1.h"
3#include "mbedtls/sha256.h"
4#include "mbedtls/sha512.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02005/* END_HEADER */
Paul Bakker367dae42009-06-28 21:50:27 +00006
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02007/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05008void sha1_valid_param( )
9{
10 TEST_VALID_PARAM( mbedtls_sha1_free( NULL ) );
11}
12/* END_CASE */
13
14/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
15void sha1_invalid_param( )
16{
17 mbedtls_sha1_context ctx;
18 unsigned char buf[64] = { 0 };
19 size_t const buflen = sizeof( buf );
20
21 TEST_INVALID_PARAM( mbedtls_sha1_init( NULL ) );
22
23 TEST_INVALID_PARAM( mbedtls_sha1_clone( NULL, &ctx ) );
24 TEST_INVALID_PARAM( mbedtls_sha1_clone( &ctx, NULL ) );
25
26 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
27 mbedtls_sha1_starts_ret( NULL ) );
28
29 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
30 mbedtls_sha1_update_ret( NULL, buf, buflen ) );
31 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
32 mbedtls_sha1_update_ret( &ctx, NULL, buflen ) );
33
34 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
35 mbedtls_sha1_finish_ret( NULL, buf ) );
36 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
37 mbedtls_sha1_finish_ret( &ctx, NULL ) );
38
39 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
40 mbedtls_internal_sha1_process( NULL, buf ) );
41 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
42 mbedtls_internal_sha1_process( &ctx, NULL ) );
43
44 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
45 mbedtls_sha1_ret( NULL, buflen, buf ) );
46 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
47 mbedtls_sha1_ret( buf, buflen, NULL ) );
48
49exit:
50 return;
51}
52/* END_CASE */
53
54/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
Azim Khan5fcca462018-06-29 11:05:32 +010055void mbedtls_sha1( data_t * src_str, data_t * hex_hash_string )
Paul Bakker367dae42009-06-28 21:50:27 +000056{
Paul Bakker367dae42009-06-28 21:50:27 +000057 unsigned char output[41];
58
Paul Bakker367dae42009-06-28 21:50:27 +000059 memset(output, 0x00, 41);
60
Paul Bakker367dae42009-06-28 21:50:27 +000061
Azim Khand30ca132017-06-09 04:32:58 +010062 TEST_ASSERT( mbedtls_sha1_ret( src_str->x, src_str->len, output ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000063
Ronald Cron2dbba992020-06-10 11:42:32 +020064 TEST_ASSERT( mbedtls_test_hexcmp( output, hex_hash_string->x,
65 20, hex_hash_string->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +000066}
Paul Bakker33b43f12013-08-20 11:48:36 +020067/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000068
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020069/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050070void sha256_valid_param( )
71{
72 TEST_VALID_PARAM( mbedtls_sha256_free( NULL ) );
73}
74/* END_CASE */
75
76/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
77void sha256_invalid_param( )
78{
79 mbedtls_sha256_context ctx;
80 unsigned char buf[64] = { 0 };
81 size_t const buflen = sizeof( buf );
82 int valid_type = 0;
83 int invalid_type = 42;
84
85 TEST_INVALID_PARAM( mbedtls_sha256_init( NULL ) );
86
87 TEST_INVALID_PARAM( mbedtls_sha256_clone( NULL, &ctx ) );
88 TEST_INVALID_PARAM( mbedtls_sha256_clone( &ctx, NULL ) );
89
90 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
91 mbedtls_sha256_starts_ret( NULL, valid_type ) );
92 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
93 mbedtls_sha256_starts_ret( &ctx, invalid_type ) );
94
95 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
96 mbedtls_sha256_update_ret( NULL, buf, buflen ) );
97 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
98 mbedtls_sha256_update_ret( &ctx, NULL, buflen ) );
99
100 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
101 mbedtls_sha256_finish_ret( NULL, buf ) );
102 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
103 mbedtls_sha256_finish_ret( &ctx, NULL ) );
104
105 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
106 mbedtls_internal_sha256_process( NULL, buf ) );
107 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
108 mbedtls_internal_sha256_process( &ctx, NULL ) );
109
110 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
111 mbedtls_sha256_ret( NULL, buflen,
112 buf, valid_type ) );
113 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
114 mbedtls_sha256_ret( buf, buflen,
115 NULL, valid_type ) );
116 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
117 mbedtls_sha256_ret( buf, buflen,
118 buf, invalid_type ) );
119
120exit:
121 return;
122}
123/* END_CASE */
124
125/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Azim Khan5fcca462018-06-29 11:05:32 +0100126void sha224( data_t * src_str, data_t * hex_hash_string )
Paul Bakker367dae42009-06-28 21:50:27 +0000127{
Paul Bakker367dae42009-06-28 21:50:27 +0000128 unsigned char output[57];
129
Paul Bakker367dae42009-06-28 21:50:27 +0000130 memset(output, 0x00, 57);
131
Paul Bakker367dae42009-06-28 21:50:27 +0000132
Azim Khand30ca132017-06-09 04:32:58 +0100133 TEST_ASSERT( mbedtls_sha256_ret( src_str->x, src_str->len, output, 1 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000134
Ronald Cron2dbba992020-06-10 11:42:32 +0200135 TEST_ASSERT( mbedtls_test_hexcmp( output, hex_hash_string->x,
136 28, hex_hash_string->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000137}
Paul Bakker33b43f12013-08-20 11:48:36 +0200138/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000139
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200140/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Azim Khan5fcca462018-06-29 11:05:32 +0100141void mbedtls_sha256( data_t * src_str, data_t * hex_hash_string )
Paul Bakker367dae42009-06-28 21:50:27 +0000142{
Paul Bakker367dae42009-06-28 21:50:27 +0000143 unsigned char output[65];
144
Paul Bakker367dae42009-06-28 21:50:27 +0000145 memset(output, 0x00, 65);
146
Paul Bakker367dae42009-06-28 21:50:27 +0000147
Azim Khand30ca132017-06-09 04:32:58 +0100148 TEST_ASSERT( mbedtls_sha256_ret( src_str->x, src_str->len, output, 0 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000149
Ronald Cron2dbba992020-06-10 11:42:32 +0200150 TEST_ASSERT( mbedtls_test_hexcmp( output, hex_hash_string->x,
151 32, hex_hash_string->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000152}
Paul Bakker33b43f12013-08-20 11:48:36 +0200153/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000154
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200155/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500156void sha512_valid_param( )
157{
158 TEST_VALID_PARAM( mbedtls_sha512_free( NULL ) );
159}
160/* END_CASE */
161
162/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
163void sha512_invalid_param( )
164{
165 mbedtls_sha512_context ctx;
166 unsigned char buf[64] = { 0 };
167 size_t const buflen = sizeof( buf );
168 int valid_type = 0;
169 int invalid_type = 42;
170
171 TEST_INVALID_PARAM( mbedtls_sha512_init( NULL ) );
172
173 TEST_INVALID_PARAM( mbedtls_sha512_clone( NULL, &ctx ) );
174 TEST_INVALID_PARAM( mbedtls_sha512_clone( &ctx, NULL ) );
175
176 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
177 mbedtls_sha512_starts_ret( NULL, valid_type ) );
178 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
179 mbedtls_sha512_starts_ret( &ctx, invalid_type ) );
180
181 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
182 mbedtls_sha512_update_ret( NULL, buf, buflen ) );
183 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
184 mbedtls_sha512_update_ret( &ctx, NULL, buflen ) );
185
186 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
187 mbedtls_sha512_finish_ret( NULL, buf ) );
188 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
189 mbedtls_sha512_finish_ret( &ctx, NULL ) );
190
191 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
192 mbedtls_internal_sha512_process( NULL, buf ) );
193 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
194 mbedtls_internal_sha512_process( &ctx, NULL ) );
195
196 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
197 mbedtls_sha512_ret( NULL, buflen,
198 buf, valid_type ) );
199 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
200 mbedtls_sha512_ret( buf, buflen,
201 NULL, valid_type ) );
202 TEST_INVALID_PARAM_RET( MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
203 mbedtls_sha512_ret( buf, buflen,
204 buf, invalid_type ) );
205
206exit:
207 return;
208}
209/* END_CASE */
210
211/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Azim Khan5fcca462018-06-29 11:05:32 +0100212void sha384( data_t * src_str, data_t * hex_hash_string )
Paul Bakker367dae42009-06-28 21:50:27 +0000213{
Paul Bakker367dae42009-06-28 21:50:27 +0000214 unsigned char output[97];
215
Paul Bakker367dae42009-06-28 21:50:27 +0000216 memset(output, 0x00, 97);
217
Paul Bakker367dae42009-06-28 21:50:27 +0000218
Azim Khand30ca132017-06-09 04:32:58 +0100219 TEST_ASSERT( mbedtls_sha512_ret( src_str->x, src_str->len, output, 1 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000220
Ronald Cron2dbba992020-06-10 11:42:32 +0200221 TEST_ASSERT( mbedtls_test_hexcmp( output, hex_hash_string->x,
222 48, hex_hash_string->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000223}
Paul Bakker33b43f12013-08-20 11:48:36 +0200224/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000225
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200226/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Azim Khan5fcca462018-06-29 11:05:32 +0100227void mbedtls_sha512( data_t * src_str, data_t * hex_hash_string )
Paul Bakker367dae42009-06-28 21:50:27 +0000228{
Paul Bakker367dae42009-06-28 21:50:27 +0000229 unsigned char output[129];
230
Paul Bakker367dae42009-06-28 21:50:27 +0000231 memset(output, 0x00, 129);
232
Paul Bakker367dae42009-06-28 21:50:27 +0000233
Azim Khand30ca132017-06-09 04:32:58 +0100234 TEST_ASSERT( mbedtls_sha512_ret( src_str->x, src_str->len, output, 0 ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000235
Ronald Cron2dbba992020-06-10 11:42:32 +0200236 TEST_ASSERT( mbedtls_test_hexcmp( output, hex_hash_string->x,
237 64, hex_hash_string->len ) == 0 );
Paul Bakker367dae42009-06-28 21:50:27 +0000238}
Paul Bakker33b43f12013-08-20 11:48:36 +0200239/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000240
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200241/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100242void sha1_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000243{
Andres AG93012e82016-09-09 09:10:28 +0100244 TEST_ASSERT( mbedtls_sha1_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000245}
Paul Bakker33b43f12013-08-20 11:48:36 +0200246/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000247
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200248/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100249void sha256_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000250{
Andres AG93012e82016-09-09 09:10:28 +0100251 TEST_ASSERT( mbedtls_sha256_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000252}
Paul Bakker33b43f12013-08-20 11:48:36 +0200253/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000254
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200255/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
Azim Khanf1aaec92017-05-30 14:23:15 +0100256void sha512_selftest( )
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000257{
Andres AG93012e82016-09-09 09:10:28 +0100258 TEST_ASSERT( mbedtls_sha512_self_test( 1 ) == 0 );
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000259}
Paul Bakker33b43f12013-08-20 11:48:36 +0200260/* END_CASE */