From a096f7ed6c4637dc700bd53df2d110bb8a428394 Mon Sep 17 00:00:00 2001 From: J08nY Date: Sat, 3 Feb 2024 18:45:46 +0100 Subject: Improve UK rules. --- src/sec_certs/rules.yaml | 7 +++++-- src/sec_certs/sample/cc_certificate_id.py | 8 ++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/sec_certs/rules.yaml b/src/sec_certs/rules.yaml index 95a834ba..8f5c6fd4 100644 --- a/src/sec_certs/rules.yaml +++ b/src/sec_certs/rules.yaml @@ -46,8 +46,11 @@ cc_cert_id: - "[0-9][0-9][0-9][ -](?:EWA|LSS|CCS)(?:[ -]20[0-9][0-9])?" # Canada (522-EWA-2020, 524 LSS 2020, 503-LSS) - "[0-9][0-9][0-9](?:%20|-)(?:EWA|LSS|CCS)(?:%20|-)(?:20[0-9][0-9]%20|)CR%20v[0-9]\\.[0-9]" # Canada filename with space (518-LSS%20CR%20v1.0) UK: - - "CRP[0-9]+[A-Z]?" # UK CESG - - "CERTIFICATION REPORT No. P[0-9]+[A-Z]?" # UK CESG + - "CRP(?P[0-9]+[A-Z]?)" + - "CERTIFICATION REPORT No. P(?P[0-9]+[A-Z]?)" + # Examples: + # CRP208 + # CERTIFICATION REPORT No. P123A ES: - "20[0-9][0-9][-‐][0-9]+[-‐]INF[-‐][0-9]+([-‐]?[ -‐](?:V|v)[0-9]+)?" # Spain ("2006-4-INF-98 v2" or "2006-4-INF-98-v2" or "2020-34-INF-3784- v1") KR: diff --git a/src/sec_certs/sample/cc_certificate_id.py b/src/sec_certs/sample/cc_certificate_id.py index fe362b99..5ec168ee 100644 --- a/src/sec_certs/sample/cc_certificate_id.py +++ b/src/sec_certs/sample/cc_certificate_id.py @@ -133,8 +133,12 @@ class CertificateId: def _canonical_uk(self): new_cert_id = self.clean - if match := re.match("CERTIFICATION REPORT No. P([0-9]+[A-Z]?)", new_cert_id): - new_cert_id = "CRP" + match.group(1) + for rule in rules["cc_cert_id"]["UK"]: + if match := re.match(rule, new_cert_id): + groups = match.groupdict() + counter = groups["counter"] + new_cert_id = f"CRP{counter}" + break return new_cert_id def _canonical_ca(self): -- cgit v1.3.1