Skip to content

Commit 9372d15

Browse files
committed
imgtool: Temporary workaround for entanglement with TF-M.
Once TF-M stops using internal imgtool APIs this commit should be reverted. Signed-off-by: Dominik Ermel <[email protected]>
1 parent 01a3b55 commit 9372d15

File tree

2 files changed

+28
-4
lines changed

2 files changed

+28
-4
lines changed

scripts/imgtool/image.py

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -511,7 +511,7 @@ def ecies_hkdf(self, enckey, plainkey, hmac_sha_alg):
511511
format=PublicFormat.Raw)
512512
return cipherkey, ciphermac, pubk
513513

514-
def create(self, key, public_key_format, enckey, dependencies=None,
514+
def create2(self, key, public_key_format, enckey, dependencies=None,
515515
sw_type=None, custom_tlvs=None, compression_tlvs=None,
516516
compression_type=None, aes_key=None, clear=False,
517517
fixed_sig=None, pub_key=None, vector_to_sign=None,
@@ -792,6 +792,30 @@ def create(self, key, public_key_format, enckey, dependencies=None,
792792

793793
self.check_trailer()
794794

795+
def create(self, key, public_key_format, enckey, dependencies=None,
796+
sw_type=None, custom_tlvs=None, compression_tlvs=None,
797+
compression_type=None, encrypt_keylen=128, clear=False,
798+
fixed_sig=None, pub_key=None, vector_to_sign=None,
799+
user_sha='auto', hmac_sha='auto', is_pure=False, keep_comp_size=False,
800+
dont_encrypt=False):
801+
802+
if dont_encrypt:
803+
plainkey = None
804+
else:
805+
if encrypt_keylen == 256:
806+
encrypt_keylen_bytes = 32
807+
else:
808+
encrypt_keylen_bytes = 16
809+
810+
# No AES plain key and there is request to encrypt, generate random AES key
811+
plainkey = os.urandom(encrypt_keylen_bytes)
812+
813+
return self.create2(key, public_key_format, enckey, dependencies, sw_type,
814+
custom_tlvs, compression_tlvs, compression_type,
815+
plainkey, clear, fixed_sig, pub_key, vector_to_sign,
816+
user_sha, hmac_sha, is_pure, keep_comp_size)
817+
818+
795819
def get_struct_endian(self):
796820
return STRUCT_ENDIAN_DICT[self.endian]
797821

scripts/imgtool/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -565,7 +565,7 @@ def sign(ctx, key, public_key_format, align, version, pad_sig, header_size,
565565
plainkey = os.urandom(encrypt_keylen_bytes)
566566

567567
if compression in ["lzma2", "lzma2armthumb"]:
568-
img.create(key, public_key_format, enckey, dependencies, boot_record,
568+
img.create2(key, public_key_format, enckey, dependencies, boot_record,
569569
custom_tlvs, compression_tlvs, None, None, clear,
570570
baked_signature, pub_key, vector_to_sign, user_sha=user_sha,
571571
hmac_sha=hmac_sha, is_pure=is_pure, keep_comp_size=False)
@@ -610,14 +610,14 @@ def sign(ctx, key, public_key_format, align, version, pad_sig, header_size,
610610
keep_comp_size = False
611611
if enckey:
612612
keep_comp_size = True
613-
compressed_img.create(key, public_key_format, enckey,
613+
compressed_img.create2(key, public_key_format, enckey,
614614
dependencies, boot_record, custom_tlvs, compression_tlvs,
615615
compression, plainkey, clear, baked_signature,
616616
pub_key, vector_to_sign, user_sha=user_sha, hmac_sha=hmac_sha,
617617
is_pure=is_pure, keep_comp_size=keep_comp_size)
618618
img = compressed_img
619619
else:
620-
img.create(key, public_key_format, enckey, dependencies, boot_record,
620+
img.create2(key, public_key_format, enckey, dependencies, boot_record,
621621
custom_tlvs, compression_tlvs, None, plainkey, clear,
622622
baked_signature, pub_key, vector_to_sign, user_sha=user_sha,
623623
hmac_sha=hmac_sha, is_pure=is_pure)

0 commit comments

Comments
 (0)