aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAdam Janovsky2021-12-19 11:51:15 +0100
committerAdam Janovsky2021-12-19 11:51:15 +0100
commit77028627f6d2b1eb054f85ea05fa6fc9305d006a (patch)
tree894aab5964982734f8f5777e09bb3cb082aecb76
parent9a80886b9e013fec1687261b2b03941a7270a2d9 (diff)
downloadsec-certs-77028627f6d2b1eb054f85ea05fa6fc9305d006a.tar.gz
sec-certs-77028627f6d2b1eb054f85ea05fa6fc9305d006a.tar.zst
sec-certs-77028627f6d2b1eb054f85ea05fa6fc9305d006a.zip
flake8 compliance
-rwxr-xr-xcc_cli.py4
-rw-r--r--examples/cc_oop_demo.py2
-rw-r--r--examples/fips_cpe_labeling.py1
-rwxr-xr-xfips_cli.py3
-rw-r--r--sec_certs/cert_rules.py10
-rw-r--r--sec_certs/dataset/common_criteria.py7
-rw-r--r--sec_certs/dataset/cve.py6
-rw-r--r--sec_certs/dataset/fips.py2
-rw-r--r--sec_certs/helpers.py21
-rw-r--r--sec_certs/model/cpe_matching.py7
-rw-r--r--sec_certs/sample/common_criteria.py10
-rw-r--r--sec_certs/sample/cve.py2
-rw-r--r--sec_certs/sample/fips.py3
-rw-r--r--tests/fips_test_utils.py2
-rw-r--r--tests/test_cc_heuristics.py2
-rw-r--r--tests/test_cc_oop.py3
-rw-r--r--tests/test_fips_oop.py2
17 files changed, 38 insertions, 49 deletions
diff --git a/cc_cli.py b/cc_cli.py
index bd9e586b..72a8de67 100755
--- a/cc_cli.py
+++ b/cc_cli.py
@@ -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