From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Babic Date: Wed, 6 Apr 2016 13:29:07 +0200 Subject: [U-Boot] [PATCH 1/5] tools/env: make env_aes_cbc_crypt re-entrant In-Reply-To: <1459890822-11382-2-git-send-email-andreas.fenkart@digitalstrom.com> References: <1459890822-11382-1-git-send-email-andreas.fenkart@digitalstrom.com> <1459890822-11382-2-git-send-email-andreas.fenkart@digitalstrom.com> Message-ID: <5704F303.7050304@denx.de> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Hi Andreas, thanks for fixing this: On 05/04/2016 23:13, Andreas Fenkart wrote: > Signed-off-by: Andreas Fenkart > --- > 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 =====================================================================