diff options
| author | GeogeFI | 2022-02-03 10:47:59 +0100 |
|---|---|---|
| committer | GeogeFI | 2022-02-03 10:47:59 +0100 |
| commit | 766cb6cd33556d4aae7638afa003bba8bc00ddde (patch) | |
| tree | ac75c83904f4bf2d8efa9174bbf4de8217cb4990 | |
| parent | 733de3ad21a8010f9a7f4c06caa7993bc0016ed9 (diff) | |
| download | sec-certs-766cb6cd33556d4aae7638afa003bba8bc00ddde.tar.gz sec-certs-766cb6cd33556d4aae7638afa003bba8bc00ddde.tar.zst sec-certs-766cb6cd33556d4aae7638afa003bba8bc00ddde.zip | |
feat: Created new structure for fixing all cert ids in object
| -rw-r--r-- | sec_certs/dataset/common_criteria.py | 9 | ||||
| -rw-r--r-- | sec_certs/sample/common_criteria.py | 24 |
2 files changed, 28 insertions, 5 deletions
diff --git a/sec_certs/dataset/common_criteria.py b/sec_certs/dataset/common_criteria.py index e475a2cb..c2c4811f 100644 --- a/sec_certs/dataset/common_criteria.py +++ b/sec_certs/dataset/common_criteria.py @@ -191,9 +191,18 @@ class CCDataset(Dataset, ComplexSerializableType): all_cert_ids.add(cert_id) + # ['keywords_scan', 'rules_cert_id'] for cert_id in cert_obj.pdf_data.keywords_rules_cert_id: all_cert_ids.add(cert_id) + # ['st_keywords_scan']['rules_cert_id'] + if cert_obj.pdf_data.st_keywords is not None: + for cert_id in cert_obj.pdf_data.st_keywords["rules_cert_id"]: + all_cert_ids.add(cert_id) + + # TODO - finish this below - try to find that in self.obj + # ['csv_scan', 'maintainance_updates'] + return all_cert_ids def set_local_paths(self): diff --git a/sec_certs/sample/common_criteria.py b/sec_certs/sample/common_criteria.py index 168aa950..6ff66672 100644 --- a/sec_certs/sample/common_criteria.py +++ b/sec_certs/sample/common_criteria.py @@ -704,7 +704,7 @@ class CommonCriteriaCert(Certificate, PandasSerializableType, ComplexSerializabl logger.error("Cannot compute sample id when pdf files were not processed.") return self.heuristics.cert_id = self.pdf_data.cert_id - self.normalize_cert_id(all_cert_ids) + self.normalize_cert_ids_obj(all_cert_ids) @staticmethod def _is_anssi_cert(cert_id: str) -> bool: @@ -751,6 +751,7 @@ class CommonCriteriaCert(Certificate, PandasSerializableType, ComplexSerializabl cert_year = bsi_parts[5] if cert_year is None: + # TODO - do not hardcode year - IMO - at least put them into some constants for year in range(1996, 2030): cert_id_possible = cert_id + '-' + str(year) @@ -805,11 +806,12 @@ class CommonCriteriaCert(Certificate, PandasSerializableType, ComplexSerializabl return new_cert_id - def normalize_cert_id(self, all_cert_ids: Set[str]) -> None: - if self.heuristics.cert_id is None: + @staticmethod + def _normalize_cert_id(cert_id: str, all_cert_ids: Set[str]) -> Optional[str]: + if cert_id is None: return None - cert_id = self.heuristics.cert_id.strip() + cert_id = cert_id.strip() fixed_cert_id = cert_id if self._is_anssi_cert(cert_id): @@ -824,4 +826,16 @@ class CommonCriteriaCert(Certificate, PandasSerializableType, ComplexSerializabl if self._is_ocsi_cert_id(cert_id): fixed_cert_id = self._fix_ocsi_cert_id(cert_id) - self.heuristics.cert_id = fixed_cert_id + return fixed_cert_id + + + def normalize_cert_ids_obj(self, all_cert_ids: Set[str]) -> None: + """ + This method normalizes all IDs in self object. + """ + self.heuristics.cert_id = self._normalize_cert_id(self.heuristics.cert_id, all_cert_ids) + # TODO - update BSI_cert_id (??) + # TODO - update keyword_cert_id (self.pdf_data.keyword; self.pdf_data.rules_keywords) + # TODO - update self.pdf_data.processed_cert_id + # TODO - should I update dependencies among certificates?? +
\ No newline at end of file |
