fix(plugin): fail closed on incomplete certification records

This commit is contained in:
RockChinQ
2026-09-25 13:13:35 +00:00
parent 9f296bd57e
commit 300f5825bb
5 changed files with 126 additions and 27 deletions
+10
View File
@@ -242,11 +242,21 @@ def execution_mode_for_persisted_installation(
) -> PluginExecutionMode:
"""Derive placement only from persisted facts bound to the exact artifact."""
if len(artifact_digest) != 64 or any(character not in '0123456789abcdef' for character in artifact_digest.lower()):
return PluginExecutionMode.DEDICATED
if not isinstance(install_info, Mapping):
return PluginExecutionMode.DEDICATED
certification = install_info.get('_certification')
if not isinstance(certification, Mapping):
return PluginExecutionMode.DEDICATED
normalized_digest = certification.get('normalized_digest')
if not isinstance(normalized_digest, str) or len(normalized_digest) != 64:
return PluginExecutionMode.DEDICATED
if any(character not in '0123456789abcdef' for character in normalized_digest.lower()):
return PluginExecutionMode.DEDICATED
certificate_id = certification.get('certificate_id')
if not isinstance(certificate_id, str) or not certificate_id.strip():
return PluginExecutionMode.DEDICATED
shared_facts = {
'artifact_digest': artifact_digest,
'verification': CertificateVerification.VALID.value,