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