aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/sec_certs/sample
diff options
context:
space:
mode:
authorAdam Janovsky2023-11-14 13:46:39 +0100
committerAdam Janovsky2023-11-14 13:46:39 +0100
commitb7b85a17cc048afb16489a5140366de887cb443a (patch)
tree7ced19e76bf9cd9b64663c38f23e9f7026227277 /src/sec_certs/sample
parent80190b01aeda844b9d3ea8684284130c44f1453e (diff)
parent1ccca9ae8afa8e6574e1cbba2c93b8d5428e2b2e (diff)
downloadsec-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.py15
-rw-r--r--src/sec_certs/sample/cc_certificate_id.py9
-rw-r--r--src/sec_certs/sample/cc_scheme.py10
-rw-r--r--src/sec_certs/sample/fips.py11
-rw-r--r--src/sec_certs/sample/sar.py2
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: