aboutsummaryrefslogtreecommitdiffhomepage
path: root/src
diff options
context:
space:
mode:
authorJ08nY2024-02-05 14:05:28 +0100
committerJ08nY2024-02-05 14:05:28 +0100
commit520ce49b95c7f79481a68f23ec74bffbc93a80c1 (patch)
treee5aa88bb90c11c729cae67851e06b604b8936456 /src
parent4fbb063846eb2375ac735c88ca0abb7df7c11267 (diff)
downloadsec-certs-520ce49b95c7f79481a68f23ec74bffbc93a80c1.tar.gz
sec-certs-520ce49b95c7f79481a68f23ec74bffbc93a80c1.tar.zst
sec-certs-520ce49b95c7f79481a68f23ec74bffbc93a80c1.zip
Improve Indian rules.
Diffstat (limited to 'src')
-rw-r--r--src/sec_certs/rules.yaml10
-rw-r--r--src/sec_certs/sample/cc_certificate_id.py14
2 files changed, 19 insertions, 5 deletions
diff --git a/src/sec_certs/rules.yaml b/src/sec_certs/rules.yaml
index 5e000144..41357015 100644
--- a/src/sec_certs/rules.yaml
+++ b/src/sec_certs/rules.yaml
@@ -94,9 +94,13 @@ cc_cert_id:
# CSEC2019015
# CSEC 2019012
IN:
- # India (IC3S/DEL01/VALIANT/EAL1/0317/0007/CR STQC/CC/14-15/12/ETR/0017 IC3S/MUM01/CISCO/cPP/0119/0016/CR)
- # will miss STQC/CC/14-15/12/ETR/0017
- - "(?:IC3S|STQC/CC)/[^ ]+? ?/CR"
+ - "IC3S/(?P<lab>[A-Z]+[0-9]+)/(?P<vendor>[a-zA-Z_]+)/(?P<level>[a-zA-Z0-9]+)/(?P<number1>[0-9]+)/(?P<number2>[0-9]+) ?(?:/CR)?"
+ # XXX: The cert IDs are often present only in the certificate and not in the report.
+ # The report often only has the report id, of the format "STQC/CC/1617/18/CR"
+ # Examples:
+ # IC3S/BG01/HALTDOS/EAL2/0317/0008/CR
+ # IC3S/KOL01/ADVA/EAL2/0520/0021/CR
+ # IC3S/MUM01/Symantec/NDcPP/0722/0032/CR
SG:
- "CSA_CC_(?P<year>[0-9]{2})(?P<counter>[0-9]{3})"
# Examples:
diff --git a/src/sec_certs/sample/cc_certificate_id.py b/src/sec_certs/sample/cc_certificate_id.py
index 5facf1a5..7997b846 100644
--- a/src/sec_certs/sample/cc_certificate_id.py
+++ b/src/sec_certs/sample/cc_certificate_id.py
@@ -117,7 +117,17 @@ class CertificateId:
return new_cert_id
def _canonical_in(self):
- return self.clean.replace(" ", "")
+ new_cert_id = self.clean
+ for rule in rules["cc_cert_id"]["IN"]:
+ if match := re.match(rule, new_cert_id):
+ groups = match.groupdict()
+ lab = groups["lab"]
+ vendor = groups["vendor"]
+ level = groups["level"]
+ number1, number2 = groups["number1"], groups["number2"]
+ new_cert_id = f"IC3S/{lab}/{vendor}/{level}/{number1}/{number2}"
+ break
+ return new_cert_id
def _canonical_se(self):
new_cert_id = self.clean
@@ -232,7 +242,7 @@ class CertificateId:
"AU": self._canonical_au,
"KR": self._canonical_kr,
# SG is canonical by default
- # IT is canonucal by default
+ # IT is canonical by default
}
if self.scheme in schemes: