From b7a8e946640a7fabadeb0fff2a31e1df1fe0de3b Mon Sep 17 00:00:00 2001 From: Lucian Zala Date: Tue, 16 Jan 2024 13:48:22 +0200 Subject: [PATCH] scripts: imgtool: Fix img verify for hex file format Currently imgtool --verify fails for hex files with: Invalid image magic; is this an MCUboot image? Added support for hex files by converting hex to bin using IntelHex::tobinstr(). Reusing image.load() needs a bit of rework, maybe a common load method will be done in the future, Signed-off-by: Lucian Zala --- scripts/imgtool/image.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/scripts/imgtool/image.py b/scripts/imgtool/image.py index 67f4a30bbf..3de8357a6f 100644 --- a/scripts/imgtool/image.py +++ b/scripts/imgtool/image.py @@ -623,8 +623,15 @@ def pad_to(self, size): @staticmethod def verify(imgfile, key): - with open(imgfile, "rb") as f: - b = f.read() + ext = os.path.splitext(imgfile)[1][1:].lower() + try: + if ext == INTEL_HEX_EXT: + b = IntelHex(imgfile).tobinstr() + else: + with open(imgfile, 'rb') as f: + b = f.read() + except FileNotFoundError: + raise click.UsageError(f"Image file {imgfile} not found") magic, _, header_size, _, img_size = struct.unpack('IIHHI', b[:16]) version = struct.unpack('BBHI', b[20:28])