From a53c51425dc490e720cb6ec2f8990f49ae39d48b Mon Sep 17 00:00:00 2001 From: Gilles Peskine Date: Tue, 31 Mar 2026 13:50:36 +0200 Subject: [PATCH] mldsa_test_generator refactor: change function calls to method calls Signed-off-by: Gilles Peskine --- .../mldsa_test_generator.py | 52 +++++++------------ 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/util/mbedtls_maintainer/mldsa_test_generator.py b/util/mbedtls_maintainer/mldsa_test_generator.py index e75b2532e..24226d77c 100644 --- a/util/mbedtls_maintainer/mldsa_test_generator.py +++ b/util/mbedtls_maintainer/mldsa_test_generator.py @@ -60,15 +60,6 @@ MESSAGES = [ ] -def one_mldsa_sign_deterministic_pure(api, *args): - return api.one_mldsa_sign_deterministic_pure(*args) - -def one_mldsa_verify_pure(api, *args): - return api.one_mldsa_verify_pure(*args) - -def gen_mldsa_pure(api, *args): - return api.gen_mldsa_pure(*args) - class Generator: """Abstract base class to generate tests for one API.""" @@ -96,16 +87,15 @@ class Generator: message: bytes, descr: str) -> test_case.TestCase: """Construct one test case for deterministic signature.""" - api = self signature = key.sign_message(message, deterministic=True) tc = test_case.TestCase() - tc.set_function(api.function('sign_deterministic_pure', key.kl)) + tc.set_function(self.function('sign_deterministic_pure', key.kl)) tc.set_dependencies([f'TF_PSA_CRYPTO_PQCP_MLDSA_{key.kl}_ENABLED']) - tc.set_arguments(api.metadata_arguments(key.kl, True, True) + [ - test_case.hex_string(key.seed if api.secret_is_seed() else key.secret), + tc.set_arguments(self.metadata_arguments(key.kl, True, True) + [ + test_case.hex_string(key.seed if self.secret_is_seed() else key.secret), test_case.hex_string(message), test_case.hex_string(signature), - ] + api.final_arguments()) + ] + self.final_arguments()) tc.set_description(f'MLDSA-{key.kl} sign deterministic {descr}') return tc @@ -119,41 +109,39 @@ class Generator: When deterministic is true, the test case is a deterministic signature. When deterministic is false, the test case is some other valid signature. """ - api = self signature = key.sign_message(message, deterministic=deterministic) tc = test_case.TestCase() - tc.set_function(api.function('verify_pure', key.kl)) + tc.set_function(self.function('verify_pure', key.kl)) tc.set_dependencies([f'TF_PSA_CRYPTO_PQCP_MLDSA_{key.kl}_ENABLED']) - tc.set_arguments(api.metadata_arguments(key.kl, False, True) + [ + tc.set_arguments(self.metadata_arguments(key.kl, False, True) + [ test_case.hex_string(key.public), test_case.hex_string(message), test_case.hex_string(signature), - ] + api.final_arguments()) + ] + self.final_arguments()) variant = "deterministic" if deterministic else "randomized" tc.set_description(f'MLDSA-{key.kl} verify {variant} {descr}') return tc def gen_mldsa_pure(self, kl: int) -> Iterable[test_case.TestCase]: """Generate all test cases for pure ML-DSA signature and verification.""" - api = self for i, key in enumerate(KEYS[kl], 1): - yield one_mldsa_sign_deterministic_pure(api, key, MESSAGES[0][0], - f'key#{i}') + yield self.one_mldsa_sign_deterministic_pure(key, MESSAGES[0][0], + f'key#{i}') for message, descr in MESSAGES[1:]: - yield one_mldsa_sign_deterministic_pure(api, KEYS[kl][0], message, - f'key#1 {descr}') + yield self.one_mldsa_sign_deterministic_pure(KEYS[kl][0], message, + f'key#1 {descr}') for i, key in enumerate(KEYS[kl], 1): - yield one_mldsa_verify_pure(api, key, MESSAGES[0][0], True, - f'key#{i}') + yield self.one_mldsa_verify_pure(key, MESSAGES[0][0], True, + f'key#{i}') for message, descr in MESSAGES[1:]: - yield one_mldsa_verify_pure(api, KEYS[kl][0], message, True, - f'key#1 {descr}') + yield self.one_mldsa_verify_pure(KEYS[kl][0], message, True, + f'key#1 {descr}') for i, key in enumerate(KEYS[kl], 1): - yield one_mldsa_verify_pure(api, key, MESSAGES[0][0], False, - f'key#{i}') + yield self.one_mldsa_verify_pure(key, MESSAGES[0][0], False, + f'key#{i}') for message, descr in MESSAGES[1:]: - yield one_mldsa_verify_pure(api, KEYS[kl][0], message, False, - f'key#1 {descr}') + yield self.one_mldsa_verify_pure(KEYS[kl][0], message, False, + f'key#1 {descr}') class PQCPGenerator(Generator): @@ -200,4 +188,4 @@ def gen_pqcp_mldsa_all() -> Iterable[test_case.TestCase]: generator = PQCPGenerator() for kl in sorted(KEYS.keys()): yield from generator.gen_pqcp_key_management(kl) - yield from gen_mldsa_pure(generator, kl) + yield from generator.gen_mldsa_pure(kl)