Skip to content

Commit 81cc481

Browse files
committed
[nrf fromtree] imgtool: Allow for AES256 encryption
Modified code to correctly generate the TLV for AES256 Signed-off-by: Artur Hadasz <[email protected]> (cherry picked from commit a5c48f3)
1 parent 4bfb139 commit 81cc481

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

scripts/imgtool/image.py

100644100755
Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -443,14 +443,23 @@ def ecies_hkdf(self, enckey, plainkey, hmac_sha_alg):
443443
else:
444444
newpk = X25519PrivateKey.generate()
445445
shared = newpk.exchange(enckey._get_public())
446+
447+
# Detect AES key length from plainkey size
448+
key_len = len(plainkey) # 16 for AES-128, 32 for AES-256
449+
450+
# Generate derived key with appropriate length (key_len + 32 bytes for HMAC)
446451
derived_key = HKDF(
447-
algorithm=hmac_sha_alg, length=16 + hmac_sha_alg.digest_size, salt=None,
452+
algorithm=hmac_sha_alg, length=key_len + hmac_sha_alg.digest_size, salt=None,
448453
info=b'MCUBoot_ECIES_v1', backend=default_backend()).derive(shared)
449-
encryptor = Cipher(algorithms.AES(derived_key[:16]),
454+
455+
# Use appropriate key length for AES encryption
456+
encryptor = Cipher(algorithms.AES(derived_key[:key_len]),
450457
modes.CTR(bytes([0] * 16)),
451458
backend=default_backend()).encryptor()
452459
cipherkey = encryptor.update(plainkey) + encryptor.finalize()
453-
mac = hmac.HMAC(derived_key[16:], hmac_sha_alg,
460+
461+
# Use remaining bytes for HMAC (after the AES key)
462+
mac = hmac.HMAC(derived_key[key_len:], hmac_sha_alg,
454463
backend=default_backend())
455464
mac.update(cipherkey)
456465
ciphermac = mac.finalize()

0 commit comments

Comments
 (0)