From 2f8c92d2a541c38eed6958659e611f1602ed8544 Mon Sep 17 00:00:00 2001 From: ruiliio Date: Mon, 20 Oct 2025 13:27:09 -0700 Subject: [PATCH] AES-XTS: update test generation for double-size key handling Signed-off-by: ruiliio --- scripts/generate_psa_tests.py | 10 ++++++++++ scripts/mbedtls_framework/crypto_knowledge.py | 2 ++ 2 files changed, 12 insertions(+) diff --git a/scripts/generate_psa_tests.py b/scripts/generate_psa_tests.py index 3651951d8..c6c068e2a 100755 --- a/scripts/generate_psa_tests.py +++ b/scripts/generate_psa_tests.py @@ -253,6 +253,9 @@ class OpFail: arguments = [] # type: List[str] if kt: bits = kt.sizes_to_test()[0] + if pretty_alg == "XTS" and kt.can_do(alg): + # XTS mode uses double-size keys for the underlying block cipher + bits = bits * 2 tc.set_key_bits(bits) tc.set_key_pair_usage(['IMPORT']) key_material = kt.key_material(bits) @@ -638,6 +641,13 @@ class StorageFormat: compatible_algorithms = [alg for alg in all_algorithms if kt.can_do(alg)] for alg in compatible_algorithms: + if alg.expression == 'PSA_ALG_XTS': + # XTS mode uses double-size keys for the underlying block cipher + # XTS does not use 192-bit keys + if bits != 192: + bits = bits * 2 + else: + continue yield self.key_for_type_and_alg(kt, bits, alg) def all_keys_for_types(self) -> Iterator[StorageTestData]: diff --git a/scripts/mbedtls_framework/crypto_knowledge.py b/scripts/mbedtls_framework/crypto_knowledge.py index f69444c16..ea965621d 100644 --- a/scripts/mbedtls_framework/crypto_knowledge.py +++ b/scripts/mbedtls_framework/crypto_knowledge.py @@ -226,6 +226,8 @@ class KeyType: if alg.head in ['CMAC', 'OFB'] and \ self.head in ['ARIA', 'CAMELLIA']: return False # not implemented in Mbed TLS + if alg.head == 'XTS' and self.head != 'AES': + return False # not implemented in Mbed TLS return True if self.head == 'CHACHA20' and alg.head == 'CHACHA20_POLY1305': return True