xref: /aosp_15_r20/external/mbedtls/tests/suites/test_suite_shax.function (revision 62c56f9862f102b96d72393aff6076c951fb8148)
1*62c56f98SSadaf Ebrahimi/* BEGIN_HEADER */
2*62c56f98SSadaf Ebrahimi#include "mbedtls/sha1.h"
3*62c56f98SSadaf Ebrahimi#include "mbedtls/sha256.h"
4*62c56f98SSadaf Ebrahimi#include "mbedtls/sha512.h"
5*62c56f98SSadaf Ebrahimi#include "mbedtls/sha3.h"
6*62c56f98SSadaf Ebrahimi/* END_HEADER */
7*62c56f98SSadaf Ebrahimi
8*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C */
9*62c56f98SSadaf Ebrahimivoid mbedtls_sha1(data_t *src_str, data_t *hash)
10*62c56f98SSadaf Ebrahimi{
11*62c56f98SSadaf Ebrahimi    unsigned char output[41];
12*62c56f98SSadaf Ebrahimi
13*62c56f98SSadaf Ebrahimi    memset(output, 0x00, 41);
14*62c56f98SSadaf Ebrahimi
15*62c56f98SSadaf Ebrahimi
16*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha1(src_str->x, src_str->len, output) == 0);
17*62c56f98SSadaf Ebrahimi
18*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_test_hexcmp(output, hash->x, 20, hash->len) == 0);
19*62c56f98SSadaf Ebrahimi}
20*62c56f98SSadaf Ebrahimi/* END_CASE */
21*62c56f98SSadaf Ebrahimi
22*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
23*62c56f98SSadaf Ebrahimivoid sha256_invalid_param()
24*62c56f98SSadaf Ebrahimi{
25*62c56f98SSadaf Ebrahimi    mbedtls_sha256_context ctx;
26*62c56f98SSadaf Ebrahimi    unsigned char buf[64] = { 0 };
27*62c56f98SSadaf Ebrahimi    size_t const buflen = sizeof(buf);
28*62c56f98SSadaf Ebrahimi    int invalid_type = 42;
29*62c56f98SSadaf Ebrahimi
30*62c56f98SSadaf Ebrahimi    TEST_EQUAL(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
31*62c56f98SSadaf Ebrahimi               mbedtls_sha256_starts(&ctx, invalid_type));
32*62c56f98SSadaf Ebrahimi
33*62c56f98SSadaf Ebrahimi    TEST_EQUAL(MBEDTLS_ERR_SHA256_BAD_INPUT_DATA,
34*62c56f98SSadaf Ebrahimi               mbedtls_sha256(buf, buflen,
35*62c56f98SSadaf Ebrahimi                              buf, invalid_type));
36*62c56f98SSadaf Ebrahimi
37*62c56f98SSadaf Ebrahimiexit:
38*62c56f98SSadaf Ebrahimi    return;
39*62c56f98SSadaf Ebrahimi}
40*62c56f98SSadaf Ebrahimi/* END_CASE */
41*62c56f98SSadaf Ebrahimi
42*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C */
43*62c56f98SSadaf Ebrahimivoid sha224(data_t *src_str, data_t *hash)
44*62c56f98SSadaf Ebrahimi{
45*62c56f98SSadaf Ebrahimi    unsigned char output[57];
46*62c56f98SSadaf Ebrahimi
47*62c56f98SSadaf Ebrahimi    memset(output, 0x00, 57);
48*62c56f98SSadaf Ebrahimi
49*62c56f98SSadaf Ebrahimi
50*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha256(src_str->x, src_str->len, output, 1), 0);
51*62c56f98SSadaf Ebrahimi
52*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 28, hash->len), 0);
53*62c56f98SSadaf Ebrahimi}
54*62c56f98SSadaf Ebrahimi/* END_CASE */
55*62c56f98SSadaf Ebrahimi
56*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C */
57*62c56f98SSadaf Ebrahimivoid mbedtls_sha256(data_t *src_str, data_t *hash)
58*62c56f98SSadaf Ebrahimi{
59*62c56f98SSadaf Ebrahimi    unsigned char output[65];
60*62c56f98SSadaf Ebrahimi
61*62c56f98SSadaf Ebrahimi    memset(output, 0x00, 65);
62*62c56f98SSadaf Ebrahimi
63*62c56f98SSadaf Ebrahimi
64*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha256(src_str->x, src_str->len, output, 0), 0);
65*62c56f98SSadaf Ebrahimi
66*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 32, hash->len), 0);
67*62c56f98SSadaf Ebrahimi}
68*62c56f98SSadaf Ebrahimi/* END_CASE */
69*62c56f98SSadaf Ebrahimi
70*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
71*62c56f98SSadaf Ebrahimivoid sha512_invalid_param()
72*62c56f98SSadaf Ebrahimi{
73*62c56f98SSadaf Ebrahimi    mbedtls_sha512_context ctx;
74*62c56f98SSadaf Ebrahimi    unsigned char buf[64] = { 0 };
75*62c56f98SSadaf Ebrahimi    size_t const buflen = sizeof(buf);
76*62c56f98SSadaf Ebrahimi    int invalid_type = 42;
77*62c56f98SSadaf Ebrahimi
78*62c56f98SSadaf Ebrahimi    TEST_EQUAL(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
79*62c56f98SSadaf Ebrahimi               mbedtls_sha512_starts(&ctx, invalid_type));
80*62c56f98SSadaf Ebrahimi
81*62c56f98SSadaf Ebrahimi    TEST_EQUAL(MBEDTLS_ERR_SHA512_BAD_INPUT_DATA,
82*62c56f98SSadaf Ebrahimi               mbedtls_sha512(buf, buflen,
83*62c56f98SSadaf Ebrahimi                              buf, invalid_type));
84*62c56f98SSadaf Ebrahimi
85*62c56f98SSadaf Ebrahimiexit:
86*62c56f98SSadaf Ebrahimi    return;
87*62c56f98SSadaf Ebrahimi}
88*62c56f98SSadaf Ebrahimi/* END_CASE */
89*62c56f98SSadaf Ebrahimi
90*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C */
91*62c56f98SSadaf Ebrahimivoid sha384(data_t *src_str, data_t *hash)
92*62c56f98SSadaf Ebrahimi{
93*62c56f98SSadaf Ebrahimi    unsigned char output[97];
94*62c56f98SSadaf Ebrahimi
95*62c56f98SSadaf Ebrahimi    memset(output, 0x00, 97);
96*62c56f98SSadaf Ebrahimi
97*62c56f98SSadaf Ebrahimi
98*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha512(src_str->x, src_str->len, output, 1), 0);
99*62c56f98SSadaf Ebrahimi
100*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 48, hash->len), 0);
101*62c56f98SSadaf Ebrahimi}
102*62c56f98SSadaf Ebrahimi/* END_CASE */
103*62c56f98SSadaf Ebrahimi
104*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C */
105*62c56f98SSadaf Ebrahimivoid mbedtls_sha512(data_t *src_str, data_t *hash)
106*62c56f98SSadaf Ebrahimi{
107*62c56f98SSadaf Ebrahimi    unsigned char output[129];
108*62c56f98SSadaf Ebrahimi
109*62c56f98SSadaf Ebrahimi    memset(output, 0x00, 129);
110*62c56f98SSadaf Ebrahimi
111*62c56f98SSadaf Ebrahimi
112*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha512(src_str->x, src_str->len, output, 0), 0);
113*62c56f98SSadaf Ebrahimi
114*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_test_hexcmp(output, hash->x, 64, hash->len), 0);
115*62c56f98SSadaf Ebrahimi}
116*62c56f98SSadaf Ebrahimi/* END_CASE */
117*62c56f98SSadaf Ebrahimi
118*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA1_C:MBEDTLS_SELF_TEST */
119*62c56f98SSadaf Ebrahimivoid sha1_selftest()
120*62c56f98SSadaf Ebrahimi{
121*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha1_self_test(1) == 0);
122*62c56f98SSadaf Ebrahimi}
123*62c56f98SSadaf Ebrahimi/* END_CASE */
124*62c56f98SSadaf Ebrahimi
125*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA224_C:MBEDTLS_SELF_TEST */
126*62c56f98SSadaf Ebrahimivoid sha224_selftest()
127*62c56f98SSadaf Ebrahimi{
128*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha224_self_test(1), 0);
129*62c56f98SSadaf Ebrahimi}
130*62c56f98SSadaf Ebrahimi/* END_CASE */
131*62c56f98SSadaf Ebrahimi
132*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA256_C:MBEDTLS_SELF_TEST */
133*62c56f98SSadaf Ebrahimivoid sha256_selftest()
134*62c56f98SSadaf Ebrahimi{
135*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha256_self_test(1), 0);
136*62c56f98SSadaf Ebrahimi}
137*62c56f98SSadaf Ebrahimi/* END_CASE */
138*62c56f98SSadaf Ebrahimi
139*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA384_C:MBEDTLS_SELF_TEST */
140*62c56f98SSadaf Ebrahimivoid sha384_selftest()
141*62c56f98SSadaf Ebrahimi{
142*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha384_self_test(1), 0);
143*62c56f98SSadaf Ebrahimi}
144*62c56f98SSadaf Ebrahimi/* END_CASE */
145*62c56f98SSadaf Ebrahimi
146*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA512_C:MBEDTLS_SELF_TEST */
147*62c56f98SSadaf Ebrahimivoid sha512_selftest()
148*62c56f98SSadaf Ebrahimi{
149*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha512_self_test(1), 0);
150*62c56f98SSadaf Ebrahimi}
151*62c56f98SSadaf Ebrahimi/* END_CASE */
152*62c56f98SSadaf Ebrahimi
153*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
154*62c56f98SSadaf Ebrahimivoid mbedtls_sha3(int family, data_t *in, data_t *hash)
155*62c56f98SSadaf Ebrahimi{
156*62c56f98SSadaf Ebrahimi    unsigned char *output = NULL;
157*62c56f98SSadaf Ebrahimi
158*62c56f98SSadaf Ebrahimi    TEST_CALLOC(output, hash->len);
159*62c56f98SSadaf Ebrahimi
160*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3(family, in->x, in->len, output, hash->len) == 0);
161*62c56f98SSadaf Ebrahimi
162*62c56f98SSadaf Ebrahimi    TEST_MEMORY_COMPARE(output, hash->len, hash->x, hash->len);
163*62c56f98SSadaf Ebrahimi
164*62c56f98SSadaf Ebrahimiexit:
165*62c56f98SSadaf Ebrahimi    mbedtls_free(output);
166*62c56f98SSadaf Ebrahimi}
167*62c56f98SSadaf Ebrahimi/* END_CASE */
168*62c56f98SSadaf Ebrahimi
169*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
170*62c56f98SSadaf Ebrahimivoid sha3_invalid_param()
171*62c56f98SSadaf Ebrahimi{
172*62c56f98SSadaf Ebrahimi    unsigned char output[32];
173*62c56f98SSadaf Ebrahimi    mbedtls_sha3_context ctx;
174*62c56f98SSadaf Ebrahimi
175*62c56f98SSadaf Ebrahimi    mbedtls_sha3_init(&ctx);
176*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_NONE), MBEDTLS_ERR_SHA3_BAD_INPUT_DATA);
177*62c56f98SSadaf Ebrahimi
178*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_256), 0);
179*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha3_finish(&ctx, output, 0), MBEDTLS_ERR_SHA3_BAD_INPUT_DATA);
180*62c56f98SSadaf Ebrahimi
181*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_256), 0);
182*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha3_finish(&ctx, output, 31), MBEDTLS_ERR_SHA3_BAD_INPUT_DATA);
183*62c56f98SSadaf Ebrahimi
184*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha3_starts(&ctx, MBEDTLS_SHA3_256), 0);
185*62c56f98SSadaf Ebrahimi    TEST_EQUAL(mbedtls_sha3_finish(&ctx, output, 32), 0);
186*62c56f98SSadaf Ebrahimi
187*62c56f98SSadaf Ebrahimiexit:
188*62c56f98SSadaf Ebrahimi    return;
189*62c56f98SSadaf Ebrahimi}
190*62c56f98SSadaf Ebrahimi/* END_CASE */
191*62c56f98SSadaf Ebrahimi
192*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
193*62c56f98SSadaf Ebrahimivoid mbedtls_sha3_multi(int family, data_t *in, data_t *hash)
194*62c56f98SSadaf Ebrahimi{
195*62c56f98SSadaf Ebrahimi    unsigned char *output = NULL;
196*62c56f98SSadaf Ebrahimi    mbedtls_sha3_context ctx;
197*62c56f98SSadaf Ebrahimi    const unsigned int block_size = 256;
198*62c56f98SSadaf Ebrahimi
199*62c56f98SSadaf Ebrahimi    TEST_CALLOC(output, hash->len);
200*62c56f98SSadaf Ebrahimi
201*62c56f98SSadaf Ebrahimi    mbedtls_sha3_init(&ctx);
202*62c56f98SSadaf Ebrahimi    mbedtls_sha3_starts(&ctx, family);
203*62c56f98SSadaf Ebrahimi
204*62c56f98SSadaf Ebrahimi    for (size_t l = 0; l < in->len; l += block_size) {
205*62c56f98SSadaf Ebrahimi        TEST_ASSERT(mbedtls_sha3_update(&ctx, in->x + l, MIN(in->len - l, block_size)) == 0);
206*62c56f98SSadaf Ebrahimi    }
207*62c56f98SSadaf Ebrahimi
208*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_finish(&ctx, output, hash->len) == 0);
209*62c56f98SSadaf Ebrahimi
210*62c56f98SSadaf Ebrahimi    TEST_MEMORY_COMPARE(output, hash->len, hash->x, hash->len);
211*62c56f98SSadaf Ebrahimi
212*62c56f98SSadaf Ebrahimiexit:
213*62c56f98SSadaf Ebrahimi    mbedtls_free(output);
214*62c56f98SSadaf Ebrahimi}
215*62c56f98SSadaf Ebrahimi/* END_CASE */
216*62c56f98SSadaf Ebrahimi
217*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
218*62c56f98SSadaf Ebrahimivoid sha3_streaming(int type, data_t *input)
219*62c56f98SSadaf Ebrahimi{
220*62c56f98SSadaf Ebrahimi    mbedtls_sha3_context ctx;
221*62c56f98SSadaf Ebrahimi    unsigned char reference_hash[64];
222*62c56f98SSadaf Ebrahimi    unsigned char hash[64];
223*62c56f98SSadaf Ebrahimi    size_t chunk_size;
224*62c56f98SSadaf Ebrahimi    size_t hash_length = (type == MBEDTLS_SHA3_224 ? 28 :
225*62c56f98SSadaf Ebrahimi                          type == MBEDTLS_SHA3_256 ? 32 :
226*62c56f98SSadaf Ebrahimi                          type == MBEDTLS_SHA3_384 ? 48 :
227*62c56f98SSadaf Ebrahimi                          type == MBEDTLS_SHA3_512 ? 64 :
228*62c56f98SSadaf Ebrahimi                          0);
229*62c56f98SSadaf Ebrahimi
230*62c56f98SSadaf Ebrahimi    mbedtls_sha3_init(&ctx);
231*62c56f98SSadaf Ebrahimi    memset(reference_hash, 0, sizeof(reference_hash));
232*62c56f98SSadaf Ebrahimi    memset(hash, 0, sizeof(hash));
233*62c56f98SSadaf Ebrahimi    TEST_ASSERT(hash_length != 0);
234*62c56f98SSadaf Ebrahimi
235*62c56f98SSadaf Ebrahimi    /* Generate a reference hash */
236*62c56f98SSadaf Ebrahimi    mbedtls_sha3(type, input->x, input->len, reference_hash, hash_length);
237*62c56f98SSadaf Ebrahimi
238*62c56f98SSadaf Ebrahimi    /* Repeat each test with increasingly-sized data chunks
239*62c56f98SSadaf Ebrahimi     * E.g. start by processing bytes individual bytes, then 2-byte chunks,
240*62c56f98SSadaf Ebrahimi     * then 3-byte chunks, and so on...
241*62c56f98SSadaf Ebrahimi     * At each test ensure that the same hash is generated.
242*62c56f98SSadaf Ebrahimi     */
243*62c56f98SSadaf Ebrahimi    for (chunk_size = 1; chunk_size < input->len; chunk_size++) {
244*62c56f98SSadaf Ebrahimi        size_t i;
245*62c56f98SSadaf Ebrahimi        size_t remaining = input->len;
246*62c56f98SSadaf Ebrahimi
247*62c56f98SSadaf Ebrahimi        mbedtls_sha3_init(&ctx);
248*62c56f98SSadaf Ebrahimi        TEST_ASSERT(mbedtls_sha3_starts(&ctx, type) == 0);
249*62c56f98SSadaf Ebrahimi
250*62c56f98SSadaf Ebrahimi        for (i = 0; i < input->len; i += chunk_size) {
251*62c56f98SSadaf Ebrahimi            size_t len = remaining >= chunk_size ? chunk_size : remaining;
252*62c56f98SSadaf Ebrahimi            TEST_ASSERT(mbedtls_sha3_update(&ctx, input->x + i, len) == 0);
253*62c56f98SSadaf Ebrahimi            remaining -= len;
254*62c56f98SSadaf Ebrahimi        }
255*62c56f98SSadaf Ebrahimi
256*62c56f98SSadaf Ebrahimi        mbedtls_sha3_finish(&ctx, hash, hash_length);
257*62c56f98SSadaf Ebrahimi        mbedtls_sha3_free(&ctx);
258*62c56f98SSadaf Ebrahimi
259*62c56f98SSadaf Ebrahimi        TEST_MEMORY_COMPARE(hash, hash_length, reference_hash, hash_length);
260*62c56f98SSadaf Ebrahimi    }
261*62c56f98SSadaf Ebrahimi
262*62c56f98SSadaf Ebrahimiexit:
263*62c56f98SSadaf Ebrahimi    mbedtls_sha3_free(&ctx);
264*62c56f98SSadaf Ebrahimi}
265*62c56f98SSadaf Ebrahimi/* END_CASE */
266*62c56f98SSadaf Ebrahimi
267*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C */
268*62c56f98SSadaf Ebrahimivoid sha3_reuse(data_t *input1, data_t *hash1,
269*62c56f98SSadaf Ebrahimi                data_t *input2, data_t *hash2)
270*62c56f98SSadaf Ebrahimi{
271*62c56f98SSadaf Ebrahimi    unsigned char output[64];
272*62c56f98SSadaf Ebrahimi    mbedtls_sha3_context ctx;
273*62c56f98SSadaf Ebrahimi    mbedtls_sha3_id type1, type2;
274*62c56f98SSadaf Ebrahimi
275*62c56f98SSadaf Ebrahimi    mbedtls_sha3_init(&ctx);
276*62c56f98SSadaf Ebrahimi    switch (hash1->len) {
277*62c56f98SSadaf Ebrahimi        case 28: type1 = MBEDTLS_SHA3_224; break;
278*62c56f98SSadaf Ebrahimi        case 32: type1 = MBEDTLS_SHA3_256; break;
279*62c56f98SSadaf Ebrahimi        case 48: type1 = MBEDTLS_SHA3_384; break;
280*62c56f98SSadaf Ebrahimi        case 64: type1 = MBEDTLS_SHA3_512; break;
281*62c56f98SSadaf Ebrahimi        default: TEST_FAIL("hash1->len validity"); break;
282*62c56f98SSadaf Ebrahimi    }
283*62c56f98SSadaf Ebrahimi    switch (hash2->len) {
284*62c56f98SSadaf Ebrahimi        case 28: type2 = MBEDTLS_SHA3_224; break;
285*62c56f98SSadaf Ebrahimi        case 32: type2 = MBEDTLS_SHA3_256; break;
286*62c56f98SSadaf Ebrahimi        case 48: type2 = MBEDTLS_SHA3_384; break;
287*62c56f98SSadaf Ebrahimi        case 64: type2 = MBEDTLS_SHA3_512; break;
288*62c56f98SSadaf Ebrahimi        default: TEST_FAIL("hash2->len validity"); break;
289*62c56f98SSadaf Ebrahimi    }
290*62c56f98SSadaf Ebrahimi
291*62c56f98SSadaf Ebrahimi    /* Round 1 */
292*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_starts(&ctx, type1) == 0);
293*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_update(&ctx, input1->x, input1->len) == 0);
294*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_finish(&ctx, output, sizeof(output)) == 0);
295*62c56f98SSadaf Ebrahimi    TEST_MEMORY_COMPARE(output, hash1->len, hash1->x, hash1->len);
296*62c56f98SSadaf Ebrahimi
297*62c56f98SSadaf Ebrahimi    /* Round 2 */
298*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_starts(&ctx, type2) == 0);
299*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_update(&ctx, input2->x, input2->len) == 0);
300*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_finish(&ctx, output, sizeof(output)) == 0);
301*62c56f98SSadaf Ebrahimi    TEST_MEMORY_COMPARE(output, hash2->len, hash2->x, hash2->len);
302*62c56f98SSadaf Ebrahimi
303*62c56f98SSadaf Ebrahimiexit:
304*62c56f98SSadaf Ebrahimi    mbedtls_sha3_free(&ctx);
305*62c56f98SSadaf Ebrahimi}
306*62c56f98SSadaf Ebrahimi/* END_CASE */
307*62c56f98SSadaf Ebrahimi
308*62c56f98SSadaf Ebrahimi/* BEGIN_CASE depends_on:MBEDTLS_SHA3_C:MBEDTLS_SELF_TEST */
309*62c56f98SSadaf Ebrahimivoid sha3_selftest()
310*62c56f98SSadaf Ebrahimi{
311*62c56f98SSadaf Ebrahimi    TEST_ASSERT(mbedtls_sha3_self_test(0) == 0);
312*62c56f98SSadaf Ebrahimi}
313*62c56f98SSadaf Ebrahimi/* END_CASE */
314