aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--src/sec_certs/rules.yaml6
-rw-r--r--src/sec_certs/sample/cc_certificate_id.py14
-rw-r--r--tests/cc/test_cc_misc.py6
3 files changed, 25 insertions, 1 deletions
diff --git a/src/sec_certs/rules.yaml b/src/sec_certs/rules.yaml
index fa188052..6b63b991 100644
--- a/src/sec_certs/rules.yaml
+++ b/src/sec_certs/rules.yaml
@@ -60,7 +60,11 @@ cc_cert_id:
- "JISEC-CC-CRP-C[0-9]+-[0-9]+-[0-9]+" # Japan (JISEC-CC-CRP-C0689-01-2020)
- "Certification No. [cC][0-9]+" # Japan (Certification No. C0090)
MY:
- - "ISCB-[0-9]+-(?:RPT|FRM)-[CM][0-9]+[A-Z]?-(?:CR|AMR)(?:-[0-9])?-[vV][0-9](?:\\.[0-9])?[a-z]?" # Malaysia (ISCB-3-RPT-C092-CR-v1, ISCB-3-RPT-C068-CR-1-v1)
+ - "ISCB-(?P<digit>[0-9])-RPT-C(?P<counter>[0-9]{3})-CR(?:-[0-9])?-(?P<version>[vV][0-9][a-z]?)"
+ # Examples:
+ # ISCB-3-RPT-C068-CR-1-v1
+ # ISCB-5-RPT-C075-CR-v2
+ # ISCB-5-RPT-C046-CR-V1a
IT:
- "OCSI/CERT/.+?" # Italy
- "OCSI/CERT/.+?/20[0-9]+(?:\\w|/RC)" # Italy (OCSI/CERT/ATS/01/2018/RC)
diff --git a/src/sec_certs/sample/cc_certificate_id.py b/src/sec_certs/sample/cc_certificate_id.py
index e84f6df2..42dc9e6f 100644
--- a/src/sec_certs/sample/cc_certificate_id.py
+++ b/src/sec_certs/sample/cc_certificate_id.py
@@ -89,6 +89,19 @@ class CertificateId:
return new_cert_id
+ def _canonical_my(self) -> str:
+ new_cert_id = self.clean
+ for rule in rules["cc_cert_id"]["MY"]:
+ if match := re.match(rule, new_cert_id):
+ groups = match.groupdict()
+ digit = groups["digit"]
+ counter = groups["counter"]
+ version = groups["version"]
+ new_cert_id = f"ISCB-{digit}-RPT-C{counter}-CR-{version.lower()}"
+ break
+
+ return new_cert_id
+
def _canonical_es(self) -> str:
cert_id = self.clean
spain_parts = cert_id.split("-")
@@ -170,6 +183,7 @@ class CertificateId:
"FR": self._canonical_fr,
"DE": self._canonical_de,
"US": self._canonical_us,
+ "MY": self._canonical_my,
"ES": self._canonical_es,
"IT": self._canonical_it,
"IN": self._canonical_in,
diff --git a/tests/cc/test_cc_misc.py b/tests/cc/test_cc_misc.py
index 6fde3339..d439d508 100644
--- a/tests/cc/test_cc_misc.py
+++ b/tests/cc/test_cc_misc.py
@@ -19,6 +19,12 @@ def test_canonicalize_us():
assert canonicalize("CCEVS-VR-04-0082", "US") == "CCEVS-VR-0082-2004"
+def test_canonicalize_my():
+ assert canonicalize("ISCB-5-RPT-C075-CR-v2", "MY") == "ISCB-5-RPT-C075-CR-v2"
+ assert canonicalize("ISCB-5-RPT-C046-CR-V1a", "MY") == "ISCB-5-RPT-C046-CR-v1a"
+ assert canonicalize("ISCB-3-RPT-C068-CR-1-v1", "MY") == "ISCB-3-RPT-C068-CR-v1"
+
+
def test_canonicalize_es():
assert canonicalize("2011-14-INF-1095-v1", "ES") == "2011-14-INF-1095"