mirror of
https://github.com/Mbed-TLS/mbedtls-framework.git
synced 2026-10-12 11:47:22 +00:00
psa_test_case automatic dependencies: take the key size into account
This fixes the dependencies for DH group and elliptic curve families. No changes to the generated output (the new functionality isn't used yet). Signed-off-by: Gilles Peskine <[email protected]>
This commit is contained in:
@@ -41,6 +41,7 @@ def test_case_for_key_type_not_supported(
|
|||||||
tc.set_description('PSA {} {} {}-bit {} supported'
|
tc.set_description('PSA {} {} {}-bit {} supported'
|
||||||
.format(verb, short_key_type, bits, adverb))
|
.format(verb, short_key_type, bits, adverb))
|
||||||
tc.set_function(verb + '_not_supported')
|
tc.set_function(verb + '_not_supported')
|
||||||
|
tc.set_key_bits(bits)
|
||||||
tc.set_arguments([key_type] + list(args))
|
tc.set_arguments([key_type] + list(args))
|
||||||
tc.set_dependencies(dependencies)
|
tc.set_dependencies(dependencies)
|
||||||
tc.skip_if_any_not_implemented(dependencies)
|
tc.skip_if_any_not_implemented(dependencies)
|
||||||
@@ -153,6 +154,7 @@ def test_case_for_key_generation(
|
|||||||
tc.set_description('PSA {} {}-bit'
|
tc.set_description('PSA {} {}-bit'
|
||||||
.format(short_key_type, bits))
|
.format(short_key_type, bits))
|
||||||
tc.set_function('generate_key')
|
tc.set_function('generate_key')
|
||||||
|
tc.set_key_bits(bits)
|
||||||
tc.set_arguments([key_type] + list(args) + [result])
|
tc.set_arguments([key_type] + list(args) + [result])
|
||||||
tc.set_dependencies(dependencies)
|
tc.set_dependencies(dependencies)
|
||||||
tc.skip_if_any_not_implemented(dependencies)
|
tc.skip_if_any_not_implemented(dependencies)
|
||||||
@@ -279,7 +281,9 @@ class OpFail:
|
|||||||
tc.set_function(category.name.lower() + '_fail')
|
tc.set_function(category.name.lower() + '_fail')
|
||||||
arguments = [] # type: List[str]
|
arguments = [] # type: List[str]
|
||||||
if kt:
|
if kt:
|
||||||
key_material = kt.key_material(kt.sizes_to_test()[0])
|
bits = kt.sizes_to_test()[0]
|
||||||
|
tc.set_key_bits(bits)
|
||||||
|
key_material = kt.key_material(bits)
|
||||||
arguments += [key_type, test_case.hex_string(key_material)]
|
arguments += [key_type, test_case.hex_string(key_material)]
|
||||||
arguments.append(alg.expression)
|
arguments.append(alg.expression)
|
||||||
if category.is_asymmetric():
|
if category.is_asymmetric():
|
||||||
@@ -498,6 +502,7 @@ class StorageFormat:
|
|||||||
dependencies += psa_information.generate_deps_from_description(key.description)
|
dependencies += psa_information.generate_deps_from_description(key.description)
|
||||||
dependencies = psa_information.fix_key_pair_dependencies(dependencies, 'BASIC')
|
dependencies = psa_information.fix_key_pair_dependencies(dependencies, 'BASIC')
|
||||||
tc.set_function('key_storage_' + verb)
|
tc.set_function('key_storage_' + verb)
|
||||||
|
tc.set_key_bits(key.bits)
|
||||||
if self.forward:
|
if self.forward:
|
||||||
extra_arguments = []
|
extra_arguments = []
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -70,11 +70,25 @@ class TestCase(test_case.TestCase):
|
|||||||
self.manual_dependencies = [] #type: List[str]
|
self.manual_dependencies = [] #type: List[str]
|
||||||
self.automatic_dependencies = set() #type: Set[str]
|
self.automatic_dependencies = set() #type: Set[str]
|
||||||
self.dependency_prefix = dependency_prefix #type: Optional[str]
|
self.dependency_prefix = dependency_prefix #type: Optional[str]
|
||||||
|
self.key_bits = None #type: Optional[int]
|
||||||
|
|
||||||
|
def set_key_bits(self, key_bits: Optional[int]) -> None:
|
||||||
|
"""Use the given key size for automatic dependency generation.
|
||||||
|
|
||||||
|
Call this function before set_arguments() if relevant.
|
||||||
|
|
||||||
|
This is only relevant for ECC and DH keys. For other key types,
|
||||||
|
this information is ignored.
|
||||||
|
"""
|
||||||
|
self.key_bits = key_bits
|
||||||
|
|
||||||
def infer_dependencies(self, arguments: List[str]) -> List[str]:
|
def infer_dependencies(self, arguments: List[str]) -> List[str]:
|
||||||
"""Infer dependencies based on the test case arguments."""
|
"""Infer dependencies based on the test case arguments."""
|
||||||
dependencies = psa_information.automatic_dependencies(*arguments,
|
dependencies = psa_information.automatic_dependencies(*arguments,
|
||||||
prefix=self.dependency_prefix)
|
prefix=self.dependency_prefix)
|
||||||
|
if self.key_bits is not None:
|
||||||
|
dependencies = psa_information.finish_family_dependencies(dependencies,
|
||||||
|
self.key_bits)
|
||||||
return dependencies
|
return dependencies
|
||||||
|
|
||||||
def set_arguments(self, arguments: List[str]) -> None:
|
def set_arguments(self, arguments: List[str]) -> None:
|
||||||
|
|||||||
Reference in New Issue
Block a user