cert_audit: Introduce not-[before|after] option
Signed-off-by: Pengyu Lv <pengyu.lv@arm.com>
diff --git a/tests/scripts/audit-validity-dates.py b/tests/scripts/audit-validity-dates.py
index 5e22bfc..85c0bd9 100755
--- a/tests/scripts/audit-validity-dates.py
+++ b/tests/scripts/audit-validity-dates.py
@@ -26,7 +26,6 @@
import sys
import re
import typing
-import types
import argparse
import datetime
import glob
@@ -227,15 +226,6 @@
data_list = self.parse_file(filename)
self.audit_data.extend(data_list)
- def for_each(self, do, *args, **kwargs):
- """
- Sort the audit data and iterate over them.
- """
- if not isinstance(do, types.FunctionType):
- return
- for d in self.audit_data:
- do(d, *args, **kwargs)
-
@staticmethod
def find_test_dir():
"""Get the relative path for the MbedTLS test directory."""
@@ -381,6 +371,12 @@
parser.add_argument('-v', '--verbose',
action='store_true', dest='verbose',
help='Show warnings')
+ parser.add_argument('--not-before', dest='not_before',
+ help='not valid before this date(UTC), YYYY-MM-DD',
+ metavar='DATE')
+ parser.add_argument('--not-after', dest='not_after',
+ help='not valid after this date(UTC), YYYY-MM-DD',
+ metavar='DATE')
parser.add_argument('-f', '--file', dest='file',
help='file to audit (Debug only)',
metavar='FILE')
@@ -398,12 +394,29 @@
data_files = td_auditor.default_files
suite_data_files = sd_auditor.default_files
+ if args.not_before:
+ not_before_date = datetime.datetime.fromisoformat(args.not_before)
+ else:
+ not_before_date = datetime.datetime.today()
+ if args.not_after:
+ not_after_date = datetime.datetime.fromisoformat(args.not_after)
+ else:
+ not_after_date = not_before_date
+
td_auditor.walk_all(data_files)
sd_auditor.walk_all(suite_data_files)
+ audit_results = td_auditor.audit_data + sd_auditor.audit_data
+
+ # we filter out the files whose validity duration covers the provide
+ # duration.
+ filter_func = lambda d: (not_before_date < d.not_valid_before) or \
+ (d.not_valid_after < not_after_date)
if args.all:
- td_auditor.for_each(list_all)
- sd_auditor.for_each(list_all)
+ filter_func = None
+
+ for d in filter(filter_func, audit_results):
+ list_all(d)
print("\nDone!\n")