/* 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 */