From: Patrick Oppenlander Date: Thu, 30 Jul 2020 04:22:15 +0000 (+1000) Subject: mkimage: fit: don't cipher ciphered data X-Git-Url: http://git.dujemihanovic.xyz/?a=commitdiff_plain;h=b33e5cc18263d438d11bb9a728b4117cc560cae4;p=u-boot.git mkimage: fit: don't cipher ciphered data Previously, mkimage -F could be run multiple times causing already ciphered image data to be ciphered again. Signed-off-by: Patrick Oppenlander Reviewed-by: Philippe Reynes --- diff --git a/tools/image-host.c b/tools/image-host.c index b4603c5f01..e5417beee5 100644 --- a/tools/image-host.c +++ b/tools/image-host.c @@ -482,7 +482,7 @@ int fit_image_cipher_data(const char *keydir, void *keydest, const char *image_name; const void *data; size_t size; - int cipher_node_offset; + int cipher_node_offset, len; /* Get image name */ image_name = fit_get_name(fit, image_noffset, NULL); @@ -497,6 +497,19 @@ int fit_image_cipher_data(const char *keydir, void *keydest, return -1; } + /* + * Don't cipher ciphered data. + * + * If the data-size-unciphered property is present the data for this + * image is already encrypted. This is important as 'mkimage -F' can be + * run multiple times on a FIT image. + */ + if (fdt_getprop(fit, image_noffset, "data-size-unciphered", &len)) + return 0; + if (len != -FDT_ERR_NOTFOUND) { + printf("Failure testing for data-size-unciphered\n"); + return -1; + } /* Process cipher node if present */ cipher_node_offset = fdt_subnode_offset(fit, image_noffset,