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 <zala.lucian@gmail.com>
This commit is contained in:
Lucian Zala 2024-01-30 17:43:11 +02:00 committed by Jamie
parent a4eda30f5b
commit 79c284b0a5
1 changed files with 9 additions and 2 deletions

View File

@ -623,8 +623,15 @@ class Image():
@staticmethod
def verify(imgfile, key):
with open(imgfile, "rb") as f:
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])