xref: /optee_os/core/lib/libtomcrypt/aes.c (revision 5a913ee74d3c71af2a2860ce8a4e7aeab2916f9b)
125cc72e0SJens Wiklander // SPDX-License-Identifier: BSD-2-Clause
225cc72e0SJens Wiklander /*
325cc72e0SJens Wiklander  * Copyright (c) 2014-2019, Linaro Limited
425cc72e0SJens Wiklander  */
525cc72e0SJens Wiklander 
625cc72e0SJens Wiklander #include <crypto/crypto.h>
725cc72e0SJens Wiklander #include <kernel/panic.h>
825cc72e0SJens Wiklander #include <tee_api_defines.h>
925cc72e0SJens Wiklander #include <tee_api_types.h>
10*5a913ee7SJerome Forissier #include <tomcrypt_private.h>
1125cc72e0SJens Wiklander 
1225cc72e0SJens Wiklander TEE_Result crypto_aes_expand_enc_key(const void *key, size_t key_len,
1325cc72e0SJens Wiklander 				     void *enc_key, size_t enc_keylen,
1425cc72e0SJens Wiklander 				     unsigned int *rounds)
1525cc72e0SJens Wiklander {
1625cc72e0SJens Wiklander 	symmetric_key skey;
1725cc72e0SJens Wiklander 
1825cc72e0SJens Wiklander 	if (enc_keylen < sizeof(skey.rijndael.eK))
1925cc72e0SJens Wiklander 		return TEE_ERROR_BAD_PARAMETERS;
2025cc72e0SJens Wiklander 
2125cc72e0SJens Wiklander 	if (aes_setup(key, key_len, 0, &skey))
2225cc72e0SJens Wiklander 		return TEE_ERROR_BAD_PARAMETERS;
2325cc72e0SJens Wiklander 
2425cc72e0SJens Wiklander 	memcpy(enc_key, skey.rijndael.eK, sizeof(skey.rijndael.eK));
2525cc72e0SJens Wiklander 	*rounds = skey.rijndael.Nr;
2625cc72e0SJens Wiklander 	return TEE_SUCCESS;
2725cc72e0SJens Wiklander }
2825cc72e0SJens Wiklander 
2925cc72e0SJens Wiklander void crypto_aes_enc_block(const void *enc_key, size_t enc_keylen __maybe_unused,
3025cc72e0SJens Wiklander 			  unsigned int rounds, const void *src, void *dst)
3125cc72e0SJens Wiklander {
3225cc72e0SJens Wiklander 	symmetric_key skey;
3325cc72e0SJens Wiklander 
3425cc72e0SJens Wiklander 	assert(enc_keylen >= sizeof(skey.rijndael.eK));
3525cc72e0SJens Wiklander 	memcpy(skey.rijndael.eK, enc_key, sizeof(skey.rijndael.eK));
3625cc72e0SJens Wiklander 	skey.rijndael.Nr = rounds;
3725cc72e0SJens Wiklander 	if (aes_ecb_encrypt(src, dst, &skey))
3825cc72e0SJens Wiklander 		panic();
3925cc72e0SJens Wiklander }
40