diff options
author | Philippe Reynes <philippe.reynes@softathome.com> | 2020-09-17 15:01:47 +0200 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2020-10-12 21:30:38 -0400 |
commit | 54ab7cf1dd3f88e124d16c5ef64b0aae4e704ffc (patch) | |
tree | 955757664c3f2cf8d893940678b020734952ea21 /common | |
parent | a6982a6f768bdcf4bd0848ff4dbe68c2fd6599fb (diff) | |
download | u-boot-54ab7cf1dd3f88e124d16c5ef64b0aae4e704ffc.tar.gz |
fit: cipher: aes: allow to read the IV in the FIT image
This commit add the support in u-boot to read the IV
in the FIT image instead of u-boot device tree.
Signed-off-by: Philippe Reynes <philippe.reynes@softathome.com>
Diffstat (limited to 'common')
-rw-r--r-- | common/image-cipher.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/common/image-cipher.c b/common/image-cipher.c index 09869f7846..4ca9eec4ef 100644 --- a/common/image-cipher.c +++ b/common/image-cipher.c @@ -94,9 +94,11 @@ static int fit_image_setup_decrypt(struct image_cipher_info *info, return -1; } + info->iv = fdt_getprop(fit, cipher_noffset, "iv", NULL); info->ivname = fdt_getprop(fit, cipher_noffset, "iv-name-hint", NULL); - if (!info->ivname) { - printf("Can't get IV name\n"); + + if (!info->iv && !info->ivname) { + printf("Can't get IV or IV name\n"); return -1; } @@ -120,8 +122,12 @@ static int fit_image_setup_decrypt(struct image_cipher_info *info, * Search the cipher node in the u-boot fdt * the path should be: /cipher/key-<algo>-<key>-<iv> */ - snprintf(node_path, sizeof(node_path), "/%s/key-%s-%s-%s", - FIT_CIPHER_NODENAME, algo_name, info->keyname, info->ivname); + if (info->ivname) + snprintf(node_path, sizeof(node_path), "/%s/key-%s-%s-%s", + FIT_CIPHER_NODENAME, algo_name, info->keyname, info->ivname); + else + snprintf(node_path, sizeof(node_path), "/%s/key-%s-%s", + FIT_CIPHER_NODENAME, algo_name, info->keyname); noffset = fdt_path_offset(fdt, node_path); if (noffset < 0) { @@ -137,10 +143,12 @@ static int fit_image_setup_decrypt(struct image_cipher_info *info, } /* read iv */ - info->iv = fdt_getprop(fdt, noffset, "iv", NULL); if (!info->iv) { - printf("Can't get IV in cipher node '%s'\n", node_path); - return -1; + info->iv = fdt_getprop(fdt, noffset, "iv", NULL); + if (!info->iv) { + printf("Can't get IV in cipher node '%s'\n", node_path); + return -1; + } } return 0; |