Signed-off-by: Andreas Fenkart <andreas.fenk...@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]);
 
 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])
 {
        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;
                }
-- 
2.8.0.rc3

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
http://lists.denx.de/mailman/listinfo/u-boot

Reply via email to