Skip to content

Commit 177976a

Browse files
author
Lukas Pühringer
authored
Merge pull request #1840 from MVrachev/from-securesystemslib-key-sslib-error
Key.from_securesystemslib_key() raise ValueError
2 parents 39ef751 + 8b6566a commit 177976a

2 files changed

Lines changed: 20 additions & 5 deletions

File tree

tests/test_api.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -379,6 +379,11 @@ def test_key_class(self) -> None:
379379
key = Key.from_securesystemslib_key(sslib_key)
380380
self.assertFalse("private" in key.keyval.keys())
381381

382+
# Test raising ValueError with non-existent keytype
383+
sslib_key["keytype"] = "bad keytype"
384+
with self.assertRaises(ValueError):
385+
Key.from_securesystemslib_key(sslib_key)
386+
382387
def test_root_add_key_and_remove_key(self) -> None:
383388
root_path = os.path.join(self.repo_dir, "metadata", "root.json")
384389
root = Metadata[Root].from_file(root_path)

tuf/api/metadata.py

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -620,12 +620,22 @@ def from_securesystemslib_key(cls, key_dict: Dict[str, Any]) -> "Key":
620620
621621
Args:
622622
key_dict: Key in securesystemlib dict representation.
623+
624+
Raises:
625+
ValueError: ``key_dict`` value is not following the securesystemslib
626+
format.
623627
"""
624-
key_meta = sslib_keys.format_keyval_to_metadata(
625-
key_dict["keytype"],
626-
key_dict["scheme"],
627-
key_dict["keyval"],
628-
)
628+
try:
629+
key_meta = sslib_keys.format_keyval_to_metadata(
630+
key_dict["keytype"],
631+
key_dict["scheme"],
632+
key_dict["keyval"],
633+
)
634+
except sslib_exceptions.FormatError as e:
635+
raise ValueError(
636+
"key_dict value is not following the securesystemslib format"
637+
) from e
638+
629639
return cls(
630640
key_dict["keyid"],
631641
key_meta["keytype"],

0 commit comments

Comments
 (0)