/* Copyright 2016 The Chromium OS Authors. All rights reserved.
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

#pragma once

#include <stdint.h>
#include "2crypto.h"

/**
 * Compute HMAC
 *
 * @param alg		Hash algorithm ID
 * @param key		HMAC key
 * @param key_size	HMAC key size
 * @param msg		Message to compute HMAC for
 * @param msg_size	Message size
 * @param mac		Computed message authentication code
 * @param mac_size	Size of the buffer pointed by <mac>
 * @return
 */
int hmac(enum vb2_hash_algorithm alg,
	 const void *key, uint32_t key_size,
	 const void *msg, uint32_t msg_size,
	 uint8_t *mac, uint32_t mac_size);

