blob: 629e2810089be656efdcb532c789812cb6a1b45e [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"
Pol Henarejosf6457052022-05-09 01:04:34 +02005#include "mbedtls/sha3.h"
Paul Bakker33b43f12013-08-20 11:48:36 +02006/* END_HEADER */
Paul Bakker367dae42009-06-28 21:50:27 +00007
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +02008/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
Gilles Peskine449bd832023-01-11 14:50:10 +01009void mbedtls_sha1(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +000010{
Paul Bakker367dae42009-06-28 21:50:27 +000011 unsigned char output[41];
12
Paul Bakker367dae42009-06-28 21:50:27 +000013 memset(output, 0x00, 41);
14
Paul Bakker367dae42009-06-28 21:50:27 +000015
Gilles Peskine449bd832023-01-11 14:50:10 +010016 TEST_ASSERT(mbedtls_sha1(src_str->x, src_str->len, output) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +000017
Gilles Peskine449bd832023-01-11 14:50:10 +010018 TEST_ASSERT(mbedtls_test_hexcmp(output, hash->x, 20, hash->len) == 0);
Paul Bakker367dae42009-06-28 21:50:27 +000019}
Paul Bakker33b43f12013-08-20 11:48:36 +020020/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000021
Tuvshinzaya Erdenekhuu1db192b2022-07-29 15:44:38 +010022/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Gilles Peskine449bd832023-01-11 14:50:10 +010023void sha256_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050024{
25 mbedtls_sha256_context ctx;
26 unsigned char buf[64] = { 0 };
Gilles Peskine449bd832023-01-11 14:50:10 +010027 size_t const buflen = sizeof(buf);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050028 int invalid_type = 42;
29
Gilles Peskine449bd832023-01-11 14:50:10 +010030 TEST_EQUAL(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
31 mbedtls_sha256_starts(&ctx, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050032
Gilles Peskine449bd832023-01-11 14:50:10 +010033 TEST_EQUAL(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
34 mbedtls_sha256(buf, buflen,
35 buf, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050036
37exit:
38 return;
39}
40/* END_CASE */
41
Mateusz Starzyke3c48b42021-04-19 16:46:28 +020042/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C */
Gilles Peskine449bd832023-01-11 14:50:10 +010043void sha224(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +000044{
Paul Bakker367dae42009-06-28 21:50:27 +000045 unsigned char output[57];
46
Paul Bakker367dae42009-06-28 21:50:27 +000047 memset(output, 0x00, 57);
48
Paul Bakker367dae42009-06-28 21:50:27 +000049
Gilles Peskine449bd832023-01-11 14:50:10 +010050 TEST_EQUAL(mbedtls_sha256(src_str->x, src_str->len, output, 1), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000051
Gilles Peskine449bd832023-01-11 14:50:10 +010052 TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 28, hash->len), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000053}
Paul Bakker33b43f12013-08-20 11:48:36 +020054/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000055
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +020056/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
Gilles Peskine449bd832023-01-11 14:50:10 +010057void mbedtls_sha256(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +000058{
Paul Bakker367dae42009-06-28 21:50:27 +000059 unsigned char output[65];
60
Paul Bakker367dae42009-06-28 21:50:27 +000061 memset(output, 0x00, 65);
62
Paul Bakker367dae42009-06-28 21:50:27 +000063
Gilles Peskine449bd832023-01-11 14:50:10 +010064 TEST_EQUAL(mbedtls_sha256(src_str->x, src_str->len, output, 0), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000065
Gilles Peskine449bd832023-01-11 14:50:10 +010066 TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 32, hash->len), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000067}
Paul Bakker33b43f12013-08-20 11:48:36 +020068/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +000069
Tuvshinzaya Erdenekhuuca6fde22022-07-29 15:43:04 +010070/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Gilles Peskine449bd832023-01-11 14:50:10 +010071void sha512_invalid_param()
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050072{
73 mbedtls_sha512_context ctx;
74 unsigned char buf[64] = { 0 };
Gilles Peskine449bd832023-01-11 14:50:10 +010075 size_t const buflen = sizeof(buf);
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050076 int invalid_type = 42;
77
Gilles Peskine449bd832023-01-11 14:50:10 +010078 TEST_EQUAL(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
79 mbedtls_sha512_starts(&ctx, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050080
Gilles Peskine449bd832023-01-11 14:50:10 +010081 TEST_EQUAL(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
82 mbedtls_sha512(buf, buflen,
83 buf, invalid_type));
Andrzej Kurekc470b6b2019-01-31 08:20:20 -050084
85exit:
86 return;
87}
88/* END_CASE */
89
Mateusz Starzykc6d94ab2021-05-19 13:31:59 +020090/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C */
Gilles Peskine449bd832023-01-11 14:50:10 +010091void sha384(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +000092{
Paul Bakker367dae42009-06-28 21:50:27 +000093 unsigned char output[97];
94
Paul Bakker367dae42009-06-28 21:50:27 +000095 memset(output, 0x00, 97);
96
Paul Bakker367dae42009-06-28 21:50:27 +000097
Gilles Peskine449bd832023-01-11 14:50:10 +010098 TEST_EQUAL(mbedtls_sha512(src_str->x, src_str->len, output, 1), 0);
Paul Bakker367dae42009-06-28 21:50:27 +000099
Gilles Peskine449bd832023-01-11 14:50:10 +0100100 TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 48, hash->len), 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000101}
Paul Bakker33b43f12013-08-20 11:48:36 +0200102/* END_CASE */
Paul Bakker367dae42009-06-28 21:50:27 +0000103
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200104/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
Gilles Peskine449bd832023-01-11 14:50:10 +0100105void mbedtls_sha512(data_t *src_str, data_t *hash)
Paul Bakker367dae42009-06-28 21:50:27 +0000106{
Paul Bakker367dae42009-06-28 21:50:27 +0000107 unsigned char output[129];
108
Paul Bakker367dae42009-06-28 21:50:27 +0000109 memset(output, 0x00, 129);
110
Paul Bakker367dae42009-06-28 21:50:27 +0000111
Gilles Peskine449bd832023-01-11 14:50:10 +0100112 TEST_EQUAL(mbedtls_sha512(src_str->x, src_str->len, output, 0), 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000113
Gilles Peskine449bd832023-01-11 14:50:10 +0100114 TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 64, hash->len), 0);
Paul Bakker367dae42009-06-28 21:50:27 +0000115}
Paul Bakker33b43f12013-08-20 11:48:36 +0200116/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000117
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200118/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100119void sha1_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000120{
Gilles Peskine449bd832023-01-11 14:50:10 +0100121 TEST_ASSERT(mbedtls_sha1_self_test(1) == 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000122}
Paul Bakker33b43f12013-08-20 11:48:36 +0200123/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000124
Valerio Setti46e8fd82022-12-14 10:58:02 +0100125/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100126void sha224_selftest()
Valerio Setti46e8fd82022-12-14 10:58:02 +0100127{
Gilles Peskine449bd832023-01-11 14:50:10 +0100128 TEST_EQUAL(mbedtls_sha224_self_test(1), 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000129}
130/* END_CASE */
131
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200132/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100133void sha256_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000134{
Gilles Peskine449bd832023-01-11 14:50:10 +0100135 TEST_EQUAL(mbedtls_sha256_self_test(1), 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000136}
Paul Bakker33b43f12013-08-20 11:48:36 +0200137/* END_CASE */
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000138
Valerio Setti898e7a32022-12-14 08:55:53 +0100139/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100140void sha384_selftest()
Valerio Setti898e7a32022-12-14 08:55:53 +0100141{
Gilles Peskine449bd832023-01-11 14:50:10 +0100142 TEST_EQUAL(mbedtls_sha384_self_test(1), 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000143}
144/* END_CASE */
145
Manuel Pégourié-Gonnard2cf5a7c2015-04-08 12:49:31 +0200146/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
Gilles Peskine449bd832023-01-11 14:50:10 +0100147void sha512_selftest()
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000148{
Gilles Peskine449bd832023-01-11 14:50:10 +0100149 TEST_EQUAL(mbedtls_sha512_self_test(1), 0);
Paul Bakkerf3eedce2009-07-05 11:30:16 +0000150}
Paul Bakker33b43f12013-08-20 11:48:36 +0200151/* END_CASE */
Pol Henarejosf6457052022-05-09 01:04:34 +0200152
153/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100154void mbedtls_sha3(int family, data_t *in, data_t *hash)
Pol Henarejosf6457052022-05-09 01:04:34 +0200155{
156 unsigned char *output = NULL;
157
Tom Cosgrove05b2a872023-07-21 11:31:13 +0100158 TEST_CALLOC(output, hash->len);
Pol Henarejosf6457052022-05-09 01:04:34 +0200159
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100160 TEST_ASSERT(mbedtls_sha3(family, in->x, in->len, output, hash->len) == 0);
Pol Henarejosf6457052022-05-09 01:04:34 +0200161
Tom Cosgrovee4e9e7d2023-07-21 11:40:20 +0100162 TEST_MEMORY_COMPARE(output, hash->len, hash->x, hash->len);
Pol Henarejosf6457052022-05-09 01:04:34 +0200163
164exit:
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100165 mbedtls_free(output);
Pol Henarejosf6457052022-05-09 01:04:34 +0200166}
167/* END_CASE */
168
Dave Rodgmana8af4f42023-06-07 18:27:09 +0100169/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
Dave Rodgman2468ad12023-06-07 17:06:13 +0100170void sha3_invalid_param()
171{
172 unsigned char output[32];
173 mbedtls_sha3_context ctx;
174
175 mbedtls_sha3_init(&ctx);
176 TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_NONE), MBEDTLS_ERR_SHA3_BAD_INPUT_DATA);
177
178 TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_256), 0);
Dave Rodgman2468ad12023-06-07 17:06:13 +0100179 TEST_EQUAL(mbedtls_sha3_finish(&ctx, output, 0), MBEDTLS_ERR_SHA3_BAD_INPUT_DATA);
Dave Rodgmandbddb002023-08-30 18:43:23 +0100180
181 TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_256), 0);
Dave Rodgman2468ad12023-06-07 17:06:13 +0100182 TEST_EQUAL(mbedtls_sha3_finish(&ctx, output, 31), MBEDTLS_ERR_SHA3_BAD_INPUT_DATA);
Dave Rodgmandbddb002023-08-30 18:43:23 +0100183
184 TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_256), 0);
Dave Rodgman2468ad12023-06-07 17:06:13 +0100185 TEST_EQUAL(mbedtls_sha3_finish(&ctx, output, 32), 0);
186
187exit:
188 return;
189}
190/* END_CASE */
191
Pol Henarejosf6457052022-05-09 01:04:34 +0200192/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100193void mbedtls_sha3_multi(int family, data_t *in, data_t *hash)
Pol Henarejosf6457052022-05-09 01:04:34 +0200194{
195 unsigned char *output = NULL;
196 mbedtls_sha3_context ctx;
197 const unsigned int block_size = 256;
198
Tom Cosgrove05b2a872023-07-21 11:31:13 +0100199 TEST_CALLOC(output, hash->len);
Pol Henarejosf6457052022-05-09 01:04:34 +0200200
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100201 mbedtls_sha3_init(&ctx);
202 mbedtls_sha3_starts(&ctx, family);
Pol Henarejosf6457052022-05-09 01:04:34 +0200203
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100204 for (size_t l = 0; l < in->len; l += block_size) {
205 TEST_ASSERT(mbedtls_sha3_update(&ctx, in->x + l, MIN(in->len - l, block_size)) == 0);
206 }
Pol Henarejosf6457052022-05-09 01:04:34 +0200207
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100208 TEST_ASSERT(mbedtls_sha3_finish(&ctx, output, hash->len) == 0);
Pol Henarejosf6457052022-05-09 01:04:34 +0200209
Tom Cosgrovee4e9e7d2023-07-21 11:40:20 +0100210 TEST_MEMORY_COMPARE(output, hash->len, hash->x, hash->len);
Pol Henarejosf6457052022-05-09 01:04:34 +0200211
212exit:
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100213 mbedtls_free(output);
Pol Henarejosf6457052022-05-09 01:04:34 +0200214}
215/* END_CASE */
Pol Henarejos7dbd5d12022-05-20 20:42:33 +0200216
Pol Henarejos90f803c2022-05-20 20:50:29 +0200217/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100218void sha3_streaming(int type, data_t *input)
Pol Henarejos90f803c2022-05-20 20:50:29 +0200219{
220 mbedtls_sha3_context ctx;
221 unsigned char reference_hash[64];
222 unsigned char hash[64];
223 size_t chunk_size;
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100224 size_t hash_length = (type == MBEDTLS_SHA3_224 ? 28 :
225 type == MBEDTLS_SHA3_256 ? 32 :
226 type == MBEDTLS_SHA3_384 ? 48 :
227 type == MBEDTLS_SHA3_512 ? 64 :
228 0);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200229
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100230 mbedtls_sha3_init(&ctx);
231 memset(reference_hash, 0, sizeof(reference_hash));
232 memset(hash, 0, sizeof(hash));
233 TEST_ASSERT(hash_length != 0);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200234
235 /* Generate a reference hash */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100236 mbedtls_sha3(type, input->x, input->len, reference_hash, hash_length);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200237
238 /* Repeat each test with increasingly-sized data chunks
239 * E.g. start by processing bytes individual bytes, then 2-byte chunks,
240 * then 3-byte chunks, and so on...
241 * At each test ensure that the same hash is generated.
242 */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100243 for (chunk_size = 1; chunk_size < input->len; chunk_size++) {
Pol Henarejos90f803c2022-05-20 20:50:29 +0200244 size_t i;
245 size_t remaining = input->len;
246
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100247 mbedtls_sha3_init(&ctx);
248 TEST_ASSERT(mbedtls_sha3_starts(&ctx, type) == 0);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200249
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100250 for (i = 0; i < input->len; i += chunk_size) {
Pol Henarejos90f803c2022-05-20 20:50:29 +0200251 size_t len = remaining >= chunk_size ? chunk_size : remaining;
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100252 TEST_ASSERT(mbedtls_sha3_update(&ctx, input->x + i, len) == 0);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200253 remaining -= len;
254 }
255
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100256 mbedtls_sha3_finish(&ctx, hash, hash_length);
257 mbedtls_sha3_free(&ctx);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200258
Tom Cosgrovee4e9e7d2023-07-21 11:40:20 +0100259 TEST_MEMORY_COMPARE(hash, hash_length, reference_hash, hash_length);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200260 }
261
262exit:
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100263 mbedtls_sha3_free(&ctx);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200264}
265/* END_CASE */
266
267/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100268void sha3_reuse(data_t *input1, data_t *hash1,
269 data_t *input2, data_t *hash2)
Pol Henarejos90f803c2022-05-20 20:50:29 +0200270{
271 unsigned char output[64];
272 mbedtls_sha3_context ctx;
273 mbedtls_sha3_id type1, type2;
274
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100275 mbedtls_sha3_init(&ctx);
276 switch (hash1->len) {
Pol Henarejos90f803c2022-05-20 20:50:29 +0200277 case 28: type1 = MBEDTLS_SHA3_224; break;
278 case 32: type1 = MBEDTLS_SHA3_256; break;
279 case 48: type1 = MBEDTLS_SHA3_384; break;
280 case 64: type1 = MBEDTLS_SHA3_512; break;
Agathiyan Bragadeeshdc28a5a2023-07-18 11:45:28 +0100281 default: TEST_FAIL("hash1->len validity"); break;
Pol Henarejos90f803c2022-05-20 20:50:29 +0200282 }
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100283 switch (hash2->len) {
Pol Henarejos90f803c2022-05-20 20:50:29 +0200284 case 28: type2 = MBEDTLS_SHA3_224; break;
285 case 32: type2 = MBEDTLS_SHA3_256; break;
286 case 48: type2 = MBEDTLS_SHA3_384; break;
287 case 64: type2 = MBEDTLS_SHA3_512; break;
Agathiyan Bragadeeshdc28a5a2023-07-18 11:45:28 +0100288 default: TEST_FAIL("hash2->len validity"); break;
Pol Henarejos90f803c2022-05-20 20:50:29 +0200289 }
290
291 /* Round 1 */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100292 TEST_ASSERT(mbedtls_sha3_starts(&ctx, type1) == 0);
293 TEST_ASSERT(mbedtls_sha3_update(&ctx, input1->x, input1->len) == 0);
294 TEST_ASSERT(mbedtls_sha3_finish(&ctx, output, sizeof(output)) == 0);
Tom Cosgrovee4e9e7d2023-07-21 11:40:20 +0100295 TEST_MEMORY_COMPARE(output, hash1->len, hash1->x, hash1->len);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200296
297 /* Round 2 */
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100298 TEST_ASSERT(mbedtls_sha3_starts(&ctx, type2) == 0);
299 TEST_ASSERT(mbedtls_sha3_update(&ctx, input2->x, input2->len) == 0);
300 TEST_ASSERT(mbedtls_sha3_finish(&ctx, output, sizeof(output)) == 0);
Tom Cosgrovee4e9e7d2023-07-21 11:40:20 +0100301 TEST_MEMORY_COMPARE(output, hash2->len, hash2->x, hash2->len);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200302
303exit:
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100304 mbedtls_sha3_free(&ctx);
Pol Henarejos90f803c2022-05-20 20:50:29 +0200305}
306/* END_CASE */
307
Pol Henarejos7dbd5d12022-05-20 20:42:33 +0200308/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C:MBEDTLS_SELF_TEST */
309void sha3_selftest()
310{
Pol Henarejosb3b220c2023-02-08 12:52:18 +0100311 TEST_ASSERT(mbedtls_sha3_self_test(0) == 0);
Pol Henarejos7dbd5d12022-05-20 20:42:33 +0200312}
313/* END_CASE */