Thomas Fossati | 656864b | 2016-07-17 08:51:22 +0100 | [diff] [blame] | 1 | /* BEGIN_HEADER */ |
| 2 | #include "mbedtls/hkdf.h" |
| 3 | /* END_HEADER */ |
| 4 | |
| 5 | /* BEGIN_DEPENDENCIES |
| 6 | * depends_on:MBEDTLS_HKDF_C |
| 7 | * END_DEPENDENCIES |
| 8 | */ |
| 9 | |
| 10 | /* BEGIN_CASE */ |
| 11 | void test_hkdf( int md_alg, char *hex_ikm_string, char *hex_salt_string, |
| 12 | char *hex_info_string, char *hex_okm_string ) |
| 13 | { |
| 14 | int ret; |
| 15 | size_t ikm_len, salt_len, info_len, okm_len; |
| 16 | unsigned char ikm[1024] = { '\0' }; |
| 17 | unsigned char salt[1024] = { '\0' }; |
| 18 | unsigned char info[1024] = { '\0' }; |
| 19 | unsigned char expected_okm[1024] = { '\0' }; |
| 20 | unsigned char okm[1024] = { '\0' }; |
| 21 | unsigned char okm_string[1000] = { '\0' }; |
| 22 | |
| 23 | const mbedtls_md_info_t *md = mbedtls_md_info_from_type( md_alg ); |
| 24 | TEST_ASSERT( md != NULL ); |
| 25 | |
| 26 | ikm_len = unhexify( ikm, hex_ikm_string ); |
| 27 | salt_len = unhexify( salt, hex_salt_string ); |
| 28 | info_len = unhexify( info, hex_info_string ); |
| 29 | okm_len = unhexify( expected_okm, hex_okm_string ); |
| 30 | |
| 31 | ret = mbedtls_hkdf( md, salt, salt_len, ikm, ikm_len, info, info_len, okm, |
| 32 | okm_len); |
| 33 | TEST_ASSERT( ret == 0 ); |
| 34 | |
| 35 | // Run hexify on it so that it looks nicer if the assertion fails |
| 36 | hexify( okm_string, okm, okm_len ); |
| 37 | TEST_ASSERT( !strcmp( (char *)okm_string, hex_okm_string ) ); |
| 38 | } |
| 39 | /* END_CASE */ |