mirror of
https://github.com/Mbed-TLS/mbedtls-framework.git
synced 2026-06-05 21:15:09 +00:00
mldsa_test_generator refactor: change function calls to method calls
Signed-off-by: Gilles Peskine <Gilles.Peskine@arm.com>
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user