[U-Boot] [PATCH 1/5] tools/env: make env_aes_cbc_crypt re-entrant
Stefano Babic
sbabic at denx.de
Wed Apr 6 13:29:07 CEST 2016
Hi Andreas,
thanks for fixing this:
On 05/04/2016 23:13, Andreas Fenkart wrote:
> Signed-off-by: Andreas Fenkart <andreas.fenkart at digitalstrom.com>
> ---
> tools/env/fw_env.c | 17 +++++++++++------
> 1 file changed, 11 insertions(+), 6 deletions(-)
>
> diff --git a/tools/env/fw_env.c b/tools/env/fw_env.c
> index 1420ac5..c362a41 100644
> --- a/tools/env/fw_env.c
> +++ b/tools/env/fw_env.c
> @@ -106,7 +106,8 @@ static struct environment environment = {
> .flag_scheme = FLAG_NONE,
> };
>
> -static int env_aes_cbc_crypt(char *data, const int enc);
> +static int env_aes_cbc_crypt(char *data, const int enc,
> + uint8_t key[AES_KEY_LENGTH]);
>
Formally, is it not simply as pointer ?
static int env_aes_cbc_crypt(char *data, const int enc,
uint8_t *key);
> static int HaveRedundEnv = 0;
>
> @@ -304,7 +305,8 @@ int fw_env_close(void)
> {
> int ret;
> if (common_args.aes_flag) {
> - ret = env_aes_cbc_crypt(environment.data, 1);
> + ret = env_aes_cbc_crypt(environment.data, 1,
> + common_args.aes_key);
> if (ret) {
> fprintf(stderr,
> "Error: can't encrypt env for flash\n");
> @@ -949,7 +951,8 @@ static int flash_flag_obsolete (int dev, int fd, off_t offset)
> }
>
> /* Encrypt or decrypt the environment before writing or reading it. */
> -static int env_aes_cbc_crypt(char *payload, const int enc)
> +static int env_aes_cbc_crypt(char *payload, const int enc,
> + uint8_t key[AES_KEY_LENGTH])
Ditto.
> {
> uint8_t *data = (uint8_t *)payload;
> const int len = getenvsize();
> @@ -957,7 +960,7 @@ static int env_aes_cbc_crypt(char *payload, const int enc)
> uint32_t aes_blocks;
>
> /* First we expand the key. */
> - aes_expand_key(common_args.aes_key, key_exp);
> + aes_expand_key(key, key_exp);
>
> /* Calculate the number of AES blocks to encrypt. */
> aes_blocks = DIV_ROUND_UP(len, AES_KEY_LENGTH);
> @@ -1186,7 +1189,8 @@ int fw_env_open(void)
> crc0 = crc32 (0, (uint8_t *) environment.data, ENV_SIZE);
>
> if (common_args.aes_flag) {
> - ret = env_aes_cbc_crypt(environment.data, 0);
> + ret = env_aes_cbc_crypt(environment.data, 0,
> + common_args.aes_key);
> if (ret)
> return ret;
> }
> @@ -1243,7 +1247,8 @@ int fw_env_open(void)
> crc1 = crc32 (0, (uint8_t *) redundant->data, ENV_SIZE);
>
> if (common_args.aes_flag) {
> - ret = env_aes_cbc_crypt(redundant->data, 0);
> + ret = env_aes_cbc_crypt(redundant->data, 0,
> + common_args.aes_key);
> if (ret)
> return ret;
> }
>
Regards,
Stefano
--
=====================================================================
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-53 Fax: +49-8142-66989-80 Email: sbabic at denx.de
=====================================================================
More information about the U-Boot
mailing list