diff options
| author | Adam Janovsky | 2023-11-14 13:46:39 +0100 |
|---|---|---|
| committer | Adam Janovsky | 2023-11-14 13:46:39 +0100 |
| commit | b7b85a17cc048afb16489a5140366de887cb443a (patch) | |
| tree | 7ced19e76bf9cd9b64663c38f23e9f7026227277 /src/sec_certs/sample | |
| parent | 80190b01aeda844b9d3ea8684284130c44f1453e (diff) | |
| parent | 1ccca9ae8afa8e6574e1cbba2c93b8d5428e2b2e (diff) | |
| download | sec-certs-b7b85a17cc048afb16489a5140366de887cb443a.tar.gz sec-certs-b7b85a17cc048afb16489a5140366de887cb443a.tar.zst sec-certs-b7b85a17cc048afb16489a5140366de887cb443a.zip | |
merge fresh main
Diffstat (limited to 'src/sec_certs/sample')
| -rw-r--r-- | src/sec_certs/sample/cc.py | 15 | ||||
| -rw-r--r-- | src/sec_certs/sample/cc_certificate_id.py | 9 | ||||
| -rw-r--r-- | src/sec_certs/sample/cc_scheme.py | 10 | ||||
| -rw-r--r-- | src/sec_certs/sample/fips.py | 11 | ||||
| -rw-r--r-- | src/sec_certs/sample/sar.py | 2 |
5 files changed, 28 insertions, 19 deletions
diff --git a/src/sec_certs/sample/cc.py b/src/sec_certs/sample/cc.py index 8072df99..32c875c8 100644 --- a/src/sec_certs/sample/cc.py +++ b/src/sec_certs/sample/cc.py @@ -247,7 +247,7 @@ class CCCertificate( st_filename: str | None = field(default=None) def __bool__(self) -> bool: - return any([x is not None for x in vars(self)]) + return any(x is not None for x in vars(self)) @property def bsi_data(self) -> dict[str, Any] | None: @@ -616,13 +616,12 @@ class CCCertificate( ) for att, val in vars(self).items(): - if not val: - setattr(self, att, getattr(other, att)) - elif other_source == "html" and att == "protection_profiles": - setattr(self, att, getattr(other, att)) - elif other_source == "html" and att == "maintenance_updates": - setattr(self, att, getattr(other, att)) - elif att == "state": + if ( + (not val) + or (other_source == "html" and att == "protection_profiles") + or (other_source == "html" and att == "maintenance_updates") + or (att == "state") + ): setattr(self, att, getattr(other, att)) else: if getattr(self, att) != getattr(other, att): diff --git a/src/sec_certs/sample/cc_certificate_id.py b/src/sec_certs/sample/cc_certificate_id.py index 1342cab8..254c8e05 100644 --- a/src/sec_certs/sample/cc_certificate_id.py +++ b/src/sec_certs/sample/cc_certificate_id.py @@ -122,6 +122,14 @@ class CertificateId: cert_num = int(new_cert_id.split("-")[1]) return f"SERTIT-{cert_num:03}" + def _canonical_nl(self): + new_cert_id = self.clean + if new_cert_id.startswith("CC-"): + new_cert_id = f"NSCIB-{new_cert_id}" + if not new_cert_id.endswith("-CR"): + new_cert_id = f"{new_cert_id}-CR" + return new_cert_id + @property def clean(self) -> str: """ @@ -146,6 +154,7 @@ class CertificateId: "CA": self._canonical_ca, "JP": self._canonical_jp, "NO": self._canonical_no, + "NL": self._canonical_nl, } if self.scheme in schemes: diff --git a/src/sec_certs/sample/cc_scheme.py b/src/sec_certs/sample/cc_scheme.py index 12fb1fd4..bc0c0792 100644 --- a/src/sec_certs/sample/cc_scheme.py +++ b/src/sec_certs/sample/cc_scheme.py @@ -107,7 +107,7 @@ def get_australia_in_evaluation(enhanced: bool = True) -> list[dict[str, Any]]: if enhanced: e: dict[str, Any] = {} cert_page = _get_page(cert["url"]) - article = cert_page.find("article", attrs={"role": "article"}) + article = cert_page.find("article") blocks = article.find("div").find_all("div", class_="flex", recursive=False) for h2 in blocks[0].find_all("h2"): val = sns(h2.find_next_sibling("span").text) @@ -153,7 +153,9 @@ def get_canada_certified() -> list[dict[str, Any]]: :return: The entries. """ - soup = _get_page(constants.CC_CANADA_CERTIFIED_URL) + resp = _get(constants.CC_CANADA_API_URL + f"?lang=en&url={constants.CC_CANADA_CERTIFIED_URL}", None) + html_data = resp.json()["response"]["page"]["body"][0] + soup = BeautifulSoup(html_data, "html5lib") tbody = soup.find("table").find("tbody") results = [] for tr in tqdm(tbody.find_all("tr"), desc="Get CA scheme certified."): @@ -176,7 +178,9 @@ def get_canada_in_evaluation() -> list[dict[str, Any]]: :return: The entries. """ - soup = _get_page(constants.CC_CANADA_INEVAL_URL) + resp = _get(constants.CC_CANADA_API_URL + f"?lang=en&url={constants.CC_CANADA_INEVAL_URL}", None) + html_data = resp.json()["response"]["page"]["body"][0] + soup = BeautifulSoup(html_data, "html5lib") tbody = soup.find("table").find("tbody") results = [] for tr in tqdm(tbody.find_all("tr"), desc="Get CA scheme in evaluation."): diff --git a/src/sec_certs/sample/fips.py b/src/sec_certs/sample/fips.py index d351c3ce..e0bcb74a 100644 --- a/src/sec_certs/sample/fips.py +++ b/src/sec_certs/sample/fips.py @@ -64,7 +64,7 @@ class FIPSHTMLParser: ) entries = [(FIPSHTMLParser.normalize_string(key.text), entry) for key, entry in entries] entries = [parse_single_detail_entry(*x) for x in entries if x[0] in DETAILS_KEY_NORMALIZATION_DICT] - entries = {x: y for x, y in entries} + entries = dict(entries) if "caveat" in entries: entries["mentioned_certs"] = FIPSHTMLParser.get_mentioned_certs_from_caveat(entries["caveat"]) @@ -83,15 +83,13 @@ class FIPSHTMLParser: def _build_vendor_dict(vendor_div: Tag) -> dict[str, Any]: if not (link := vendor_div.find("a")): return {"vendor_url": None, "vendor": list(vendor_div.find("div", "panel-body").children)[0].strip()} - else: - return {"vendor_url": link.get("href"), "vendor": link.text.strip()} + return {"vendor_url": link.get("href"), "vendor": link.text.strip()} @staticmethod def _build_related_files_dict(related_files_div: Tag) -> dict[str, Any]: if cert_link := [x for x in related_files_div.find_all("a") if "Certificate" in x.text]: return {"certificate_pdf_url": constants.FIPS_BASE_URL + cert_link[0].get("href")} - else: - return {"certificate_pdf_url": None} + return {"certificate_pdf_url": None} @staticmethod def _build_validation_history_dict(validation_history_div: Tag) -> dict[str, Any]: @@ -433,8 +431,7 @@ class FIPSCertificate( fips_certlike = self.keywords["fips_certlike"].get("Certlike", {}) matches = {re.search(r"#\s{0,1}\d{1,4}", x) for x in fips_certlike} return {"".join([x for x in match.group() if x.isdigit()]) for match in matches if match} - else: - return set() + return set() @dataclass(eq=True) class Heuristics(BaseHeuristics, ComplexSerializableType): diff --git a/src/sec_certs/sample/sar.py b/src/sec_certs/sample/sar.py index 8f48f417..e3d7bd2b 100644 --- a/src/sec_certs/sample/sar.py +++ b/src/sec_certs/sample/sar.py @@ -50,7 +50,7 @@ class SAR(ComplexSerializableType): @staticmethod def matches_re(string: str) -> bool: return any( - [re.match(sar_class + "(?:_[A-Z]{3,4}){1,2}(?:\\.[0-9]){0,2}", string) for sar_class in SAR_CLASS_MAPPING] + re.match(sar_class + "(?:_[A-Z]{3,4}){1,2}(?:\\.[0-9]){0,2}", string) for sar_class in SAR_CLASS_MAPPING ) def __lt__(self, other: Any) -> bool: |
