diff options
| author | Adam Janovsky | 2021-12-19 11:51:15 +0100 |
|---|---|---|
| committer | Adam Janovsky | 2021-12-19 11:51:15 +0100 |
| commit | 77028627f6d2b1eb054f85ea05fa6fc9305d006a (patch) | |
| tree | 894aab5964982734f8f5777e09bb3cb082aecb76 | |
| parent | 9a80886b9e013fec1687261b2b03941a7270a2d9 (diff) | |
| download | sec-certs-77028627f6d2b1eb054f85ea05fa6fc9305d006a.tar.gz sec-certs-77028627f6d2b1eb054f85ea05fa6fc9305d006a.tar.zst sec-certs-77028627f6d2b1eb054f85ea05fa6fc9305d006a.zip | |
flake8 compliance
| -rwxr-xr-x | cc_cli.py | 4 | ||||
| -rw-r--r-- | examples/cc_oop_demo.py | 2 | ||||
| -rw-r--r-- | examples/fips_cpe_labeling.py | 1 | ||||
| -rwxr-xr-x | fips_cli.py | 3 | ||||
| -rw-r--r-- | sec_certs/cert_rules.py | 10 | ||||
| -rw-r--r-- | sec_certs/dataset/common_criteria.py | 7 | ||||
| -rw-r--r-- | sec_certs/dataset/cve.py | 6 | ||||
| -rw-r--r-- | sec_certs/dataset/fips.py | 2 | ||||
| -rw-r--r-- | sec_certs/helpers.py | 21 | ||||
| -rw-r--r-- | sec_certs/model/cpe_matching.py | 7 | ||||
| -rw-r--r-- | sec_certs/sample/common_criteria.py | 10 | ||||
| -rw-r--r-- | sec_certs/sample/cve.py | 2 | ||||
| -rw-r--r-- | sec_certs/sample/fips.py | 3 | ||||
| -rw-r--r-- | tests/fips_test_utils.py | 2 | ||||
| -rw-r--r-- | tests/test_cc_heuristics.py | 2 | ||||
| -rw-r--r-- | tests/test_cc_oop.py | 3 | ||||
| -rw-r--r-- | tests/test_fips_oop.py | 2 |
17 files changed, 38 insertions, 49 deletions
@@ -86,7 +86,7 @@ def main( dset: CCDataset = CCDataset.from_json(Path(inputpath)) if output: print( - f"Warning: you provided both input and output paths. The dataset from input path will get copied to output path." + "Warning: you provided both input and output paths. The dataset from input path will get copied to output path." ) dset.root_dir = output @@ -101,7 +101,7 @@ def main( dset = CCDataset( certs={}, root_dir=output, - name=f"CommonCriteria_dataset", + name="CommonCriteria_dataset", description=f"Full CommonCriteria dataset snapshot {datetime.now().date()}", ) dset.get_certs_from_web() diff --git a/examples/cc_oop_demo.py b/examples/cc_oop_demo.py index 60949cd1..46f4d882 100644 --- a/examples/cc_oop_demo.py +++ b/examples/cc_oop_demo.py @@ -43,7 +43,7 @@ def main(): dset._extract_data() # transform to pandas DataFrame - df = dset.to_pandas() + # df = dset.to_pandas() # Compute heuristics on the dataset dset._compute_heuristics() diff --git a/examples/fips_cpe_labeling.py b/examples/fips_cpe_labeling.py index 8b2d99d2..5cab7829 100644 --- a/examples/fips_cpe_labeling.py +++ b/examples/fips_cpe_labeling.py @@ -3,7 +3,6 @@ from datetime import datetime from pathlib import Path from sec_certs.dataset.fips import FIPSDataset -from sec_certs.model.evaluation import evaluate, get_validation_dgsts logger = logging.getLogger(__name__) diff --git a/fips_cli.py b/fips_cli.py index b1bca9c2..149d2f81 100755 --- a/fips_cli.py +++ b/fips_cli.py @@ -1,6 +1,5 @@ #!/usr/bin/env python3 import logging -import os import sys from datetime import datetime from pathlib import Path @@ -117,8 +116,6 @@ def main( stream_handler.setFormatter(formatter) handlers: List[logging.StreamHandler] = [file_handler] - script_dir = os.path.dirname(os.path.realpath(__file__)) - if output: output = Path(output) diff --git a/sec_certs/cert_rules.py b/sec_certs/cert_rules.py index 50278e83..8d0637b8 100644 --- a/sec_certs/cert_rules.py +++ b/sec_certs/cert_rules.py @@ -54,8 +54,8 @@ rules_protection_profiles = [ "BSI-(?:CC[-_]|)PP[-_]*.+?", "PP-SSCD.+?", "PP_DBMS_.+?" - # 'Protection Profile', - #'CCMB-20.+?', + # 'Protection Profile', + # 'CCMB-20.+?', "BSI-CCPP-.+?", "ANSSI-CC-PP.+?", "WBIS_V[0-9]\\.[0-9]", @@ -145,8 +145,8 @@ rules_cc_claims = [ rules_javacard = [ - #'(?:Java Card|JavaCard)', - #'(?:Global Platform|GlobalPlatform)', + # '(?:Java Card|JavaCard)', + # '(?:Global Platform|GlobalPlatform)', r"(?:Java Card|JavaCard) [2-3]\.[0-9](?:\.[0-9]|)", r"JC[2-3]\.[0-9](?:\.[0-9]|)", r"(?:Java Card|JavaCard) \(version [2-3]\.[0-9](?:\.[0-9]|)\)", @@ -404,7 +404,7 @@ rules_fips_remove_algorithm_ids = [ rules_fips_to_remove = [ # --- random words found --- r"[Ss]lot #\d", # a card slot, #2069 - r"[Ss]eals? ?\(?#\d - #\d", # #1232 + r"[Ss]eals? ?\(?#\d - #\d", # #1232 r"\[#\d*\]", # some certs use this as references r"CSP ?#\d", # #2795 r"[Pp]ower [Ss]upply #\d", # #604 diff --git a/sec_certs/dataset/common_criteria.py b/sec_certs/dataset/common_criteria.py index 785f7e62..b0116221 100644 --- a/sec_certs/dataset/common_criteria.py +++ b/sec_certs/dataset/common_criteria.py @@ -327,8 +327,8 @@ class CCDataset(Dataset, ComplexSerializableType): df["dgst"] = df.apply(lambda row: helpers.get_first_16_bytes_sha256(_get_primary_key_str(row)), axis=1) - df_base = df.loc[df.is_maintenance == False].copy() - df_main = df.loc[df.is_maintenance == True].copy() + df_base = df.loc[~df.is_maintenance].copy() + df_main = df.loc[df.is_maintenance].copy() df_base.report_link = df_base.report_link.map(map_ip_to_hostname) df_base.st_link = df_base.st_link.map(map_ip_to_hostname) @@ -424,7 +424,8 @@ class CCDataset(Dataset, ComplexSerializableType): table = tables[0] rows = list(table.find_all("tr")) - header, footer, body = rows[0], rows[1], rows[2:] + # header, footer = rows[0], rows[1] + body = rows[2:] # TODO: It's possible to obtain timestamp of the moment when the list was generated. It's identical for each table and should thus only be obtained once. Not necessarily in each table # timestamp = _get_timestamp_from_footer(footer) diff --git a/sec_certs/dataset/cve.py b/sec_certs/dataset/cve.py index 49cdad27..6e662ac6 100644 --- a/sec_certs/dataset/cve.py +++ b/sec_certs/dataset/cve.py @@ -8,7 +8,7 @@ import tempfile import zipfile from dataclasses import dataclass, field from pathlib import Path -from typing import Dict, Final, List, Optional, Set, Tuple, Union +from typing import Dict, Final, List, Optional, Set, Union import pandas as pd @@ -111,13 +111,13 @@ class CVEDataset(ComplexSerializableType): @classmethod def from_web(cls, start_year: int = 2002, end_year: int = datetime.datetime.now().year): - logger.info(f"Building CVE dataset from nist.gov website.") + logger.info("Building CVE dataset from nist.gov website.") with tempfile.TemporaryDirectory() as tmp_dir: cls.download_cves(tmp_dir, start_year, end_year) json_files = glob.glob(tmp_dir + "/*.json") all_cves = dict() - logger.info(f"Downloaded required resources. Building CVEDataset from jsons.") + logger.info("Downloaded required resources. Building CVEDataset from jsons.") results = process_parallel( cls.from_nist_json, json_files, diff --git a/sec_certs/dataset/fips.py b/sec_certs/dataset/fips.py index cea42eeb..d1ce2dea 100644 --- a/sec_certs/dataset/fips.py +++ b/sec_certs/dataset/fips.py @@ -13,7 +13,7 @@ from sec_certs import constants as constants from sec_certs import helpers as helpers from sec_certs import parallel_processing as cert_processing from sec_certs.config.configuration import config -from sec_certs.dataset.dataset import Dataset, logger +from sec_certs.dataset.dataset import Dataset from sec_certs.dataset.fips_algorithm import FIPSAlgorithmDataset from sec_certs.sample.certificate import Certificate from sec_certs.sample.fips import FIPSCertificate diff --git a/sec_certs/helpers.py b/sec_certs/helpers.py index 9198f5c5..3637fe38 100644 --- a/sec_certs/helpers.py +++ b/sec_certs/helpers.py @@ -1,4 +1,3 @@ -import copy import hashlib import html import logging @@ -10,14 +9,13 @@ from datetime import date from enum import Enum from multiprocessing.pool import ThreadPool from pathlib import Path -from typing import Any, Dict, Hashable, List, Optional, Sequence, Set, Tuple, Union +from typing import Dict, Hashable, List, Optional, Sequence, Set, Tuple, Union import matplotlib.pyplot as plt import numpy as np import pandas as pd import pikepdf import requests -from packaging.version import VERSION_PATTERN from PyPDF2 import PdfFileReader from tqdm import tqdm as tqdm_original @@ -227,7 +225,7 @@ def extract_pdf_metadata(filepath: Path): # TODO: Please, refactor me. I reallyyyyyyyyyyyyy need it!!!!!! -def search_only_headers_anssi(filepath: Path): +def search_only_headers_anssi(filepath: Path): # noqa: C901 class HEADER_TYPE(Enum): HEADER_FULL = 1 HEADER_MISSING_CERT_ITEM_VERSION = 2 @@ -273,11 +271,11 @@ def search_only_headers_anssi(filepath: Path): ), ( HEADER_TYPE.HEADER_FULL, - "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 profils de protection(.+)Critères d\’évaluation et version(.+)Niveau d\’évaluation(.+)Développeurs(.+)Centre d\’évaluation(.+)Accords de reconnaissance applicables", # noqa: W605 ), ( HEADER_TYPE.HEADER_FULL, - "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\\)(.+)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", # noqa: W605 ), ( HEADER_TYPE.HEADER_FULL, @@ -491,7 +489,7 @@ def search_only_headers_anssi(filepath: Path): # TODO: Please refactor me. I need it so badlyyyyyy!!! -def search_only_headers_bsi(filepath: Path): +def search_only_headers_bsi(filepath: Path): # noqa: C901 LINE_SEPARATOR_STRICT = " " NUM_LINES_TO_INVESTIGATE = 15 rules_certificate_preface = [ @@ -561,7 +559,7 @@ def search_only_headers_bsi(filepath: Path): for m in re.finditer(rule_and_sep, whole_text): # check if previous rules had at least one match - if not constants.TAG_CERT_ID in items_found.keys(): + if constants.TAG_CERT_ID not in items_found.keys(): logger.error("ERROR: front page not found for file: {}".format(filepath)) match_groups = m.groups() @@ -649,13 +647,14 @@ def save_modified_cert_file(target_file, modified_cert_file_text, is_unicode_tex try: write_file.write(modified_cert_file_text) - except UnicodeEncodeError as e: + except UnicodeEncodeError: print("UnicodeDecodeError while writing file fragments back") finally: write_file.close() -def parse_cert_file(file_name, search_rules, limit_max_lines=-1, line_separator=LINE_SEPARATOR): +# TODO: Please, refactor me. +def parse_cert_file(file_name, search_rules, limit_max_lines=-1, line_separator=LINE_SEPARATOR): # noqa: C901 whole_text, whole_text_with_newlines, was_unicode_decode_error = load_cert_file( file_name, limit_max_lines, line_separator ) @@ -758,7 +757,7 @@ def load_cert_file(file_name, limit_max_lines=-1, line_separator=LINE_SEPARATOR) # we will estimate the line for searched matches # => we need to known how much lines were modified (removal of eoln..) # for removed newline and for any added separator - line_length_compensation = 1 - len(LINE_SEPARATOR) + # line_length_compensation = 1 - len(LINE_SEPARATOR) lines_included = 0 for line in lines: if limit_max_lines != -1 and lines_included >= limit_max_lines: diff --git a/sec_certs/model/cpe_matching.py b/sec_certs/model/cpe_matching.py index 042f6705..610b409a 100644 --- a/sec_certs/model/cpe_matching.py +++ b/sec_certs/model/cpe_matching.py @@ -1,13 +1,10 @@ import itertools -import json import logging -import operator import re -from pathlib import Path -from typing import Dict, List, Optional, Set, Tuple, Union +from typing import Dict, List, Optional, Set, Tuple from packaging.version import parse -from rapidfuzz import fuzz, process +from rapidfuzz import fuzz from sklearn.base import BaseEstimator import sec_certs.helpers as helpers diff --git a/sec_certs/sample/common_criteria.py b/sec_certs/sample/common_criteria.py index 994f56ca..a353ff61 100644 --- a/sec_certs/sample/common_criteria.py +++ b/sec_certs/sample/common_criteria.py @@ -432,11 +432,11 @@ class CommonCriteriaCert(Certificate, PandasSerializableType, ComplexSerializabl main_report_link = None main_st_link = None links = u.find_all("a") - for l in links: - if l.get("title").startswith("Maintenance Report:"): - main_report_link = CommonCriteriaCert.cc_url + l.get("href") - elif l.get("title").startswith("Maintenance ST"): - main_st_link = CommonCriteriaCert.cc_url + l.get("href") + for link in links: + if link.get("title").startswith("Maintenance Report:"): + main_report_link = CommonCriteriaCert.cc_url + link.get("href") + elif link.get("title").startswith("Maintenance ST"): + main_st_link = CommonCriteriaCert.cc_url + link.get("href") else: logger.error("Unknown link in Maintenance part!") maintenance_updates.add( diff --git a/sec_certs/sample/cve.py b/sec_certs/sample/cve.py index 94484374..2bc28c4a 100644 --- a/sec_certs/sample/cve.py +++ b/sec_certs/sample/cve.py @@ -1,7 +1,7 @@ import datetime import itertools from dataclasses import dataclass -from typing import Any, ClassVar, Dict, List, Optional, Tuple +from typing import ClassVar, Dict, List, Optional, Tuple from dateutil.parser import isoparse diff --git a/sec_certs/sample/fips.py b/sec_certs/sample/fips.py index 01ac3f2d..b66d11df 100644 --- a/sec_certs/sample/fips.py +++ b/sec_certs/sample/fips.py @@ -11,7 +11,6 @@ from dateutil import parser from tabula import read_pdf import sec_certs.constants as constants -from sec_certs import constants as constants from sec_certs import helpers from sec_certs.cert_rules import REGEXEC_SEP, fips_common_rules, fips_rules from sec_certs.config.configuration import config @@ -572,7 +571,7 @@ class FIPSCertificate(Certificate, ComplexSerializableType): algs_vals = list(cert.pdf_scan.keywords["rules_fips_algorithms"].values()) table_vals = [x["Certificate"] for x in cert.pdf_scan.algorithms] tables = [x.strip() for y in table_vals for x in y] - iterable = [l for x in algs_vals for l in list(x.keys())] + iterable = [alg for x in algs_vals for alg in list(x.keys())] iterable += tables all_algorithms = set() for x in iterable: diff --git a/tests/fips_test_utils.py b/tests/fips_test_utils.py index 89b61e7e..2fce325b 100644 --- a/tests/fips_test_utils.py +++ b/tests/fips_test_utils.py @@ -47,6 +47,6 @@ def generate_html(ids: List[str], path: Path): </tbody> </table> </body> - """ + """ with open(path, "w") as f: f.write(f"{html_head}\n{html_body}\n") diff --git a/tests/test_cc_heuristics.py b/tests/test_cc_heuristics.py index 13bff947..caa6b1fb 100644 --- a/tests/test_cc_heuristics.py +++ b/tests/test_cc_heuristics.py @@ -1,5 +1,3 @@ -import copy -import datetime import shutil import tempfile from pathlib import Path diff --git a/tests/test_cc_oop.py b/tests/test_cc_oop.py index 0149a23d..2426476d 100644 --- a/tests/test_cc_oop.py +++ b/tests/test_cc_oop.py @@ -1,11 +1,10 @@ import filecmp -import json import os import shutil import tempfile from datetime import date, datetime from pathlib import Path -from tempfile import NamedTemporaryFile, TemporaryDirectory, mkstemp +from tempfile import NamedTemporaryFile, TemporaryDirectory from unittest import TestCase import sec_certs.constants as constants diff --git a/tests/test_fips_oop.py b/tests/test_fips_oop.py index 9eb04d67..17b3325a 100644 --- a/tests/test_fips_oop.py +++ b/tests/test_fips_oop.py @@ -1,7 +1,7 @@ import shutil from pathlib import Path from tempfile import TemporaryDirectory -from typing import ClassVar, Dict, Final, List, Optional, Union +from typing import Dict, Final, List from unittest import TestCase import tests.data.test_fips_oop |
