Skip to content

Commit 05ec490

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 6253426 commit 05ec490

File tree

2 files changed

+31
-3
lines changed

2 files changed

+31
-3
lines changed

scripts/imgtool/image.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -512,6 +512,34 @@ def ecies_hkdf(self, enckey, plainkey, hmac_sha_alg):
512512
return cipherkey, ciphermac, pubk
513513

514514
def create(self, key, public_key_format, enckey, dependencies=None,
515+
sw_type=None, custom_tlvs=None, compression_tlvs=None,
516+
compression_type=None, encrypt_keylen=128, clear=False,
517+
fixed_sig=None, pub_key=None, vector_to_sign=None,
518+
user_sha='auto', hmac_sha='auto', is_pure=False, keep_comp_size=False,
519+
dont_encrypt=False):
520+
521+
# This is old logic of image creation where lack of enckey indicated
522+
# lack of encryption.
523+
# New create requires a key to be provided from outside.
524+
if enckey:
525+
if encrypt_keylen == 256:
526+
encrypt_keylen_bytes = 32
527+
else:
528+
encrypt_keylen_bytes = 16
529+
530+
# No AES plain key and there is request to encrypt, generate random AES key
531+
raw_key = os.urandom(encrypt_keylen_bytes)
532+
else:
533+
raw_key = None
534+
535+
self.create2(key, public_key_format, enckey, dependencies,
536+
sw_type, custom_tlvs, compression_tlvs,
537+
compression_type, raw_key, clear,
538+
fixed_sig, pub_key, vector_to_sign,
539+
user_sha, hmac_sha, is_pure, keep_comp_size,
540+
dont_encrypt)
541+
542+
def create2(self, key, public_key_format, enckey, dependencies=None,
515543
sw_type=None, custom_tlvs=None, compression_tlvs=None,
516544
compression_type=None, aes_raw=None, clear=False,
517545
fixed_sig=None, pub_key=None, vector_to_sign=None,

scripts/imgtool/main.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ def sign(ctx, key, public_key_format, align, version, pad_sig, header_size,
559559
aes_raw_key = os.urandom(int(int(encrypt_keylen) / 8))
560560

561561
if compression in ["lzma2", "lzma2armthumb"]:
562-
img.create(key, public_key_format, enckey, dependencies, boot_record,
562+
img.create2(key, public_key_format, enckey, dependencies, boot_record,
563563
custom_tlvs, compression_tlvs, None, aes_raw_key, clear,
564564
baked_signature, pub_key, vector_to_sign, user_sha=user_sha,
565565
hmac_sha=hmac_sha, is_pure=is_pure, keep_comp_size=False, dont_encrypt=True)
@@ -604,14 +604,14 @@ def sign(ctx, key, public_key_format, align, version, pad_sig, header_size,
604604
keep_comp_size = False
605605
if enckey:
606606
keep_comp_size = True
607-
compressed_img.create(key, public_key_format, enckey,
607+
compressed_img.create2(key, public_key_format, enckey,
608608
dependencies, boot_record, custom_tlvs, compression_tlvs,
609609
compression, aes_raw_key, clear, baked_signature,
610610
pub_key, vector_to_sign, user_sha=user_sha, hmac_sha=hmac_sha,
611611
is_pure=is_pure, keep_comp_size=keep_comp_size)
612612
img = compressed_img
613613
else:
614-
img.create(key, public_key_format, enckey, dependencies, boot_record,
614+
img.create2(key, public_key_format, enckey, dependencies, boot_record,
615615
custom_tlvs, compression_tlvs, None, aes_raw_key, clear,
616616
baked_signature, pub_key, vector_to_sign, user_sha=user_sha,
617617
hmac_sha=hmac_sha, is_pure=is_pure)

0 commit comments

Comments
 (0)