diff options
| author | Stanislav Boboň | 2021-02-12 15:41:19 +0100 |
|---|---|---|
| committer | Stanislav Boboň | 2021-02-12 15:41:19 +0100 |
| commit | 92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d (patch) | |
| tree | 02e5198cc6daee6922f6302fe70c5820f2cd2d5f | |
| parent | b1ffaa296ec1789e102cb791d2097571fcaf1d5c (diff) | |
| download | sec-certs-92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d.tar.gz sec-certs-92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d.tar.zst sec-certs-92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d.zip | |
yaml + saner configuration
| -rw-r--r-- | fips_oop_demo.py | 12 | ||||
| -rw-r--r-- | sec_certs/cert_rules.py | 7 | ||||
| -rw-r--r-- | sec_certs/certificate.py | 5 | ||||
| -rw-r--r-- | sec_certs/configuration.py | 11 | ||||
| -rw-r--r-- | sec_certs/constants.py | 6 | ||||
| -rw-r--r-- | sec_certs/dataset.py | 8 | ||||
| -rw-r--r-- | sec_certs/settings.yaml | 12 | ||||
| -rw-r--r-- | settings.json | 14 |
8 files changed, 39 insertions, 36 deletions
diff --git a/fips_oop_demo.py b/fips_oop_demo.py index 45cd92b4..561549b6 100644 --- a/fips_oop_demo.py +++ b/fips_oop_demo.py @@ -1,13 +1,19 @@ -from sec_certs.dataset import FIPSDataset, FIPSAlgorithmDataset from pathlib import Path from datetime import datetime import logging +import click +from sec_certs.dataset import FIPSDataset, FIPSAlgorithmDataset +from sec_certs.configuration import config - -def main(): +@click.command() +@click.option('--config-file', help='Path to config file') +def main(config_file): logging.basicConfig(level=logging.INFO) start = datetime.now() + # Load config + config.load(config_file) + # Create empty dataset dset = FIPSDataset({}, Path('./fips_dataset'), 'sample_dataset', 'sample dataset description') diff --git a/sec_certs/cert_rules.py b/sec_certs/cert_rules.py index 9d7f76b7..d8749495 100644 --- a/sec_certs/cert_rules.py +++ b/sec_certs/cert_rules.py @@ -1,6 +1,5 @@ import copy import re -import json REGEXEC_SEP = r'[ ,;\]”)(]' @@ -509,9 +508,3 @@ fips_common_rules = copy.deepcopy(common_rules) # make separate copy not to pro for rule in fips_rules: for current_rule in range(len(fips_rules[rule])): fips_rules[rule][current_rule] = re.compile(fips_rules[rule][current_rule]) - -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -# JSON Settings -# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -with open('./settings.json', 'r', encoding='utf-8') as f: - configuration = json.load(f) diff --git a/sec_certs/certificate.py b/sec_certs/certificate.py index cde4a449..39c56a3d 100644 --- a/sec_certs/certificate.py +++ b/sec_certs/certificate.py @@ -21,6 +21,7 @@ import sec_certs.constants as constants from sec_certs.extract_certificates import load_cert_file, normalize_match_string, save_modified_cert_file, REGEXEC_SEP, \ LINE_SEPARATOR, APPEND_DETAILED_MATCH_MATCHES from sec_certs.cert_rules import fips_rules, fips_common_rules +from sec_certs.configuration import config logger = logging.getLogger(__name__) @@ -448,8 +449,6 @@ class FIPSCertificate(Certificate, ComplexSerializableType): FIPSCertificate.parse_related_files(div, items_found) if initialized: - if items_found['cert_id'].endswith('092'): - print('a') new_algs = [] not_defined = set() for i, alg in enumerate(items_found['algorithms']): @@ -540,7 +539,7 @@ class FIPSCertificate(Certificate, ComplexSerializableType): text, text_with_newlines, unicode_error = load_cert_file(cert.state.sp_path.with_suffix('.pdf.txt'), -1, LINE_SEPARATOR) - text_to_parse = text_with_newlines if constants.FIPS_USE_NEWLINES else text + text_to_parse = text_with_newlines if config.use_text_with_newlines_during_parsing['value'] else text items_found, fips_text = FIPSCertificate.parse_cert_file(FIPSCertificate.remove_platforms(text_to_parse), cert.web_scan.algorithms) diff --git a/sec_certs/configuration.py b/sec_certs/configuration.py new file mode 100644 index 00000000..131a02d4 --- /dev/null +++ b/sec_certs/configuration.py @@ -0,0 +1,11 @@ +import yaml +from pathlib import Path + +class Configuration: + def load(self, path: Path): + with open(path, 'r') as file: + state = yaml.load(file, Loader=yaml.FullLoader) + for k, v in state.items(): + setattr(self, k, v) + +config = Configuration()
\ No newline at end of file diff --git a/sec_certs/constants.py b/sec_certs/constants.py index d7b70f46..6d4aade5 100644 --- a/sec_certs/constants.py +++ b/sec_certs/constants.py @@ -1,5 +1,4 @@ from enum import Enum -from .cert_rules import configuration N_THREADS = 8 RESPONSE_OK = 200 @@ -42,7 +41,4 @@ TAG_PP_SPONSOR = 'pp_sponsor' TAG_PP_EDITOR = 'pp_editor' TAG_PP_REVIEWER = 'pp_reviewer' TAG_KEYWORDS = 'keywords' -FIPS_NOT_AVAILABLE_CERT_SIZE = 10000 -FIPS_SMALLEST_CERT_ID_TO_CONNECT = configuration['smallest_certificate_id_to_connect']['value'] -FIPS_YEAR_DIFFERENCE_BETWEEN_VALIDATION = configuration["year_difference_between_validations"]["value"] -FIPS_USE_NEWLINES = configuration["use_text_with_newlines_during_parsing"]['value']
\ No newline at end of file +FIPS_NOT_AVAILABLE_CERT_SIZE = 10000
\ No newline at end of file diff --git a/sec_certs/dataset.py b/sec_certs/dataset.py index 7b8a0f73..78939136 100644 --- a/sec_certs/dataset.py +++ b/sec_certs/dataset.py @@ -22,6 +22,7 @@ import sec_certs.files as files from sec_certs.certificate import CommonCriteriaCert, Certificate, FIPSCertificate from sec_certs.serialization import ComplexSerializableType, CustomJSONDecoder, CustomJSONEncoder +from sec_certs.configuration import config logger = logging.getLogger(__name__) @@ -707,19 +708,18 @@ class FIPSDataset(Dataset, ComplexSerializableType): conn_first = self.certs[other_id].web_scan.date_validation[0].year conn_last = self.certs[other_id].web_scan.date_validation[-1].year - return cert_first - conn_first > constants.FIPS_YEAR_DIFFERENCE_BETWEEN_VALIDATION \ - and cert_last - conn_last > constants.FIPS_YEAR_DIFFERENCE_BETWEEN_VALIDATION + return cert_first - conn_first > config.year_difference_between_validations['value'] \ + and cert_last - conn_last > config.year_difference_between_validations['value'] # "< 105" still needs to be used, because of some old certs being revalidated if cert_candidate.isdecimal() \ - and int(cert_candidate) < constants.FIPS_SMALLEST_CERT_ID_TO_CONNECT or \ + and int(cert_candidate) < config.smallest_certificate_id_to_connect['value'] or \ compare_certs(processed_cert, cert_candidate): return False if cert_candidate not in self.algorithms.certs: return True for cert_alg in processed_cert.processed.algorithms: - print(cert_alg) for certificate in cert_alg['Certificate']: curr_id = ''.join(filter(str.isdigit, certificate)) if curr_id == cert_candidate: diff --git a/sec_certs/settings.yaml b/sec_certs/settings.yaml new file mode 100644 index 00000000..a35a18de --- /dev/null +++ b/sec_certs/settings.yaml @@ -0,0 +1,12 @@ +--- +smallest_certificate_id_to_connect: + description: During validation we don't connect certificates with number lower than + _this_ to connections + value: 60 +year_difference_between_validations: + description: During validation we don't connect certificates with validation dates + difference higher than _this_ + value: 5 +use_text_with_newlines_during_parsing: + description: During keyword search, search in text with newlines + value: true diff --git a/settings.json b/settings.json deleted file mode 100644 index 4527cf09..00000000 --- a/settings.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "smallest_certificate_id_to_connect": { - "description": "During validation we don't connect certificates with number lower than _this_ to connections", - "value": 60 - }, - "year_difference_between_validations": { - "description": "During validation we don't connect certificates with validation dates difference higher than _this_", - "value": 5 - }, - "use_text_with_newlines_during_parsing": { - "description": "During keyword search, search in text with newlines", - "value": true - } -} |
