acrn-hypervisor/hypervisor/lib/crypto/crypto_api.c
Chen Gang G 0100b5a2e1 HV: replace dynamic memory with static for crypto library
Remove dynamic memory allocation in crypto lib, use array to
replace them.

Tracked-On: #1900
Reviewed-by: Bing Zhu <bing.zhu@intel.com>
Signed-off-by: Chen Gang G <gang.g.chen@intel.com>
Acked-by: Eddie Dong <eddie.dong@intel.com>
2018-11-28 10:24:57 +08:00

63 lines
1.1 KiB
C

/*
* Copyright (C) 2018 Intel Corporation. All rights reserved.
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <rtl.h>
#include "mbedtls/hkdf.h"
#include "mbedtls/md.h"
int 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)
{
const mbedtls_md_info_t *md;
/* salt and info can be NULL, others can't */
if (!out_key || !secret) {
return 0;
}
md = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256);
if (md == NULL) {
return 0;
}
if (mbedtls_hkdf(md,
salt, salt_len,
secret, secret_len,
info, info_len,
out_key, out_len) != 0) {
return 0;
}
return 1;
}
int hmac_sha256(uint8_t *out_key,
const uint8_t *secret, size_t secret_len,
const uint8_t *salt, size_t salt_len)
{
const mbedtls_md_info_t *md;
if (!out_key || !secret || !salt) {
return 0;
}
md = mbedtls_md_info_from_type(MBEDTLS_MD_SHA256);
if (md == NULL) {
return 0;
}
if (mbedtls_md_hmac(md,
secret, secret_len,
salt, salt_len,
out_key) != 0) {
return 0;
}
return 1;
}