blob: c6cd8702641a2dc6cdd8186f7aa1f5ddbde4012e [file] [log] [blame]
Thomas Fossati656864b2016-07-17 08:51:22 +01001/* 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 */
11void 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 */