/* BEGIN_HEADER */ #include "mbedtls/hkdf.h" /* END_HEADER */ /* BEGIN_DEPENDENCIES * depends_on:MBEDTLS_HKDF_C * END_DEPENDENCIES */ /* BEGIN_CASE */ void test_hkdf(int md_alg, char *hex_ikm_string, char *hex_salt_string, char *hex_info_string, char *hex_okm_string) { int ret; size_t ikm_len, salt_len, info_len, okm_len; unsigned char ikm[1024] = {'\0'}; unsigned char salt[1024] = {'\0'}; unsigned char info[1024] = {'\0'}; unsigned char expected_okm[1024] = {'\0'}; unsigned char okm[1024] = {'\0'}; unsigned char okm_string[1000] = {'\0'}; const mbedtls_md_info_t *md = mbedtls_md_info_from_type(md_alg); TEST_ASSERT(md != NULL); ikm_len = unhexify(ikm, hex_ikm_string); salt_len = unhexify(salt, hex_salt_string); info_len = unhexify(info, hex_info_string); okm_len = unhexify(expected_okm, hex_okm_string); ret = mbedtls_hkdf(md, salt, salt_len, ikm, ikm_len, info, info_len, okm, okm_len); TEST_ASSERT(ret == 0); // Run hexify on it so that it looks nicer if the assertion fails hexify(okm_string, okm, okm_len); TEST_ASSERT(!strcmp((char *)okm_string, hex_okm_string)); } /* END_CASE */