MCPcopy Create free account
hub / github.com/aboutcode-org/vulnerablecode / compute_content_id_v2

Function compute_content_id_v2

vulnerabilities/utils.py:694–724  ·  view source on GitHub ↗

Compute a unique content_id for an advisory by normalizing its data and hashing it. :param advisory_data: An AdvisoryDataV2 or AdvisoryV2 object :return: SHA-256 hash digest as content_id

(advisory_data)

Source from the content-addressed store, hash-verified

692
693
694def compute_content_id_v2(advisory_data):
695 """
696 Compute a unique content_id for an advisory by normalizing its data and hashing it.
697
698 :param advisory_data: An AdvisoryDataV2 or AdvisoryV2 object
699 :return: SHA-256 hash digest as content_id
700 """
701 from vulnerabilities.importer import AdvisoryDataV2
702 from vulnerabilities.models import AdvisoryV2
703
704 if not isinstance(advisory_data, (AdvisoryV2, AdvisoryDataV2)):
705 raise ValueError("Unsupported advisory data type for content ID computation")
706
707 if isinstance(advisory_data, AdvisoryV2):
708 advisory_data = advisory_data.to_advisory_data()
709
710 normalized_data = {
711 "advisory_id": normalize_text(advisory_data.advisory_id),
712 "aliases": normalize_list(advisory_data.aliases),
713 "summary": normalize_text(advisory_data.summary),
714 "affected_packages": [
715 pkg.to_dict() for pkg in normalize_list(advisory_data.affected_packages) if pkg
716 ],
717 "references": [ref.to_dict() for ref in normalize_list(advisory_data.references) if ref],
718 "severities": [sev.to_dict() for sev in normalize_list(advisory_data.severities) if sev],
719 "weaknesses": normalize_list(advisory_data.weaknesses),
720 "patches": [patch.to_dict() for patch in normalize_list(advisory_data.patches)],
721 }
722 normalized_data["url"] = advisory_data.url
723
724 return sha256_digest(normalized_data)
725
726
727def create_registry(pipelines):

Callers 1

insert_advisory_v2Function · 0.90

Calls 5

normalize_textFunction · 0.85
normalize_listFunction · 0.85
sha256_digestFunction · 0.85
to_advisory_dataMethod · 0.45
to_dictMethod · 0.45

Tested by

no test coverage detected