blob: 02c410eac6c12e2d83177b79be219799e2623cac [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 */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +01008void sha1_valid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -05009{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010010 TEST_VALID_PARAM(mbedtls_sha1_free(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050011}
12/* END_CASE */
13
14/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010015void sha1_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050016{
17 mbedtls_sha1_context ctx;
18 unsigned char buf[64] = { 0 };
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010019 size_t const buflen = sizeof(buf);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050020
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010021 TEST_INVALID_PARAM(mbedtls_sha1_init(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050022
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010023 TEST_INVALID_PARAM(mbedtls_sha1_clone(NULL, &ctx));
24 TEST_INVALID_PARAM(mbedtls_sha1_clone(&ctx, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050025
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010026 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA1_BAD_INPUT_DATA,
27 mbedtls_sha1_starts_ret(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050028
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010029 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));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050033
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010034 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));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050038
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010039 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));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050043
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010044 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));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050048
49exit:
50 return;
51}
52/* END_CASE */
53
54/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010055void mbedtls_sha1(data_t *src_str, data_t *hash)
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
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010062 TEST_ASSERT(mbedtls_sha1_ret(src_str->x, src_str->len, output) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +000063
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010064 TEST_ASSERT(mbedtls_test_hexcmp(output, hash->x, 20, hash->len) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +000065}
Paul Bakker33b43f12013-08-20 11:48:36 +020066/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000067
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020068/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010069void sha256_valid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050070{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010071 TEST_VALID_PARAM(mbedtls_sha256_free(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050072}
73/* END_CASE */
74
75/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010076void sha256_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050077{
78 mbedtls_sha256_context ctx;
79 unsigned char buf[64] = { 0 };
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010080 size_t const buflen = sizeof(buf);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050081 int valid_type = 0;
82 int invalid_type = 42;
83
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010084 TEST_INVALID_PARAM(mbedtls_sha256_init(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050085
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010086 TEST_INVALID_PARAM(mbedtls_sha256_clone(NULL, &ctx));
87 TEST_INVALID_PARAM(mbedtls_sha256_clone(&ctx, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050088
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010089 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
90 mbedtls_sha256_starts_ret(NULL, valid_type));
91 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
92 mbedtls_sha256_starts_ret(&ctx, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050093
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010094 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
95 mbedtls_sha256_update_ret(NULL, buf, buflen));
96 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
97 mbedtls_sha256_update_ret(&ctx, NULL, buflen));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050098
Gilles Peskine1b6c09a2023-01-11 14:52:35 +010099 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
100 mbedtls_sha256_finish_ret(NULL, buf));
101 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
102 mbedtls_sha256_finish_ret(&ctx, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500103
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100104 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
105 mbedtls_internal_sha256_process(NULL, buf));
106 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
107 mbedtls_internal_sha256_process(&ctx, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500108
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100109 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
110 mbedtls_sha256_ret(NULL, buflen,
111 buf, valid_type));
112 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
113 mbedtls_sha256_ret(buf, buflen,
114 NULL, valid_type));
115 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
116 mbedtls_sha256_ret(buf, buflen,
117 buf, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500118
119exit:
120 return;
121}
122/* END_CASE */
123
124/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100125void sha224(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +0000126{
Paul Bakker367dae42009-06-28 21:50:27 +0000127 unsigned char output[57];
128
Paul Bakker367dae42009-06-28 21:50:27 +0000129 memset(output, 0x00, 57);
130
Paul Bakker367dae42009-06-28 21:50:27 +0000131
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100132 TEST_ASSERT(mbedtls_sha256_ret(src_str->x, src_str->len, output, 1) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000133
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100134 TEST_ASSERT(mbedtls_test_hexcmp(output, hash->x, 28, hash->len) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000135}
Paul Bakker33b43f12013-08-20 11:48:36 +0200136/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000137
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200138/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100139void mbedtls_sha256(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +0000140{
Paul Bakker367dae42009-06-28 21:50:27 +0000141 unsigned char output[65];
142
Paul Bakker367dae42009-06-28 21:50:27 +0000143 memset(output, 0x00, 65);
144
Paul Bakker367dae42009-06-28 21:50:27 +0000145
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100146 TEST_ASSERT(mbedtls_sha256_ret(src_str->x, src_str->len, output, 0) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000147
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100148 TEST_ASSERT(mbedtls_test_hexcmp(output, hash->x, 32, hash->len) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000149}
Paul Bakker33b43f12013-08-20 11:48:36 +0200150/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000151
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200152/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100153void sha512_valid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500154{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100155 TEST_VALID_PARAM(mbedtls_sha512_free(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500156}
157/* END_CASE */
158
159/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_CHECK_PARAMS:!MBEDTLS_PARAM_FAILED_ALT */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100160void sha512_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500161{
162 mbedtls_sha512_context ctx;
163 unsigned char buf[64] = { 0 };
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100164 size_t const buflen = sizeof(buf);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500165 int valid_type = 0;
166 int invalid_type = 42;
167
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100168 TEST_INVALID_PARAM(mbedtls_sha512_init(NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500169
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100170 TEST_INVALID_PARAM(mbedtls_sha512_clone(NULL, &ctx));
171 TEST_INVALID_PARAM(mbedtls_sha512_clone(&ctx, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500172
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100173 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
174 mbedtls_sha512_starts_ret(NULL, valid_type));
175 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
176 mbedtls_sha512_starts_ret(&ctx, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500177
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100178 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
179 mbedtls_sha512_update_ret(NULL, buf, buflen));
180 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
181 mbedtls_sha512_update_ret(&ctx, NULL, buflen));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500182
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100183 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
184 mbedtls_sha512_finish_ret(NULL, buf));
185 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
186 mbedtls_sha512_finish_ret(&ctx, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500187
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100188 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
189 mbedtls_internal_sha512_process(NULL, buf));
190 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
191 mbedtls_internal_sha512_process(&ctx, NULL));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500192
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100193 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
194 mbedtls_sha512_ret(NULL, buflen,
195 buf, valid_type));
196 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
197 mbedtls_sha512_ret(buf, buflen,
198 NULL, valid_type));
199 TEST_INVALID_PARAM_RET(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
200 mbedtls_sha512_ret(buf, buflen,
201 buf, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -0500202
203exit:
204 return;
205}
206/* END_CASE */
207
208/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100209void sha384(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +0000210{
Paul Bakker367dae42009-06-28 21:50:27 +0000211 unsigned char output[97];
212
Paul Bakker367dae42009-06-28 21:50:27 +0000213 memset(output, 0x00, 97);
214
Paul Bakker367dae42009-06-28 21:50:27 +0000215
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100216 TEST_ASSERT(mbedtls_sha512_ret(src_str->x, src_str->len, output, 1) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000217
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100218 TEST_ASSERT(mbedtls_test_hexcmp(output, hash->x, 48, hash->len) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000219}
Paul Bakker33b43f12013-08-20 11:48:36 +0200220/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000221
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200222/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100223void mbedtls_sha512(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +0000224{
Paul Bakker367dae42009-06-28 21:50:27 +0000225 unsigned char output[129];
226
Paul Bakker367dae42009-06-28 21:50:27 +0000227 memset(output, 0x00, 129);
228
Paul Bakker367dae42009-06-28 21:50:27 +0000229
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100230 TEST_ASSERT(mbedtls_sha512_ret(src_str->x, src_str->len, output, 0) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000231
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100232 TEST_ASSERT(mbedtls_test_hexcmp(output, hash->x, 64, hash->len) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000233}
Paul Bakker33b43f12013-08-20 11:48:36 +0200234/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000235
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200236/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100237void sha1_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000238{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100239 TEST_ASSERT(mbedtls_sha1_self_test(1) == 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000240}
Paul Bakker33b43f12013-08-20 11:48:36 +0200241/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000242
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200243/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100244void sha256_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000245{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100246 TEST_ASSERT(mbedtls_sha256_self_test(1) == 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000247}
Paul Bakker33b43f12013-08-20 11:48:36 +0200248/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000249
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200250/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100251void sha512_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000252{
Gilles Peskine1b6c09a2023-01-11 14:52:35 +0100253 TEST_ASSERT(mbedtls_sha512_self_test(1) == 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000254}
Paul Bakker33b43f12013-08-20 11:48:36 +0200255/* END_CASE */