aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorGeogeFI2022-02-03 10:47:59 +0100
committerGeogeFI2022-02-03 10:47:59 +0100
commit766cb6cd33556d4aae7638afa003bba8bc00ddde (patch)
treeac75c83904f4bf2d8efa9174bbf4de8217cb4990
parent733de3ad21a8010f9a7f4c06caa7993bc0016ed9 (diff)
downloadsec-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.py9
-rw-r--r--sec_certs/sample/common_criteria.py24
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