From 25cc72e017f4914b3b4ab7d5f5c40067d97f0e1b Mon Sep 17 00:00:00 2001 From: Jens Wiklander Date: Tue, 26 Mar 2019 20:31:53 +0100 Subject: core: ltc: move remaining exported aes functions Moves remaining exported aes functions to aes.c Acked-by: Jerome Forissier Signed-off-by: Jens Wiklander --- core/lib/libtomcrypt/aes.c | 39 +++++++++++++++++++++++++++++ core/lib/libtomcrypt/src/tee_ltc_provider.c | 29 --------------------- core/lib/libtomcrypt/sub.mk | 1 + 3 files changed, 40 insertions(+), 29 deletions(-) create mode 100644 core/lib/libtomcrypt/aes.c diff --git a/core/lib/libtomcrypt/aes.c b/core/lib/libtomcrypt/aes.c new file mode 100644 index 00000000..027a2f76 --- /dev/null +++ b/core/lib/libtomcrypt/aes.c @@ -0,0 +1,39 @@ +// SPDX-License-Identifier: BSD-2-Clause +/* + * Copyright (c) 2014-2019, Linaro Limited + */ + +#include +#include +#include +#include +#include + +TEE_Result crypto_aes_expand_enc_key(const void *key, size_t key_len, + void *enc_key, size_t enc_keylen, + unsigned int *rounds) +{ + symmetric_key skey; + + if (enc_keylen < sizeof(skey.rijndael.eK)) + return TEE_ERROR_BAD_PARAMETERS; + + if (aes_setup(key, key_len, 0, &skey)) + return TEE_ERROR_BAD_PARAMETERS; + + memcpy(enc_key, skey.rijndael.eK, sizeof(skey.rijndael.eK)); + *rounds = skey.rijndael.Nr; + return TEE_SUCCESS; +} + +void crypto_aes_enc_block(const void *enc_key, size_t enc_keylen __maybe_unused, + unsigned int rounds, const void *src, void *dst) +{ + symmetric_key skey; + + assert(enc_keylen >= sizeof(skey.rijndael.eK)); + memcpy(skey.rijndael.eK, enc_key, sizeof(skey.rijndael.eK)); + skey.rijndael.Nr = rounds; + if (aes_ecb_encrypt(src, dst, &skey)) + panic(); +} diff --git a/core/lib/libtomcrypt/src/tee_ltc_provider.c b/core/lib/libtomcrypt/src/tee_ltc_provider.c index 2fa3d662..2663e774 100644 --- a/core/lib/libtomcrypt/src/tee_ltc_provider.c +++ b/core/lib/libtomcrypt/src/tee_ltc_provider.c @@ -144,32 +144,3 @@ void tomcrypt_arm_neon_disable(struct tomcrypt_arm_neon_state *state) thread_kernel_disable_vfp(state->state); } #endif - -TEE_Result crypto_aes_expand_enc_key(const void *key, size_t key_len, - void *enc_key, size_t enc_keylen, - unsigned int *rounds) -{ - symmetric_key skey; - - if (enc_keylen < sizeof(skey.rijndael.eK)) - return TEE_ERROR_BAD_PARAMETERS; - - if (aes_setup(key, key_len, 0, &skey)) - return TEE_ERROR_BAD_PARAMETERS; - - memcpy(enc_key, skey.rijndael.eK, sizeof(skey.rijndael.eK)); - *rounds = skey.rijndael.Nr; - return TEE_SUCCESS; -} - -void crypto_aes_enc_block(const void *enc_key, size_t enc_keylen __maybe_unused, - unsigned int rounds, const void *src, void *dst) -{ - symmetric_key skey; - - assert(enc_keylen >= sizeof(skey.rijndael.eK)); - memcpy(skey.rijndael.eK, enc_key, sizeof(skey.rijndael.eK)); - skey.rijndael.Nr = rounds; - if (aes_ecb_encrypt(src, dst, &skey)) - panic(); -} diff --git a/core/lib/libtomcrypt/sub.mk b/core/lib/libtomcrypt/sub.mk index 50333ac1..31fbcd41 100644 --- a/core/lib/libtomcrypt/sub.mk +++ b/core/lib/libtomcrypt/sub.mk @@ -19,3 +19,4 @@ srcs-$(CFG_CRYPTO_DSA) += dsa.c srcs-$(CFG_CRYPTO_ECC) += ecc.c srcs-$(CFG_CRYPTO_RSA) += rsa.c srcs-$(CFG_CRYPTO_DH) += dh.c +srcs-$(CFG_CRYPTO_AES) += aes.c -- cgit v1.2.3