diff options
author | Jens Wiklander <jens.wiklander@linaro.org> | 2019-03-26 20:31:53 +0100 |
---|---|---|
committer | Jérôme Forissier <jerome.forissier@linaro.org> | 2019-03-28 14:11:23 +0100 |
commit | 25cc72e017f4914b3b4ab7d5f5c40067d97f0e1b (patch) | |
tree | 2011f7b34b2389e1397cd8a3e80c005cf08c27d1 /core | |
parent | 0f1ae0540bc8bae083451ed44001b50139b84603 (diff) |
core: ltc: move remaining exported aes functions
Moves remaining exported aes functions to aes.c
Acked-by: Jerome Forissier <jerome.forissier@linaro.org>
Signed-off-by: Jens Wiklander <jens.wiklander@linaro.org>
Diffstat (limited to 'core')
-rw-r--r-- | core/lib/libtomcrypt/aes.c | 39 | ||||
-rw-r--r-- | core/lib/libtomcrypt/src/tee_ltc_provider.c | 29 | ||||
-rw-r--r-- | core/lib/libtomcrypt/sub.mk | 1 |
3 files changed, 40 insertions, 29 deletions
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 <crypto/crypto.h> +#include <kernel/panic.h> +#include <tee_api_defines.h> +#include <tee_api_types.h> +#include <tomcrypt.h> + +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 |