aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorPetr Svenda2019-11-16 21:35:59 +0100
committerPetr Svenda2019-11-16 21:35:59 +0100
commit4e7565096f27440d8ba69ad3d3993b28948f560e (patch)
tree74bf219219fa0721615f030887845c53c3cd6d72
parent0d9a680b22f54dd2697f96e3ae244b3b5e45fadb (diff)
downloadsec-certs-4e7565096f27440d8ba69ad3d3993b28948f560e.tar.gz
sec-certs-4e7565096f27440d8ba69ad3d3993b28948f560e.tar.zst
sec-certs-4e7565096f27440d8ba69ad3d3993b28948f560e.zip
Added extraction of certificate metadata from front page(s) for ANSSI and BSI
-rw-r--r--src/search_certficate.py232
1 files changed, 156 insertions, 76 deletions
diff --git a/src/search_certficate.py b/src/search_certficate.py
index e0e956bc..f0f8278e 100644
--- a/src/search_certficate.py
+++ b/src/search_certficate.py
@@ -279,40 +279,54 @@ def save_modified_cert_file(target_file, modified_cert_file_text, is_unicode_tex
write_file.close()
+def print_specified_property_sorted(item_name, items_found_all):
+ specific_item_values = []
+ for file_name in items_found_all.keys():
+ if item_name in items_found_all[file_name].keys():
+ specific_item_values.append(items_found_all[file_name][item_name])
+ else:
+ print('WARNING: Item {} not found in file {}'.format(item_name, file_name))
+
+ print('*** Occurrences of *{}* item'.format(item_name))
+ sorted_items = sorted(specific_item_values)
+ for item in sorted_items:
+ print(item)
+
+
def search_only_headers_bsi(walk_dir):
LINE_SEPARATOR_STRICT = ' '
NUM_LINES_TO_INVESTIGATE = 15
rules_certificate_preface = [
-# '(BSI-DSZ-CC-.+) (?:for|For|zu) (.+) (?:from|der)',
- '(BSI-DSZ-CC-.+) (?:for|For) (.+) from (.*)',
- '(BSI-DSZ-CC-.+) zu (.+) der (.*)',
+ '(BSI-DSZ-CC-.+?) (?:for|For) (.+?) from (.*)',
+ '(BSI-DSZ-CC-.+?) zu (.+?) der (.*)',
]
- all_vendors = []
items_found_all = {}
for file_name in search_files(walk_dir):
if not os.path.isfile(file_name):
continue
print('*** {} ***'.format(file_name))
- whole_text, whole_text_with_newlines = load_cert_file(file_name, NUM_LINES_TO_INVESTIGATE, LINE_SEPARATOR_STRICT)
-
items_found_all[file_name] = {}
items_found = items_found_all[file_name]
+
+ #
+ # Process front page with info: cert_id, certified_item and developer
+ #
+ whole_text, whole_text_with_newlines = load_cert_file(file_name, NUM_LINES_TO_INVESTIGATE, LINE_SEPARATOR_STRICT)
+
+ items_found['match_rules'] = []
for rule in rules_certificate_preface:
rule_and_sep = rule + REGEXEC_SEP
for m in re.finditer(rule_and_sep, whole_text):
# insert rule if at least one match for it was found
- if rule not in items_found:
- items_found[rule] = {}
+ items_found['match_rules'].append(rule)
match_groups = m.groups()
cert_id = match_groups[0]
certified_item = match_groups[1]
- vendor = match_groups[2]
-
- items_found[rule]['cert_id'] = normalize_match_string(cert_id)
+ developer = match_groups[2]
FROM_KEYWORD_LIST = [' from ', ' der ']
for from_keyword in FROM_KEYWORD_LIST:
@@ -320,41 +334,71 @@ def search_only_headers_bsi(walk_dir):
if certified_item.find(from_keyword) != -1:
print('string **{}** detected in certified item - shall not be here, fixing...'.format(from_keyword))
certified_item_first = certified_item[:certified_item.find(from_keyword)]
- vendor = certified_item[certified_item.find(from_keyword) + from_keyword_len:]
+ developer = certified_item[certified_item.find(from_keyword) + from_keyword_len:]
certified_item = certified_item_first
continue
- items_found[rule]['certified_item'] = normalize_match_string(certified_item)
-
- end_pos = vendor.find('\f-')
+ end_pos = developer.find('\f-')
if end_pos == -1:
- end_pos = vendor.find('\fBSI')
+ end_pos = developer.find('\fBSI')
if end_pos == -1:
- end_pos = vendor.find('Bundesamt')
+ end_pos = developer.find('Bundesamt')
if end_pos != -1:
- vendor = vendor[:end_pos]
+ developer = developer[:end_pos]
- vendor = normalize_match_string(vendor)
- items_found[rule]['vendor'] = normalize_match_string(vendor)
+ items_found['cert_id'] = normalize_match_string(cert_id)
+ items_found['certified_item'] = normalize_match_string(certified_item)
+ items_found['developer'] = normalize_match_string(developer)
+ items_found['cert_lab'] = 'BSI'
- if vendor not in all_vendors:
- all_vendors.append(vendor)
+ #
+ # Process page with more detailed certificate info
+ # PP Conformance, Functionality, Assurance
+ rules_certificate_third = [
+ 'PP Conformance: (.+)Functionality: (.+)Assurance: (.+)The IT Product identified',
+ ]
- print('\n*** Detected vendors:')
- sorted_vendors = sorted(all_vendors)
- for vendor in sorted_vendors:
- print(vendor)
+ whole_text, whole_text_with_newlines = load_cert_file(file_name)
+
+ for rule in rules_certificate_third:
+ rule_and_sep = rule + REGEXEC_SEP
+
+ for m in re.finditer(rule_and_sep, whole_text):
+ # check if previous rules had at least one match
+ if not 'cert_id' in items_found.keys():
+ print('ERROR: front page not found for file: {}'.format(file_name))
+
+ match_groups = m.groups()
+ ref_protection_profiles = match_groups[0]
+ cc_version = match_groups[1]
+ cc_security_level = match_groups[2]
+
+ items_found['referenced_protection_profile'] = normalize_match_string(ref_protection_profiles)
+ items_found['cc_version'] = normalize_match_string(cc_version)
+ items_found['cc_security_level'] = normalize_match_string(cc_security_level)
+
+ if False:
+ print_specified_property_sorted('cert_id', items_found_all)
+ print_specified_property_sorted('certified_item', items_found_all)
+ print_specified_property_sorted('certified_item_version', items_found_all)
+ print_specified_property_sorted('referenced_protection_profile', items_found_all)
+ print_specified_property_sorted('cc_version', items_found_all)
+ print_specified_property_sorted('cc_security_level', items_found_all)
+ print_specified_property_sorted('developer', items_found_all)
+ print_specified_property_sorted('cert_lab', items_found_all)
- # store results into file with fixed name and also with time appendix
with open("certificate_data_bsiheader.json", "w") as write_file:
write_file.write(json.dumps(items_found_all, indent=4, sort_keys=True))
+
print('\n*** Certificates without detected preface:')
for file_name in items_found_all.keys():
if len(items_found_all[file_name]) < 1:
print('No hits for {}'.format(file_name))
print('\n**********************************')
+ return items_found_all
+
def search_only_headers_anssi(walk_dir):
LINE_SEPARATOR_STRICT = ' '
@@ -363,64 +407,71 @@ def search_only_headers_anssi(walk_dir):
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit(.+)()Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)()Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur\(s\)(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur(.+)Centre d\'évaluation(.+)Accords de reconnaissance',
+ 'Référence du rapport de certification(.+)Nom des produits(.+)Référence/version des produits(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom et version du produit(.+)revision(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables', # missing version, added via version keyworkd
+ 'Référence du rapport de certification(.+)Nom et version du produit(.+)revision(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeur (.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables', # missing version, added via version keyword
'Référence du rapport de certification(.+)Nom et version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables', # missing version
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d\’évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profisl de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance',
- 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Niveau d’évaluation(.+)Développeur(.+)Centres d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit(.+)Version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
- 'Référence du rapport de certification(.+)Nom du produit(.+)Versions du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ #'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
'Certification Report(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
- 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer(.+)Evaluation facility(.+)Recognition arrangements',
- 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer(.+)Evaluation facility(.+)Mutual Recognition Agreements',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profisl de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centres d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Versions du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+# 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs :(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Recognition arrangements',
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Mutual Recognition Agreements',
'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements',
'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer\(s\)(.+)Evaluation facility(.+)Recognition arrangements',
'Certification report reference(.+)Products names(.+)Products references(.+)protection profile conformity(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements',
'Certification report reference(.+)Product name \(reference / version\)(.+)TOE name \(reference / version\)(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements',
- 'Certification report reference(.+)TOE name(.+)Product\'s reference/ version(.+)TOE\'s reference/ version(.+)Conformité à un profil de protection(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer(.+)Evaluation facility(.+)Recognition arrangements',
+ 'Certification report reference(.+)TOE name(.+)Product\'s reference/ version(.+)TOE\'s reference/ version(.+)Conformité à un profil de protection(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Recognition arrangements',
]
rules_certificate_preface = [
- 'dddd',
-# 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeur\(s\)(.+)Centre d\’évaluation(.+)Accords de reconnaissance applicables',
-
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements',
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer\\(s\\)(.+)Evaluation facility(.+)Recognition arrangements',
+ 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer (.+)Evaluation facility(.+)Mutual Recognition Agreements',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\\’évaluation et version(.+)Niveau d\\’évaluation(.+)Développeurs(.+)Centre d\\’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.*)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit \\(référence/version\\)(.+)Nom de la TOE \\(référence/version\\)(.+)Conformité à un profil de protection(.+)Critères d\\’évaluation et version(.+)Niveau d\\’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profisl de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Version du produit(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité Ã\xa0 des profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit \\(référence/version\\)(.+)Nom de la TOE \\(référence/version\\)(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centres d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\\(s\\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Versions du produit(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur (.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
+ 'Référence du rapport de certification(.+)Nom du produit(.+)Référence du produit(.+)Conformité Ã\xa0 un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
]
- # 'Référence du rapport de certification(.+)Nom du produit(.+)Versions du produit(.+)Conformité à un profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
-
- # 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur(s)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
-
-
-
- # 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profil de protection(.+)Critères d’évaluation et version(.+)Niveau d’évaluation(.+)Développeur\(s\)(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
-
- #'Référence du rapport de certification(.+)Nom du produit \(référence/version\)(.+)Nom de la TOE \(référence/version\)(.+)Conformité à un profil de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d’évaluation(.+)Accords de reconnaissance applicables',
-
- #'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements',
- # 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation level(.+)Developers(.+)Evaluation facility(.+)Recognition arrangements',
-
- # 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité aux profils de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d\’évaluation(.+)Accords de reconnaissance applicables',
- # 'Référence du rapport de certification(.+)Nom du produit(.+)Référence/version du produit(.+)Conformité à un profil de protection(.+)Niveau d’évaluation(.+)Développeur(.+)Centres d’évaluation(.+)Accords de reconnaissance applicables',
-
- # 'Référence du rapport de certification(.+)Nom et version du produit(.+)Conformité à un profil de protection(.+)Critères d\'évaluation et version(.+)Niveau d\'évaluation(.+)Développeurs(.+)Centre d\'évaluation(.+)Accords de reconnaissance applicables',
-
- # 'Certification report reference(.+)Product name(.+)Product reference(.+)Protection profile conformity(.+)Evaluation criteria and version(.+)Evaluation level(.+)Developer(.+)Evaluation facility(.+)Mutual Recognition Agreements',
+# rules_certificate_preface = [
+# 'dddd',
+# ]
# Certification Report 2005/41
# ST19WP18E microcontroller
@@ -432,7 +483,11 @@ def search_only_headers_anssi(walk_dir):
# conformant to both PP/9806 and BSI-PP-002-2001 protection profiles
# Evaluation sponsor: STMicroelectronics Evaluation facility: Serma Technologies
- all_vendors = []
+ # statistics about rules success rate
+ num_rules_hits = {}
+ for rule in rules_certificate_preface:
+ num_rules_hits[rule] = 0
+
items_found_all = {}
for file_name in search_files(walk_dir):
if not os.path.isfile(file_name):
@@ -443,10 +498,19 @@ def search_only_headers_anssi(walk_dir):
items_found_all[file_name] = {}
items_found = items_found_all[file_name]
+ other_rule_already_match = False
+ other_rule = ''
for rule in rules_certificate_preface:
rule_and_sep = rule + REGEXEC_SEP
for m in re.finditer(rule_and_sep, whole_text):
+ if not other_rule_already_match:
+ other_rule_already_match = True
+ other_rule = rule
+ else:
+ print('WARNING: multiple rules are matching same certification document: ' + file_name)
+
+ num_rules_hits[rule] += 1 # add hit to this rule
# insert rule if at least one match for it was found
if rule not in items_found:
items_found[rule] = {}
@@ -465,16 +529,22 @@ def search_only_headers_anssi(walk_dir):
cc_security_level = match_groups[5]
items_found[rule]['cc_security_level'] = normalize_match_string(cc_security_level)
vendor = match_groups[6]
- vendor = normalize_match_string(vendor)
- items_found[rule]['vendor'] = normalize_match_string(vendor)
+ items_found[rule]['developer'] = normalize_match_string(vendor)
+ cert_lab = match_groups[7]
+ items_found[rule]['cert_lab'] = normalize_match_string(cert_lab)
- if vendor not in all_vendors:
- all_vendors.append(vendor)
+ if items_found[rule]['cc_version'].startswith('EAL 3 augmenté ADV_FSP.4, ADV_TDS.3, ADV_IMP.1, ALC_FLR.3'):
+ print('gotcha')
- print('\n*** Detected vendors:')
- sorted_vendors = sorted(all_vendors)
- for vendor in sorted_vendors:
- print(vendor)
+ if False:
+ print_specified_property_sorted('cert_id', items_found_all)
+ print_specified_property_sorted('certified_item', items_found_all)
+ print_specified_property_sorted('certified_item_version', items_found_all)
+ print_specified_property_sorted('referenced_protection_profile', items_found_all)
+ print_specified_property_sorted('cc_version', items_found_all)
+ print_specified_property_sorted('cc_security_level', items_found_all)
+ print_specified_property_sorted('developer', items_found_all)
+ print_specified_property_sorted('cert_lab', items_found_all)
# store results into file with fixed name and also with time appendix
with open("certificate_data_anssiheader.json", "w") as write_file:
@@ -490,6 +560,17 @@ def search_only_headers_anssi(walk_dir):
print('Total no hits files: {}'.format(no_hits_count))
print('\n**********************************')
+ if False:
+ print('# hits for rule')
+ sorted_rules = sorted(num_rules_hits.items(), key=operator.itemgetter(1), reverse=True)
+ used_rules = []
+ for rule in sorted_rules:
+ print('{:4d} : {}'.format(rule[1], rule[0]))
+ if rule[1] > 0:
+ used_rules.append(rule[0])
+
+ return items_found_all
+
MIN_ITEMS_FOUND = 29725
@@ -503,7 +584,7 @@ def main():
#walk_dir = 'c:\\Certs\\certs\\cc_search\\only_ic_sc\\txt\\'
#walk_dir = 'c:\\Certs\\certs\\cc_search\\20191109_icsconly_current\\'
#walk_dir = 'c:\\Certs\\certs\\cc_search\\20191109_icsconly_currentandachived\\'
- #walk_dir = 'c:\\Certs\\certs\\cc_search\\20191109_icsconly_currentandachived_bsionly\\'
+ walk_dir = 'c:\\Certs\\certs\\cc_search\\20191109_icsconly_currentandachived_bsionly\\'
walk_dir = 'c:\\Certs\\certs\\cc_search\\20191109_icsconly_currentandachived_anssionly\\'
#walk_dir = 'c:\\Certs\\certs\\cc_search\\20191109_icsconly_currentandachived_others\\'
#walk_dir = 'c:\\Certs\\certs\\cc_search\\test\\'
@@ -511,12 +592,11 @@ def main():
#walk_dir = 'c:\\Certs\\certs\\cc_search\\test3\\'
#walk_dir = 'c:\\Certs\\certs\\cc_search\\test4\\'
#walk_dir = 'c:\\Certs\\certs\\cc_search\\test5\\'
- walk_dir = 'c:\\Certs\\certs\\cc_search\\test6\\'
+ #walk_dir = 'c:\\Certs\\certs\\cc_search\\test7\\'
search_only_headers_anssi(walk_dir)
- #search_only_headers_bsi(walk_dir)
-
+ # search_only_headers_bsi(walk_dir)
return