aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislav Boboň2021-02-12 15:41:19 +0100
committerStanislav Boboň2021-02-12 15:41:19 +0100
commit92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d (patch)
tree02e5198cc6daee6922f6302fe70c5820f2cd2d5f
parentb1ffaa296ec1789e102cb791d2097571fcaf1d5c (diff)
downloadsec-certs-92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d.tar.gz
sec-certs-92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d.tar.zst
sec-certs-92efbcd0956dd46238ea1a97c0a1b5ebc01abe3d.zip
yaml + saner configuration
-rw-r--r--fips_oop_demo.py12
-rw-r--r--sec_certs/cert_rules.py7
-rw-r--r--sec_certs/certificate.py5
-rw-r--r--sec_certs/configuration.py11
-rw-r--r--sec_certs/constants.py6
-rw-r--r--sec_certs/dataset.py8
-rw-r--r--sec_certs/settings.yaml12
-rw-r--r--settings.json14
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
- }
-}