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")