1 // SPDX-License-Identifier: BSD-2-Clause
2 /*
3  * Copyright 2018-2020 NXP
4  *
5  * Crypto MAC interface implementation to enable HW driver.
6  */
7 #include <assert.h>
8 #include <drvcrypt.h>
9 #include <drvcrypt_mac.h>
10 #include <utee_defines.h>
11 #include <util.h>
12 
drvcrypt_mac_alloc_ctx(struct crypto_mac_ctx ** ctx,uint32_t algo)13 TEE_Result drvcrypt_mac_alloc_ctx(struct crypto_mac_ctx **ctx, uint32_t algo)
14 {
15 	TEE_Result ret = TEE_ERROR_NOT_IMPLEMENTED;
16 	drvcrypt_mac_allocate mac_alloc = NULL;
17 	unsigned int algo_id = TEE_ALG_GET_MAIN_ALG(algo);
18 
19 	CRYPTO_TRACE("mac alloc_ctx algo 0x%" PRIX32, algo);
20 
21 	assert(ctx);
22 
23 	if (algo_id >= TEE_MAIN_ALGO_MD5 && algo_id <= TEE_MAIN_ALGO_SHA512)
24 		mac_alloc = drvcrypt_get_ops(CRYPTO_HMAC);
25 	else
26 		mac_alloc = drvcrypt_get_ops(CRYPTO_CMAC);
27 
28 	if (mac_alloc)
29 		ret = mac_alloc(ctx, algo);
30 
31 	CRYPTO_TRACE("mac alloc_ctx ret 0x%" PRIX32, ret);
32 
33 	return ret;
34 }
35