def _analyze_cve_details(self, cve_details: dict):
        """Analyzes an entry as specified in nist nvd json."""
        cve = cve_details.get("cve", {})
        cvss_version, cvss_metric = _extract_cvss_metric(cve)
        if cvss_version == 0:
            return 0, "none", ""
        cvss_data = cvss_metric.get("cvssData", {})
        base_score = cvss_data.get("baseScore", 0)
        description = "#### Details\n\n"
        for cve_description in cve.get("descriptions", []):
            if cve_description.get("lang") == "en":
                en_description = cve_description.get("value", "")
                if len(en_description):
                    description += f"{en_description}\n"
        description += f"#### CVSS {cvss_version} Severity and Metrics\n\n"
        description += f"* **Vector:** {cvss_data.get('vectorString', 'N/A')}\n"
        description += f"* **Impact Score:** {cve.get('impactScore', 'N/A')}\n"
        description += (
            f"* **Exploitability Score:** {cve.get('exploitabilityScore', 'N/A')}\n"
        )
        if cvss_version == 2:
            severity = cvss_metric.get("baseSeverity", "none").lower()
            description += f"* **Access Vector (AV):** {cvss_data.get('accessVector', 'N/A').capitalize()}\n"
            description += f"* **Access Complexity (C):**: {cvss_data.get('accessComplexity', 'N/A').capitalize()}\n"
            description += f"* **Authentication (AU):** {cvss_data.get('authentication', 'N/A').capitalize()}\n"
            description += f"* **Confidentiality (C):**: {cvss_data.get('confidentialityImpact', 'N/A').capitalize()}\n"
            description += f"* **Integrigty (I):**: {cvss_data.get('integrityImpact', 'N/A').capitalize()}\n"
            description += f"* **Availability (A):** {cvss_data.get('availabilityImpact', 'N/A').capitalize()}\n\n"
        else:
            severity = cvss_data.get("baseSeverity", "none").lower()
            description += f"* **Attack Vector (AV):** {cvss_data.get('attackVector', 'N/A').capitalize()}\n"
            description += f"* **Attack Complexity (AC):** {cvss_data.get('attackComplexity', 'N/A').capitalize()}\n"
            description += f"* **Privileges Required (PR):** {cvss_data.get('privilegesRequired', 'N/A').capitalize()}\n"
            description += f"* **User Interaction (UI):** {cvss_data.get('userInteraction', 'N/A').capitalize()}\n"
            description += (
                f"* **Scope (S):** {cvss_data.get('scope', 'N/A').capitalize()}\n"
            )
            description += f"* **Confidentiality (C):** {cvss_data.get('confidentialityImpact', 'N/A').capitalize()}\n"
            description += f"* **Integrety (I):** {cvss_data.get('integrityImpact', 'N/A').capitalize()}\n"
            description += f"* **Availability (A):** {cvss_data.get('availabilityImpact', 'N/A').capitalize()}\n\n"
        urls = ""
        for reference in cve.get("references", []):
            url = reference.get("url", "")
            if not len(url):
                continue
            tags = " ".join([f"`{tag}`" for tag in reference.get("tags", [])])
            if len(tags):
                urls += f"* {reference.get('url')} {tags}\n"
            else:
                urls += f"* {reference.get('url')}\n"
        if len(urls):
            description += f"#### References\n\n{urls}"
        return base_score, severity, description
Analyzes an entry as specified in nist nvd json.
plugins/feeds/public/cisa_kev.py