mirror of
https://github.com/Mbed-TLS/mbedtls-framework.git
synced 2026-10-16 05:37:23 +00:00
mldsa_test_generator refactor: change function calls to method calls
Signed-off-by: Gilles Peskine <[email protected]>
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:
|
class Generator:
|
||||||
"""Abstract base class to generate tests for one API."""
|
"""Abstract base class to generate tests for one API."""
|
||||||
|
|
||||||
@@ -96,16 +87,15 @@ class Generator:
|
|||||||
message: bytes,
|
message: bytes,
|
||||||
descr: str) -> test_case.TestCase:
|
descr: str) -> test_case.TestCase:
|
||||||
"""Construct one test case for deterministic signature."""
|
"""Construct one test case for deterministic signature."""
|
||||||
api = self
|
|
||||||
signature = key.sign_message(message, deterministic=True)
|
signature = key.sign_message(message, deterministic=True)
|
||||||
tc = test_case.TestCase()
|
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_dependencies([f'TF_PSA_CRYPTO_PQCP_MLDSA_{key.kl}_ENABLED'])
|
||||||
tc.set_arguments(api.metadata_arguments(key.kl, True, True) + [
|
tc.set_arguments(self.metadata_arguments(key.kl, True, True) + [
|
||||||
test_case.hex_string(key.seed if api.secret_is_seed() else key.secret),
|
test_case.hex_string(key.seed if self.secret_is_seed() else key.secret),
|
||||||
test_case.hex_string(message),
|
test_case.hex_string(message),
|
||||||
test_case.hex_string(signature),
|
test_case.hex_string(signature),
|
||||||
] + api.final_arguments())
|
] + self.final_arguments())
|
||||||
tc.set_description(f'MLDSA-{key.kl} sign deterministic {descr}')
|
tc.set_description(f'MLDSA-{key.kl} sign deterministic {descr}')
|
||||||
return tc
|
return tc
|
||||||
|
|
||||||
@@ -119,41 +109,39 @@ class Generator:
|
|||||||
When deterministic is true, the test case is a deterministic signature.
|
When deterministic is true, the test case is a deterministic signature.
|
||||||
When deterministic is false, the test case is some other valid signature.
|
When deterministic is false, the test case is some other valid signature.
|
||||||
"""
|
"""
|
||||||
api = self
|
|
||||||
signature = key.sign_message(message, deterministic=deterministic)
|
signature = key.sign_message(message, deterministic=deterministic)
|
||||||
tc = test_case.TestCase()
|
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_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(key.public),
|
||||||
test_case.hex_string(message),
|
test_case.hex_string(message),
|
||||||
test_case.hex_string(signature),
|
test_case.hex_string(signature),
|
||||||
] + api.final_arguments())
|
] + self.final_arguments())
|
||||||
variant = "deterministic" if deterministic else "randomized"
|
variant = "deterministic" if deterministic else "randomized"
|
||||||
tc.set_description(f'MLDSA-{key.kl} verify {variant} {descr}')
|
tc.set_description(f'MLDSA-{key.kl} verify {variant} {descr}')
|
||||||
return tc
|
return tc
|
||||||
|
|
||||||
def gen_mldsa_pure(self, kl: int) -> Iterable[test_case.TestCase]:
|
def gen_mldsa_pure(self, kl: int) -> Iterable[test_case.TestCase]:
|
||||||
"""Generate all test cases for pure ML-DSA signature and verification."""
|
"""Generate all test cases for pure ML-DSA signature and verification."""
|
||||||
api = self
|
|
||||||
for i, key in enumerate(KEYS[kl], 1):
|
for i, key in enumerate(KEYS[kl], 1):
|
||||||
yield one_mldsa_sign_deterministic_pure(api, key, MESSAGES[0][0],
|
yield self.one_mldsa_sign_deterministic_pure(key, MESSAGES[0][0],
|
||||||
f'key#{i}')
|
f'key#{i}')
|
||||||
for message, descr in MESSAGES[1:]:
|
for message, descr in MESSAGES[1:]:
|
||||||
yield one_mldsa_sign_deterministic_pure(api, KEYS[kl][0], message,
|
yield self.one_mldsa_sign_deterministic_pure(KEYS[kl][0], message,
|
||||||
f'key#1 {descr}')
|
f'key#1 {descr}')
|
||||||
for i, key in enumerate(KEYS[kl], 1):
|
for i, key in enumerate(KEYS[kl], 1):
|
||||||
yield one_mldsa_verify_pure(api, key, MESSAGES[0][0], True,
|
yield self.one_mldsa_verify_pure(key, MESSAGES[0][0], True,
|
||||||
f'key#{i}')
|
f'key#{i}')
|
||||||
for message, descr in MESSAGES[1:]:
|
for message, descr in MESSAGES[1:]:
|
||||||
yield one_mldsa_verify_pure(api, KEYS[kl][0], message, True,
|
yield self.one_mldsa_verify_pure(KEYS[kl][0], message, True,
|
||||||
f'key#1 {descr}')
|
f'key#1 {descr}')
|
||||||
for i, key in enumerate(KEYS[kl], 1):
|
for i, key in enumerate(KEYS[kl], 1):
|
||||||
yield one_mldsa_verify_pure(api, key, MESSAGES[0][0], False,
|
yield self.one_mldsa_verify_pure(key, MESSAGES[0][0], False,
|
||||||
f'key#{i}')
|
f'key#{i}')
|
||||||
for message, descr in MESSAGES[1:]:
|
for message, descr in MESSAGES[1:]:
|
||||||
yield one_mldsa_verify_pure(api, KEYS[kl][0], message, False,
|
yield self.one_mldsa_verify_pure(KEYS[kl][0], message, False,
|
||||||
f'key#1 {descr}')
|
f'key#1 {descr}')
|
||||||
|
|
||||||
|
|
||||||
class PQCPGenerator(Generator):
|
class PQCPGenerator(Generator):
|
||||||
@@ -200,4 +188,4 @@ def gen_pqcp_mldsa_all() -> Iterable[test_case.TestCase]:
|
|||||||
generator = PQCPGenerator()
|
generator = PQCPGenerator()
|
||||||
for kl in sorted(KEYS.keys()):
|
for kl in sorted(KEYS.keys()):
|
||||||
yield from generator.gen_pqcp_key_management(kl)
|
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