/* * Copyright (C) 2018-2022 Intel Corporation. * * SPDX-License-Identifier: BSD-3-Clause */ #include #include "mbedtls/hkdf.h" #include "mbedtls/md.h" int32_t hkdf_sha256(uint8_t *out_key, size_t out_len, const uint8_t *secret, size_t secret_len, const uint8_t *salt, size_t salt_len, const uint8_t *info, size_t info_len) { int32_t ret = 0; const mbedtls_md_info_t *md; /* salt and info can be NULL, others can't */ if ((out_key != NULL) && (secret != NULL)) { md = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); if (md != NULL) { if (mbedtls_hkdf(md, salt, salt_len, secret, secret_len, info, info_len, out_key, out_len) == 0) { ret = 1; } } } return ret; } int32_t hmac_sha256(uint8_t *out_key, const uint8_t *secret, size_t secret_len, const uint8_t *salt, size_t salt_len) { int32_t ret = 0; const mbedtls_md_info_t *md; if ((out_key != NULL) && (secret != NULL) && (salt != NULL)) { md = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256); if (md != NULL) { if (mbedtls_md_hmac(md, secret, secret_len, salt, salt_len, out_key) == 0) { ret = 1; } } } return ret; }