Module rugged.commands.lib.partial_root_metadata
Functions
def load_partial_root_metadata(version: str) ‑> Dict[str, Any]
-
Expand source code
def load_partial_root_metadata(version: str) -> Dict[str, Any]: """ Load partial root metadata from disk. """ file_path = partial_root_metadata_path(version) log.debug(f"Checking for expected metadata file at: {file_path}.") if not os.path.exists(file_path): log.error(f"A metadata file was not found at the expected path: {file_path}") sys.exit(os.EX_NOINPUT) log.debug(f"Loading partial metadata file from: {file_path}.") metadata = load_metadata_from_file("root", file_path) log.debug(f"Loaded partial metadata file from: {file_path}.") return metadata.to_dict()
Load partial root metadata from disk.
def partial_root_metadata_is_valid(metadata: Dict[str, Any]) ‑> bool
-
Expand source code
def partial_root_metadata_is_valid(metadata: Dict[str, Any]) -> bool: """ Check whether partial root metadata is valid. """ if not partial_root_metadata_meets_signature_threshold(metadata): return False for name, role in metadata['signed']['roles'].items(): if not partial_root_metadata_meets_key_threshold_for_role(metadata, name): return False return True
Check whether partial root metadata is valid.
def partial_root_metadata_meets_key_threshold_for_role(metadata: Dict[str, Any], role: str) ‑> bool
-
Expand source code
def partial_root_metadata_meets_key_threshold_for_role(metadata: Dict[str, Any], role: str) -> bool: """ Check whether partial root metadata has enough keys for a given role. """ threshold = metadata['signed']['roles'][role]['threshold'] log.debug(f"Partial root metadata has signature threshold for the '{role}' role set to {threshold}.") key_count = len(metadata['signed']['roles'][role]['keyids']) log.debug(f"Partial root metadata currently has {key_count} keys for the '{role}' role.") return key_count >= threshold
Check whether partial root metadata has enough keys for a given role.
def partial_root_metadata_meets_signature_threshold(metadata: Dict[str, Any]) ‑> bool
-
Expand source code
def partial_root_metadata_meets_signature_threshold(metadata: Dict[str, Any]) -> bool: """ Check whether partial root metadata has enough signatures. """ threshold = metadata['signed']['roles']['root']['threshold'] log.debug(f"Partial root metadata has signature threshold set to {threshold}.") signature_count = len(metadata['signatures']) log.debug(f"Partial root metadata currently has {signature_count} signatures.") return signature_count >= threshold
Check whether partial root metadata has enough signatures.
def partial_root_metadata_path(version: str) ‑> str
-
Expand source code
def partial_root_metadata_path(version: str) -> str: """ Return the path to the partial root metadata. """ return f"{RUGGED_PARTIAL_METADATA_DIR}/{version}.root.json"
Return the path to the partial root metadata.
def write_partial_root_metadata(metadata: Dict[str, Any]) ‑> None
-
Expand source code
def write_partial_root_metadata(metadata: Dict[str, Any]) -> None: """ Write partial root metadata to disk. """ version = metadata['signed']['version'] file_path = partial_root_metadata_path(version) file_dir = os.path.dirname(file_path) if not os.path.exists(file_dir): log.info(f"Partial root metadata path not found. Creating: {file_dir}") os.mkdir(file_dir) write_signable_root_metadata(metadata) write_metadata_to_file("root", Metadata[Root].from_dict(metadata), file_path)
Write partial root metadata to disk.
def write_signable_root_metadata(metadata: Dict[str, Any]) ‑> None
-
Expand source code
def write_signable_root_metadata(metadata: Dict[str, Any]) -> None: """ Write signable root metadata to disk. """ version = metadata['signed']['version'] file_path = f"{RUGGED_PARTIAL_METADATA_DIR}/signable-{version}.root.json" try: with open(file_path, "w") as signable_file: signed: str | None = encode_canonical(metadata['signed']) if signed is None: error = "Error preparing signable root metadata." log.error(error) raise RuggedMetadataError(error) signable_file.write(signed) log.debug(f"Wrote signable root metadata to file '{file_path}'.") except Exception as e: log_exception(e) error = f"Failed to write signable root metadata to file '{file_path}'." log.error(error)
Write signable root metadata to disk.