size_t key_len)
{
EVP_PKEY_CTX *ctx;
+ uint16_t length = key_len & 0xFFFF;
int ret;
ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL);
goto out_free_ctx;
if (EVP_PKEY_CTX_set1_hkdf_key(ctx, generated, key_len) <= 0)
goto out_free_ctx;
+ if (EVP_PKEY_CTX_add1_hkdf_info(ctx,
+ (const unsigned char *)&length, 2) <= 0)
+ goto out_free_ctx;
if (EVP_PKEY_CTX_add1_hkdf_info(ctx,
(const unsigned char *)"tls13 ", 6) <= 0)
goto out_free_ctx;
unsigned char *psk, size_t key_len)
{
EVP_PKEY_CTX *ctx;
+ uint16_t length = key_len & 0xFFFF;
int ret;
ctx = EVP_PKEY_CTX_new_id(EVP_PKEY_HKDF, NULL);
goto out_free_ctx;
if (EVP_PKEY_CTX_set1_hkdf_key(ctx, retained, key_len) <= 0)
goto out_free_ctx;
+ if (EVP_PKEY_CTX_add1_hkdf_info(ctx,
+ (const unsigned char *)&length, 2) <= 0)
+ goto out_free_ctx;
if (EVP_PKEY_CTX_add1_hkdf_info(ctx,
(const unsigned char *)"tls13 ", 6) <= 0)
goto out_free_ctx;