diff options
| -rw-r--r-- | sec_certs/certificate/cc_maintenance_update.py | 2 | ||||
| -rw-r--r-- | sec_certs/certificate/common_criteria.py | 6 | ||||
| -rw-r--r-- | sec_certs/certificate/fips.py | 6 | ||||
| -rw-r--r-- | sec_certs/dataset/fips.py | 2 | ||||
| -rw-r--r-- | sec_certs/serialization.py | 5 | ||||
| -rw-r--r-- | tests/data/test_cc_oop/fictional_cert.json | 2 | ||||
| -rw-r--r-- | tests/data/test_cc_oop/toy_dataset.json | 4 | ||||
| -rw-r--r-- | tests/data/test_cpe_cve/vulnerable_dataset.json | 2 |
8 files changed, 16 insertions, 13 deletions
diff --git a/sec_certs/certificate/cc_maintenance_update.py b/sec_certs/certificate/cc_maintenance_update.py index 7e4db349..4f87e836 100644 --- a/sec_certs/certificate/cc_maintenance_update.py +++ b/sec_certs/certificate/cc_maintenance_update.py @@ -16,7 +16,7 @@ class CommonCriteriaMaintenanceUpdate(CommonCriteriaCert, ComplexSerializableTyp def __init__(self, name: str, report_link: str, st_link: str, state: Optional[CommonCriteriaCert.InternalState], pdf_data: Optional[CommonCriteriaCert.PdfData], - heuristics: Optional[CommonCriteriaCert.Heuristics], + heuristics: Optional[CommonCriteriaCert.CCHeuristics], related_cert_digest: str, maintenance_date: date): super().__init__('', '', name, '', '', '', None, None, diff --git a/sec_certs/certificate/common_criteria.py b/sec_certs/certificate/common_criteria.py index af1935d2..f6470231 100644 --- a/sec_certs/certificate/common_criteria.py +++ b/sec_certs/certificate/common_criteria.py @@ -186,7 +186,7 @@ class CommonCriteriaCert(Certificate, ComplexSerializableType): return processed if (processed := self.processed_cert_id) else self.keywords_cert_id @dataclass - class Heuristics(ComplexSerializableType): + class CCHeuristics(ComplexSerializableType): extracted_versions: List[str] = field(default=None) cpe_matches: Optional[List[Tuple[float, CPE]]] = field(default=None) labeled: bool = field(default=False) @@ -227,7 +227,7 @@ class CommonCriteriaCert(Certificate, ComplexSerializableType): maintainance_updates: Set[MaintainanceReport], state: Optional[InternalState], pdf_data: Optional[PdfData], - heuristics: Optional[Heuristics]): + heuristics: Optional[CCHeuristics]): super().__init__() self.status = status @@ -254,7 +254,7 @@ class CommonCriteriaCert(Certificate, ComplexSerializableType): self.pdf_data = pdf_data if heuristics is None: - heuristics = self.Heuristics() + heuristics = self.CCHeuristics() self.heuristics = heuristics @property diff --git a/sec_certs/certificate/fips.py b/sec_certs/certificate/fips.py index 2ff95291..71c304e2 100644 --- a/sec_certs/certificate/fips.py +++ b/sec_certs/certificate/fips.py @@ -142,7 +142,7 @@ class FIPSCertificate(Certificate, ComplexSerializableType): return str(self.cert_id) @dataclass(eq=True) - class Heuristics(ComplexSerializableType): + class FIPSHeuristics(ComplexSerializableType): keywords: Optional[Dict[str, Dict]] algorithms: List[Dict[str, Dict]] connections: List[str] @@ -200,7 +200,7 @@ class FIPSCertificate(Certificate, ComplexSerializableType): def __init__(self, cert_id: str, web_scan: 'FIPSCertificate.WebScan', pdf_scan: 'FIPSCertificate.PdfScan', - heuristics: 'FIPSCertificate.Heuristics', + heuristics: 'FIPSCertificate.FIPSHeuristics', state: State): super().__init__() self.cert_id = cert_id @@ -461,7 +461,7 @@ class FIPSCertificate(Certificate, ComplexSerializableType): [] if not initialized else initialized.pdf_scan.algorithms, [] # connections ), - FIPSCertificate.Heuristics(None, {}, [], 0), + FIPSCertificate.FIPSHeuristics(None, {}, [], 0), state ) diff --git a/sec_certs/dataset/fips.py b/sec_certs/dataset/fips.py index 354aec8d..f13e3059 100644 --- a/sec_certs/dataset/fips.py +++ b/sec_certs/dataset/fips.py @@ -268,7 +268,7 @@ class FIPSDataset(Dataset, ComplexSerializableType): logger.info("Removing 'processed' field. This dataset can be used to be uploaded and later downloaded using latest_snapshot() or something") cert: FIPSCertificate for cert in self.certs.values(): - cert.heuristics = FIPSCertificate.Heuristics(None, {}, [], 0) + cert.heuristics = FIPSCertificate.FIPSHeuristics(None, {}, [], 0) self.match_algs() diff --git a/sec_certs/serialization.py b/sec_certs/serialization.py index e24138a8..f63b6cba 100644 --- a/sec_certs/serialization.py +++ b/sec_certs/serialization.py @@ -20,7 +20,10 @@ class ComplexSerializableType: @classmethod def from_dict(cls, dct: Dict): - return cls(*(tuple(dct.values()))) + try: + return cls(*(tuple(dct.values()))) + except TypeError as e: + raise TypeError(f'Dict: {dct} with mro: {cls.__mro__}') from e # Decorator for serialization diff --git a/tests/data/test_cc_oop/fictional_cert.json b/tests/data/test_cc_oop/fictional_cert.json index 9305d2a2..4cf5729e 100644 --- a/tests/data/test_cc_oop/fictional_cert.json +++ b/tests/data/test_cc_oop/fictional_cert.json @@ -52,7 +52,7 @@ "st_keywords": null }, "heuristics": { - "_type": "Heuristics", + "_type": "CCHeuristics", "extracted_versions": null, "cpe_matches": null, "labeled": false, diff --git a/tests/data/test_cc_oop/toy_dataset.json b/tests/data/test_cc_oop/toy_dataset.json index 66744c5b..2872f5e9 100644 --- a/tests/data/test_cc_oop/toy_dataset.json +++ b/tests/data/test_cc_oop/toy_dataset.json @@ -53,7 +53,7 @@ "st_keywords": null }, "heuristics": { - "_type": "Heuristics", + "_type": "CCHeuristics", "extracted_versions": null, "cpe_matches": null, "labeled": false, @@ -111,7 +111,7 @@ "st_keywords": null }, "heuristics": { - "_type": "Heuristics", + "_type": "CCHeuristics", "extracted_versions": null, "cpe_matches": null, "labeled": false, diff --git a/tests/data/test_cpe_cve/vulnerable_dataset.json b/tests/data/test_cpe_cve/vulnerable_dataset.json index 0d01e60f..eb0625a3 100644 --- a/tests/data/test_cpe_cve/vulnerable_dataset.json +++ b/tests/data/test_cpe_cve/vulnerable_dataset.json @@ -53,7 +53,7 @@ "st_keywords": null }, "heuristics": { - "_type": "Heuristics", + "_type": "CCHeuristics", "extracted_versions": [ "8.2" ], |
