aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislav Boboň2020-10-15 10:28:59 +0200
committerStanislav Boboň2020-10-15 10:28:59 +0200
commit89798873bd7135396f2f357eb16818457114fd04 (patch)
treef63542bf25b5316f38d69b19b9c9a555524c92d3
parent821dd3d4a07d9440763b060e53482fece0033dd3 (diff)
downloadsec-certs-89798873bd7135396f2f357eb16818457114fd04.tar.gz
sec-certs-89798873bd7135396f2f357eb16818457114fd04.tar.zst
sec-certs-89798873bd7135396f2f357eb16818457114fd04.zip
cert_rules for fips, no warnings in tabula and footer quickfix
-rw-r--r--src/cert_rules.py7
-rw-r--r--src/extract_certificates.py8
-rw-r--r--src/fips_certificates.py13
3 files changed, 16 insertions, 12 deletions
diff --git a/src/cert_rules.py b/src/cert_rules.py
index 147b1fb2..a3e0dd34 100644
--- a/src/cert_rules.py
+++ b/src/cert_rules.py
@@ -335,6 +335,7 @@ rules['rules_other'] = rules_other
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# For FIPS
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-rules['rules_fips_algorithms'] = rules_fips_remove_algorithm_ids
-rules['rules_security_level'] = rules_fips_security_level
-rules['rules_cert_id'] = rules_fips_cert
+fips_rules = {}
+fips_rules['rules_fips_algorithms'] = rules_fips_remove_algorithm_ids
+fips_rules['rules_security_level'] = rules_fips_security_level
+fips_rules['rules_cert_id'] = rules_fips_cert
diff --git a/src/extract_certificates.py b/src/extract_certificates.py
index 5e822de8..1f2daf7e 100644
--- a/src/extract_certificates.py
+++ b/src/extract_certificates.py
@@ -9,7 +9,7 @@ import csv
import string
from analyze_certificates import is_in_dict
-from cert_rules import rules
+from cert_rules import rules, fips_rules
from enum import Enum
import matplotlib.pyplot as plt
@@ -1128,7 +1128,8 @@ def extract_certificates_keywords(walk_dir, fragments_dir, file_prefix, write_ou
os.path.splitext(os.path.basename(file_name))[0])[0]
# parse certificate, return all matches
all_items_found[file_cert_name], modified_cert_file = parse_cert_file(
- file_name, rules, -1, should_censure_right_away=should_censure_right_away, fips_items=fips_items)
+ file_name, fips_rules if fips_items else rules, -1, should_censure_right_away=should_censure_right_away,
+ fips_items=fips_items)
# try to establish the certificate id of the current certificate
# cert_id[file_cert_name] = estimate_cert_id(
@@ -1437,7 +1438,8 @@ def extract_certificates_metadata_html(file_name):
items_found['link_security_target_file_name'] = st_file_name
download_files_certs.append(
(
- items_found['link_cert_report'], cert_file_name, items_found['link_security_target'], st_file_name))
+ items_found['link_cert_report'], cert_file_name, items_found['link_security_target'],
+ st_file_name))
index_next_item += 1
items_found['maintainance_updates'] = parse_product_updates(
diff --git a/src/fips_certificates.py b/src/fips_certificates.py
index 8c87a5d8..89fa966a 100644
--- a/src/fips_certificates.py
+++ b/src/fips_certificates.py
@@ -317,15 +317,16 @@ def find_tables(txt, file_name, num_pages):
# We have 2 groups, one is optional - trying to parse 2 lines (just in case)
footer1 = [m.group('first') for m in footer_regex.finditer(txt)]
footer2 = [m.group('second') for m in footer_regex.finditer(txt)]
+
if len(footer2) < len(footer1):
footer2 += [''] * (len(footer1) - len(footer2))
# zipping them together
- footer_complete = [m[0] + m[1] for m in zip(footer1, footer2)]
+ footer_complete = [m[0] + m[1] for m in zip(footer1, footer2) if m[0] is not None and m[1] is not None]
# removing None and duplicates
footers = [extract_page_number(x) for x in footer_complete]
- footers = list(dict.fromkeys([x for x in footers if x is not None and int(x) < num_pages]))
+ footers = list(dict.fromkeys([x for x in footers if x is not None and 0 < int(x) < num_pages]))
print(footers)
if footers:
@@ -340,14 +341,14 @@ def repair_pdf_page_count(file):
def extract_certs_from_tables(list_of_files, html_items):
global count
- # list_of_files = ['/home/stan/sec-certs/files/fips/security_policies/2441.pdf.txt']
+ # list_of_files = ['/home/stan/sec-certs/files/fips/security_policies/419.pdf.txt']
not_decoded = []
for REDHAT_FILE in list_of_files:
if '.txt' not in REDHAT_FILE:
continue
- # if html_items[extract_filename(REDHAT_FILE[:-8])]['tables_done']:
- # continue
+ if html_items[extract_filename(REDHAT_FILE[:-8])]['tables_done']:
+ continue
with open(REDHAT_FILE, 'r') as f:
try:
@@ -362,7 +363,7 @@ def extract_certs_from_tables(list_of_files, html_items):
lst = []
print("~~~~~~~~~~~~~~~", REDHAT_FILE, "~~~~~~~~~~~~~~~~~~~~~~~")
- data = read_pdf(REDHAT_FILE[:-4], pages=tables)
+ data = read_pdf(REDHAT_FILE[:-4], pages=[12], silent=True)
# find columns with cert numbers
for df in data:
for col in range(len(df.columns)):