diff --git a/modules/test/tls/python/src/tls_module.py b/modules/test/tls/python/src/tls_module.py
index ca7bed260..ace90ceaf 100644
--- a/modules/test/tls/python/src/tls_module.py
+++ b/modules/test/tls/python/src/tls_module.py
@@ -25,15 +25,16 @@
from cryptography.hazmat.primitives.asymmetric import rsa, dsa, ec
from cryptography.x509 import AuthorityKeyIdentifier, SubjectKeyIdentifier, BasicConstraints, KeyUsage
from cryptography.x509 import GeneralNames, DNSName, ExtendedKeyUsage, ObjectIdentifier, SubjectAlternativeName
+from jinja2 import Environment, FileSystemLoader
LOG_NAME = 'test_tls'
-MODULE_REPORT_FILE_NAME = 'tls_report.html'
+MODULE_REPORT_FILE_NAME = 'tls_report.j2.html'
STARTUP_CAPTURE_FILE = '/runtime/device/startup.pcap'
MONITOR_CAPTURE_FILE = '/runtime/device/monitor.pcap'
TLS_CAPTURE_FILE = '/runtime/output/tls.pcap'
GATEWAY_CAPTURE_FILE = '/runtime/network/gateway.pcap'
LOGGER = None
-
+REPORT_TEMPLATE_FILE = 'report_template.jinja2'
class TLSModule(TestModule):
"""The TLS testing module."""
@@ -57,7 +58,24 @@ def __init__(self,
self._tls_util = TLSUtil(LOGGER)
def generate_module_report(self):
- html_content = '
TLS Module
'
+ # Load Jinja2 template
+ loader=FileSystemLoader(self._report_template_folder)
+ template = Environment(loader=loader).get_template(REPORT_TEMPLATE_FILE)
+ module_header='TLS Module'
+ # Summary table headers
+ summary_headers = [
+ 'Expiry',
+ 'Length',
+ 'Type',
+ 'Port number',
+ 'Signed by',
+ ]
+ # Cert table headers
+ cert_table_headers = ['Property', 'Value']
+ # Outbound connections table headers
+ outbound_headers = ['Destination IP', 'Port']
+ pages = {}
+ outbound_conns = None
# List of capture files to scan
pcap_files = [
@@ -66,39 +84,12 @@ def generate_module_report(self):
]
certificates = self.extract_certificates_from_pcap(pcap_files,
self._device_mac)
-
if len(certificates) > 0:
- cert_tables = []
# pylint: disable=W0612
for cert_num, ((ip_address, port),
cert) in enumerate(certificates.items()):
-
- # Add summary table
- summary_table = '''
-
-
-
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
-
-
-
- '''
-
- # Generate the certificate table
- cert_table = '''
-
-
-
- | Property |
- Value |
-
-
- '''
+ pages[cert_num] = {}
# Extract certificate data
not_valid_before = cert.not_valid_before
@@ -124,50 +115,18 @@ def generate_module_report(self):
cert.public_bytes(encoding=serialization.Encoding.DER))
# Append certification information
- cert_table += f'''
-
- | Version |
- {version_value} |
-
-
- | Signature Alg. |
- {signature_alg_value} |
-
-
- | Validity from |
- {not_before} |
-
-
- | Valid to |
- {not_after} |
-
-
-
- '''
-
- subject_table = '''
-
-
-
- | Property |
- Value |
-
-
- '''
+ pages[cert_num]['cert_info_data'] = {
+ 'Version': version_value,
+ 'Signature Alg.': signature_alg_value,
+ 'Validity from': not_before,
+ 'Valid to': not_after,
+ }
# Append the subject information
+ pages[cert_num]['subject_data'] = {}
for val in cert.subject.rdns:
dn = val.rfc4514_string().split('=')
- subject_table += f'''
-
- | {dn[0]} |
- {dn[1]} |
-
- '''
-
- subject_table += '''
-
-
'''
+ pages[cert_num]['subject_data'][dn[0]] = dn[1]
# Append issuer information
for val in cert.issuer.rdns:
@@ -175,102 +134,72 @@ def generate_module_report(self):
if 'CN' in dn[0]:
signed_by = dn[1]
- ext_table = ''
-
# Append extensions information
if cert.extensions:
-
- ext_table = '''
- Certificate Extensions
-
-
-
- | Property |
- Value |
-
-
- '''
-
+ pages[cert_num]['cert_ext'] = {}
for extension in cert.extensions:
if isinstance(extension.value, list):
for extension_value in extension.value:
- ext_table += f'''
-
- | {extension.oid._name} |
- {self.format_extension_value(extension_value.value)} |
-
- '''
+ extension_name = extension.oid._name
+ formatted_value = self.format_extension_value(
+ extension_value.value)
+ pages[cert_num]['cert_ext'][extension_name] = formatted_value
else:
- ext_table += f'''
-
- | {extension.oid._name} |
- {self.format_extension_value(extension.value)} |
-
- '''
-
- ext_table += '''
-
-
'''
-
- # Add summary table row
- summary_table += f'''
-
- | {not_after} |
- {cert_length} |
- {public_key_type} |
- {port} |
- {signed_by} |
-
-
-
- '''
-
- # Merge all table HTML
- summary_table = f'\n{summary_table}'
-
- summary_table += f'''
-
-
-
Certificate Information
- {cert_table}
-
-
-
Subject Information
- {subject_table}
-
-
'''
-
- if ext_table is not None:
- summary_table += f'\n\n{ext_table}'
-
- cert_tables.append(summary_table)
+ formatted_value = self.format_extension_value(
+ extension.value)
+ pages[cert_num]['cert_ext'][extension.oid._name] = formatted_value
+
+ pages[cert_num]['summary_data'] = [
+ not_after,
+ cert_length,
+ public_key_type,
+ port,
+ signed_by
+ ]
outbound_conns = self._tls_util.get_all_outbound_connections(
device_mac=self._device_mac, capture_files=pcap_files)
- conn_table = self.generate_outbound_connection_table(outbound_conns)
-
- html_content += summary_table + '\n'.join('\n' + tables
- for tables in cert_tables)
- html_content += conn_table
+ report_jinja = ''
+ if pages:
+ for num,page in pages.items():
+ module_header_repr = module_header if num == 0 else None
+ cert_ext=page['cert_ext'] if 'cert_ext' in page else None
+ page_html = template.render(
+ base_template=self._base_template_file,
+ module_header=module_header_repr,
+ summary_headers=summary_headers,
+ summary_data=page['summary_data'],
+ cert_info_data=page['cert_info_data'],
+ subject_data=page['subject_data'],
+ cert_table_headers=cert_table_headers,
+ cert_ext=cert_ext,
+ ountbound_headers=outbound_headers,
+ )
+ report_jinja += page_html
+ if outbound_conns:
+ out_page = template.render(
+ base_template=self._base_template_file,
+ ountbound_headers=outbound_headers,
+ outbound_conns=outbound_conns
+ )
+ report_jinja += out_page
else:
- html_content += ('''
-
-
- No TLS certificates found on the device
-
''')
-
- LOGGER.debug('Module report:\n' + html_content)
+ report_jinja = template.render(
+ base_template=self._base_template_file,
+ module_header = module_header,
+ )
+ LOGGER.debug('Module report:\n' + report_jinja)
# Use os.path.join to create the complete file path
- report_path = os.path.join(self._results_dir, MODULE_REPORT_FILE_NAME)
+ jinja_path = os.path.join(self._results_dir, MODULE_REPORT_FILE_NAME)
# Write the content to a file
- with open(report_path, 'w', encoding='utf-8') as file:
- file.write(html_content)
+ with open(jinja_path, 'w', encoding='utf-8') as file:
+ file.write(report_jinja)
- LOGGER.info('Module report generated at: ' + str(report_path))
- return report_path
+ LOGGER.info('Module report generated at: ' + str(jinja_path))
+ return jinja_path
def format_extension_value(self, value):
if isinstance(value, bytes):
@@ -533,5 +462,5 @@ def _validate_tls_client(self,
def _resolve_device_ip(self):
# If the ipv4 address wasn't resolved yet, try again
- if self._device_ipv4_addr is None:
+ if self._device_ipv4_addr is None: # pylint: disable=E0203
self._device_ipv4_addr = self._get_device_ipv4()
diff --git a/modules/test/tls/resources/report_template.jinja2 b/modules/test/tls/resources/report_template.jinja2
new file mode 100644
index 000000000..e7ddf1cf5
--- /dev/null
+++ b/modules/test/tls/resources/report_template.jinja2
@@ -0,0 +1,90 @@
+{% extends base_template %}
+{% block content %}
+{% if cert_info_data and subject_data %}
+
+
+
Certificate Information
+
+
+
+ {% for header in cert_table_headers%}
+ | {{ header }} |
+ {% endfor %}
+
+
+
+ {% for k,v in cert_info_data.items() %}
+
+ | {{ k }} |
+ {{ v }} |
+
+ {% endfor %}
+
+
+
+
+
Subject Information
+
+
+
+ {% for header in cert_table_headers%}
+ | {{ header }} |
+ {% endfor %}
+
+
+
+ {% for k,v in subject_data.items() %}
+
+ | {{ k }} |
+ {{ v }} |
+
+ {% endfor %}
+
+
+
+
+ {% if cert_ext %}
+ Certificate Extensions
+
+
+
+ | Property |
+ Value |
+
+
+
+ {% for k,v in cert_ext.items()%}
+
+ | {{ k }} |
+ {{ v }} |
+
+ {% endfor %}
+
+
+ {% endif %}
+{% elif ountbound_headers %}
+ Outbound Connections
+
+
+
+ {% for header in ountbound_headers%}
+ | {{ header }} |
+ {% endfor %}
+
+
+
+ {% for ip, port in outbound_conns%}
+
+ | {{ip}} |
+ {{port}} |
+
+ {% endfor %}
+
+
+{% else %}
+
+
+ No TLS certificates found on the device
+
+{% endif %}
+{% endblock %}
\ No newline at end of file
diff --git a/modules/test/tls/tls.Dockerfile b/modules/test/tls/tls.Dockerfile
index c448c8478..3d6d66544 100644
--- a/modules/test/tls/tls.Dockerfile
+++ b/modules/test/tls/tls.Dockerfile
@@ -51,3 +51,6 @@ RUN pip3 install -r /testrun/python/requirements-test.txt
# Create a directory inside the container to store the root certificates
RUN mkdir -p /testrun/root_certs
+
+# Copy Jinja template
+COPY $MODULE_DIR/resources/report_template.jinja2 $REPORT_TEMPLATE_PATH/
diff --git a/resources/report/module_report_base.jinja2 b/resources/report/module_report_base.jinja2
index 009b7646d..2f7a02228 100644
--- a/resources/report/module_report_base.jinja2
+++ b/resources/report/module_report_base.jinja2
@@ -25,24 +25,26 @@
{% if module_header %}
{{ module_header }}
- {% else %}
+ {% elif summary_headers %}
{% endif %}
-
-
- {% for header in summary_headers %}
- | {{ header }} |
- {% endfor %}
-
-
-
-
- {% for cell in summary_data %}
- | {{ cell }} |
- {% endfor %}
-
-
-
+ {% if summary_headers %}
+
+
+ {% for header in summary_headers %}
+ | {{ header }} |
+ {% endfor %}
+
+
+
+
+ {% for cell in summary_data %}
+ | {{ cell }} |
+ {% endfor %}
+
+
+
+ {% endif %}
{% block content %}{% endblock content %}
{% raw %}
diff --git a/testing/unit/dns/reports/dns_report_local.html b/testing/unit/dns/reports/dns_report_local.html
index 9c4e6c90a..f02b144a0 100644
--- a/testing/unit/dns/reports/dns_report_local.html
+++ b/testing/unit/dns/reports/dns_report_local.html
@@ -26,33 +26,35 @@
DNS Module
-
-
-
- | Requests to local DNS server |
-
- Requests to external DNS servers |
-
- Total DNS requests |
-
- Total DNS responses |
-
-
-
-
-
-
- | 71 |
-
- 0 |
-
- 71 |
-
- 84 |
-
-
-
-
+
+
+
+
+ | Requests to local DNS server |
+
+ Requests to external DNS servers |
+
+ Total DNS requests |
+
+ Total DNS responses |
+
+
+
+
+
+
+ | 71 |
+
+ 0 |
+
+ 71 |
+
+ 84 |
+
+
+
+
+
diff --git a/testing/unit/dns/reports/dns_report_local_no_dns.html b/testing/unit/dns/reports/dns_report_local_no_dns.html
index f9dee2020..183b8c97a 100644
--- a/testing/unit/dns/reports/dns_report_local_no_dns.html
+++ b/testing/unit/dns/reports/dns_report_local_no_dns.html
@@ -26,33 +26,35 @@
DNS Module
-
-
-
- | Requests to local DNS server |
-
- Requests to external DNS servers |
-
- Total DNS requests |
-
- Total DNS responses |
-
-
-
-
-
-
- | 0 |
-
- 0 |
-
- 0 |
-
- 0 |
-
-
-
-
+
+
+
+
+ | Requests to local DNS server |
+
+ Requests to external DNS servers |
+
+ Total DNS requests |
+
+ Total DNS responses |
+
+
+
+
+
+
+ | 0 |
+
+ 0 |
+
+ 0 |
+
+ 0 |
+
+
+
+
+
diff --git a/testing/unit/ntp/reports/ntp_report_local.html b/testing/unit/ntp/reports/ntp_report_local.html
index 89e736e17..d4a6e9d99 100644
--- a/testing/unit/ntp/reports/ntp_report_local.html
+++ b/testing/unit/ntp/reports/ntp_report_local.html
@@ -26,33 +26,35 @@
NTP Module
-
-
-
- | Requests to local NTP server |
-
- Requests to external NTP servers |
-
- Total NTP requests |
-
- Total NTP responses |
-
-
-
-
-
-
- | 63 |
-
- 38 |
-
- 101 |
-
- 104 |
-
-
-
-
+
+
+
+
+ | Requests to local NTP server |
+
+ Requests to external NTP servers |
+
+ Total NTP requests |
+
+ Total NTP responses |
+
+
+
+
+
+
+ | 63 |
+
+ 38 |
+
+ 101 |
+
+ 104 |
+
+
+
+
+
diff --git a/testing/unit/ntp/reports/ntp_report_local_no_ntp.html b/testing/unit/ntp/reports/ntp_report_local_no_ntp.html
index abe616a38..a47d73614 100644
--- a/testing/unit/ntp/reports/ntp_report_local_no_ntp.html
+++ b/testing/unit/ntp/reports/ntp_report_local_no_ntp.html
@@ -26,33 +26,35 @@
NTP Module
-
-
-
- | Requests to local NTP server |
-
- Requests to external NTP servers |
-
- Total NTP requests |
-
- Total NTP responses |
-
-
-
-
-
-
- | 0 |
-
- 0 |
-
- 0 |
-
- 0 |
-
-
-
-
+
+
+
+
+ | Requests to local NTP server |
+
+ Requests to external NTP servers |
+
+ Total NTP requests |
+
+ Total NTP responses |
+
+
+
+
+
+
+ | 0 |
+
+ 0 |
+
+ 0 |
+
+ 0 |
+
+
+
+
+
diff --git a/testing/unit/services/reports/services_report_all_closed_local.html b/testing/unit/services/reports/services_report_all_closed_local.html
index 01ac50676..f2c20aef0 100644
--- a/testing/unit/services/reports/services_report_all_closed_local.html
+++ b/testing/unit/services/reports/services_report_all_closed_local.html
@@ -26,29 +26,31 @@
Services Module
-
-
-
- | TCP ports open |
-
- UDP ports open |
-
- Total ports open |
-
-
-
-
-
-
- | 0 |
-
- 0 |
-
- 0 |
-
-
-
-
+
+
+
+
+ | TCP ports open |
+
+ UDP ports open |
+
+ Total ports open |
+
+
+
+
+
+
+ | 0 |
+
+ 0 |
+
+ 0 |
+
+
+
+
+
diff --git a/testing/unit/services/reports/services_report_local.html b/testing/unit/services/reports/services_report_local.html
index 71f929aeb..899bb4692 100644
--- a/testing/unit/services/reports/services_report_local.html
+++ b/testing/unit/services/reports/services_report_local.html
@@ -26,29 +26,31 @@
Services Module
-
-
-
- | TCP ports open |
-
- UDP ports open |
-
- Total ports open |
-
-
-
-
-
-
- | 3 |
-
- 0 |
-
- 3 |
-
-
-
-
+
+
+
+
+ | TCP ports open |
+
+ UDP ports open |
+
+ Total ports open |
+
+
+
+
+
+
+ | 3 |
+
+ 0 |
+
+ 3 |
+
+
+
+
+
diff --git a/testing/unit/tls/reports/tls_report_ext_local.html b/testing/unit/tls/reports/tls_report_ext_local.html
index bde424a0e..88a1033af 100644
--- a/testing/unit/tls/reports/tls_report_ext_local.html
+++ b/testing/unit/tls/reports/tls_report_ext_local.html
@@ -1,186 +1,134 @@
-TLS Module
-
-
-
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
-
-
-
+
+
+
+
+
+
TLS Module
+
+
+
+
+
-
- | 2027-07-25 15:33:09 |
- 888 |
- EC |
- 443 |
- Sub CA |
-
-
-
-
-
-
-
Certificate Information
+ Expiry |
+
+ Length |
+
+ Type |
+
+ Port number |
+
+ Signed by |
+
+
+
+
+
+
+ | 2027-07-25 15:33:09 |
+
+ 888 |
+
+ EC |
+
+ 443 |
+
+ Sub CA |
+
+
+
+
+
+
+
+
+
+
Certificate Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
-
-
- | Property |
- Value |
+ Version |
+ 3 (0x2) |
-
-
-
- | Version |
- 3 (0x2) |
-
-
- | Signature Alg. |
- sha256WithRSAEncryption |
-
-
- | Validity from |
- 2022-07-26 15:33:09 |
-
-
- | Valid to |
- 2027-07-25 15:33:09 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ Signature Alg. |
+ sha256WithRSAEncryption |
-
-
-
- | C |
- US |
-
-
-
- | CN |
- apc27D605.nam.gad.schneider-electric.com |
-
-
-
-
-
-
-
-
- Certificate Extensions
-
-
-
- | Property |
- Value |
-
-
-
-
- | subjectAltName |
- ap9643_qa1941270129.nam.gad.schneider-electric.com |
-
-
-
-
-
-
-
-
+
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
+ Validity from |
+ 2022-07-26 15:33:09 |
-
-
-
+
+ | Valid to |
2027-07-25 15:33:09 |
- 888 |
- EC |
- 443 |
- Sub CA |
-
-
-
-
-
-
Certificate Information
-
+
+
+
Subject Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
+
- | Property |
- Value |
+ C |
+ US |
-
-
-
- | Version |
- 3 (0x2) |
-
-
- | Signature Alg. |
- sha256WithRSAEncryption |
-
-
- | Validity from |
- 2022-07-26 15:33:09 |
-
-
- | Valid to |
- 2027-07-25 15:33:09 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ CN |
+ apc27D605.nam.gad.schneider-electric.com |
-
-
-
- | C |
- US |
-
-
-
- | CN |
- apc27D605.nam.gad.schneider-electric.com |
-
-
+
-
-
- Certificate Extensions
+
+ Certificate Extensions
@@ -189,24 +137,22 @@ Certificate Extensions
-
- | subjectAltName |
- ap9643_qa1941270129.nam.gad.schneider-electric.com |
-
-
-
-
- Outbound Connections
-
-
-
- | Destination IP |
- Port |
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+ | subjectAltName |
+ ap9643_qa1941270129.nam.gad.schneider-electric.com |
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testing/unit/tls/reports/tls_report_local.html b/testing/unit/tls/reports/tls_report_local.html
index 4d1af0404..810745253 100644
--- a/testing/unit/tls/reports/tls_report_local.html
+++ b/testing/unit/tls/reports/tls_report_local.html
@@ -1,231 +1,149 @@
-TLS Module
-
-
+
+
+
+
+
+
TLS Module
+
+
+
+
+
+
+ | Expiry |
+
+ Length |
+
+ Type |
+
+ Port number |
+
+ Signed by |
+
+
+
+
+
+
+ | 2049-12-31 23:59:59 |
+
+ 779 |
+
+ EC |
+
+ 35288 |
+
+ None |
+
+
+
+
+
+
+
+
+
+
Certificate Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
+
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
+ Version |
+ 3 (0x2) |
-
-
-
+
- | 2049-12-31 23:59:59 |
- 779 |
- EC |
- 47188 |
- None |
+ Signature Alg. |
+ sha256WithRSAEncryption |
-
-
-
-
-
-
Certificate Information
-
-
- | Property |
- Value |
+ Validity from |
+ 2023-03-29 18:37:51 |
-
-
-
- | Version |
- 3 (0x2) |
-
-
- | Signature Alg. |
- sha256WithRSAEncryption |
-
-
- | Validity from |
- 2023-03-29 18:37:51 |
-
-
- | Valid to |
- 2049-12-31 23:59:59 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ Valid to |
+ 2049-12-31 23:59:59 |
-
-
-
- | C |
- US |
-
-
-
- | ST |
- Pennsylvania |
-
-
-
- | L |
- Coopersburg |
-
-
-
- | O |
- Lutron Electronics Co.\, Inc. |
-
-
-
- | CN |
- athena04E580B9 |
-
-
+
-
-
-
-
-
Certificate Extensions
-
-
-
- | Property |
- Value |
-
-
-
-
- | authorityKeyIdentifier |
- key_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None |
-
-
-
- | subjectKeyIdentifier |
- digest=37d90a274635e963081520f98411bda240d30252 |
-
-
-
- | basicConstraints |
- ca=False, path_length=None |
-
-
-
- | keyUsage |
- digital_signature=True, key_cert_sign=False, key_encipherment=False, crl_sign=False |
-
-
-
-
-
-
-
-
+
+
+
Subject Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
+
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
+ C |
+ US |
-
-
-
+
- | 2049-12-31 23:59:59 |
- 779 |
- EC |
- 35288 |
- None |
+ ST |
+ Pennsylvania |
-
-
-
-
-
-
Certificate Information
-
-
- | Property |
- Value |
+ L |
+ Coopersburg |
-
-
-
- | Version |
- 3 (0x2) |
-
-
- | Signature Alg. |
- sha256WithRSAEncryption |
-
-
- | Validity from |
- 2023-03-29 18:37:51 |
-
-
- | Valid to |
- 2049-12-31 23:59:59 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ O |
+ Lutron Electronics Co.\, Inc. |
-
-
-
- | C |
- US |
-
-
-
- | ST |
- Pennsylvania |
-
-
-
- | L |
- Coopersburg |
-
-
-
- | O |
- Lutron Electronics Co.\, Inc. |
-
-
-
- | CN |
- athena04E580B9 |
-
-
+
+
+ | CN |
+ athena04E580B9 |
+
+
-
-
-
Certificate Extensions
+
+
Certificate Extensions
@@ -234,128 +152,185 @@ Certificate Extensions
-
- | authorityKeyIdentifier |
- key_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None |
-
-
-
- | subjectKeyIdentifier |
- digest=37d90a274635e963081520f98411bda240d30252 |
-
-
-
- | basicConstraints |
- ca=False, path_length=None |
-
-
-
- | keyUsage |
- digital_signature=True, key_cert_sign=False, key_encipherment=False, crl_sign=False |
-
-
-
-
+
+
+ | authorityKeyIdentifier |
+ key_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None |
+
+
+
+ | subjectKeyIdentifier |
+ digest=37d90a274635e963081520f98411bda240d30252 |
+
+
+
+ | basicConstraints |
+ ca=False, path_length=None |
+
+
+
+ | keyUsage |
+ digital_signature=True, key_cert_sign=False, key_encipherment=False, crl_sign=False |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Expiry |
+
+ Length |
+
+ Type |
+
+ Port number |
+
+ Signed by |
+
+
+
+
+
+
+ | 2119-02-05 00:00:00 |
+
+ 619 |
+
+ EC |
+
+ 443 |
+
+ AthenaProcessor685E1CCB6ECB |
+
+
+
+
+
+
-
-
+
+
+
Certificate Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
+
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
+ Version |
+ 3 (0x2) |
-
-
-
+
- | 2119-02-05 00:00:00 |
- 619 |
- EC |
- 443 |
- AthenaProcessor685E1CCB6ECB |
+ Signature Alg. |
+ ecdsa-with-SHA256 |
-
-
-
-
-
-
Certificate Information
-
-
- | Property |
- Value |
+ Validity from |
+ 2019-03-01 00:00:00 |
-
-
-
- | Version |
- 3 (0x2) |
-
-
- | Signature Alg. |
- ecdsa-with-SHA256 |
-
-
- | Validity from |
- 2019-03-01 00:00:00 |
-
-
- | Valid to |
- 2119-02-05 00:00:00 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ Valid to |
+ 2119-02-05 00:00:00 |
-
-
-
- | C |
- US |
-
-
-
- | ST |
- Pennsylvania |
-
-
-
- | L |
- Coopersburg |
-
-
-
- | O |
- Lutron Electronics Co.\, Inc. |
-
-
+
+
+
+
+
+
Subject Information
+
+
- | CN |
- IPLServer4E580B9 |
+
+ Property |
+
+ Value |
+
-
+
+
+
+
+ | C |
+ US |
+
+
+
+ | ST |
+ Pennsylvania |
+
+
+
+ | L |
+ Coopersburg |
+
+
+
+ | O |
+ Lutron Electronics Co.\, Inc. |
+
+
+
+ | CN |
+ IPLServer4E580B9 |
+
+
-
-
-
Certificate Extensions
+
+
Certificate Extensions
@@ -364,128 +339,185 @@ Certificate Extensions
-
- | keyUsage |
- digital_signature=True, key_cert_sign=False, key_encipherment=True, crl_sign=False |
-
-
-
- | extendedKeyUsage |
- serverAuth, Unknown OID |
-
-
-
- | authorityKeyIdentifier |
- key_identifier=dff100033b0ab36497bbcd2f3e0515ea7b2f7ea0, authority_cert_issuer=None, authority_cert_serial_number=None |
-
-
-
- | subjectAltName |
- IPLServer4E580B9 |
-
-
-
-
+
+
+ | keyUsage |
+ digital_signature=True, key_cert_sign=False, key_encipherment=True, crl_sign=False |
+
+
+
+ | extendedKeyUsage |
+ serverAuth, Unknown OID |
+
+
+
+ | authorityKeyIdentifier |
+ key_identifier=dff100033b0ab36497bbcd2f3e0515ea7b2f7ea0, authority_cert_issuer=None, authority_cert_serial_number=None |
+
+
+
+ | subjectAltName |
+ IPLServer4E580B9 |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ | Expiry |
+
+ Length |
+
+ Type |
+
+ Port number |
+
+ Signed by |
+
+
+
+
+
+
+ | 2049-12-31 23:59:59 |
+
+ 779 |
+
+ EC |
+
+ 47188 |
+
+ None |
+
+
+
+
+
+
-
-
+
+
+
Certificate Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
+
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
+ Version |
+ 3 (0x2) |
-
-
-
+
- | 2049-12-31 23:59:59 |
- 779 |
- EC |
- 47188 |
- None |
+ Signature Alg. |
+ sha256WithRSAEncryption |
-
-
-
-
-
-
Certificate Information
-
-
- | Property |
- Value |
+ Validity from |
+ 2023-03-29 18:37:51 |
-
-
-
- | Version |
- 3 (0x2) |
-
-
- | Signature Alg. |
- sha256WithRSAEncryption |
-
-
- | Validity from |
- 2023-03-29 18:37:51 |
-
-
- | Valid to |
- 2049-12-31 23:59:59 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ Valid to |
+ 2049-12-31 23:59:59 |
-
-
-
- | C |
- US |
-
-
-
- | ST |
- Pennsylvania |
-
-
-
- | L |
- Coopersburg |
-
-
-
- | O |
- Lutron Electronics Co.\, Inc. |
-
-
+
+
+
+
+
+
Subject Information
+
+
- | CN |
- athena04E580B9 |
+
+ Property |
+
+ Value |
+
-
+
+
+
+
+ | C |
+ US |
+
+
+
+ | ST |
+ Pennsylvania |
+
+
+
+ | L |
+ Coopersburg |
+
+
+
+ | O |
+ Lutron Electronics Co.\, Inc. |
+
+
+
+ | CN |
+ athena04E580B9 |
+
+
-
-
-
Certificate Extensions
+
+
Certificate Extensions
@@ -494,45 +526,125 @@ Certificate Extensions
-
- | authorityKeyIdentifier |
- key_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None |
-
-
-
- | subjectKeyIdentifier |
- digest=37d90a274635e963081520f98411bda240d30252 |
-
-
-
- | basicConstraints |
- ca=False, path_length=None |
-
-
-
- | keyUsage |
- digital_signature=True, key_cert_sign=False, key_encipherment=False, crl_sign=False |
-
-
-
-
-
Outbound Connections
+
+
+ | authorityKeyIdentifier |
+ key_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None |
+
+
+
+ | subjectKeyIdentifier |
+ digest=37d90a274635e963081520f98411bda240d30252 |
+
+
+
+ | basicConstraints |
+ ca=False, path_length=None |
+
+
+
+ | keyUsage |
+ digital_signature=True, key_cert_sign=False, key_encipherment=False, crl_sign=False |
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Outbound Connections
- | Destination IP |
- Port |
+
+ Destination IP |
+
+ Port |
+
-
- | 224.0.0.251 | 5353 |
- | 209.244.0.3 | Unknown |
- | 3.227.250.136 | 443 |
- | 3.227.203.88 | 443 |
- | 34.226.101.252 | 8883 |
- | 3.227.250.208 | 443 |
- | 52.94.225.110 | 443 |
-
-
-
-
\ No newline at end of file
+
+
+
+ | 224.0.0.251 |
+ 5353 |
+
+
+
+ | 209.244.0.3 |
+ Unknown |
+
+
+
+ | 3.227.250.136 |
+ 443 |
+
+
+
+ | 3.227.203.88 |
+ 443 |
+
+
+
+ | 34.226.101.252 |
+ 8883 |
+
+
+
+ | 3.227.250.208 |
+ 443 |
+
+
+
+ | 52.94.225.110 |
+ 443 |
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testing/unit/tls/reports/tls_report_no_cert_local.html b/testing/unit/tls/reports/tls_report_no_cert_local.html
index c025ee9e8..2ab01ec15 100644
--- a/testing/unit/tls/reports/tls_report_no_cert_local.html
+++ b/testing/unit/tls/reports/tls_report_no_cert_local.html
@@ -1,5 +1,45 @@
-TLS Module
-
-
- No TLS certificates found on the device
-
\ No newline at end of file
+
+
+
+
+
+
+
TLS Module
+
+
+
+
+
+
+
+ No TLS certificates found on the device
+
+
+
+
+
+
+
+
diff --git a/testing/unit/tls/reports/tls_report_single.html b/testing/unit/tls/reports/tls_report_single.html
index 0f6a5a4d6..e1c9f9584 100644
--- a/testing/unit/tls/reports/tls_report_single.html
+++ b/testing/unit/tls/reports/tls_report_single.html
@@ -1,220 +1,160 @@
-TLS Module
-
-
+
+
+
+
+
+
TLS Module
+
+
+
+
+
+
+ | Expiry |
+
+ Length |
+
+ Type |
+
+ Port number |
+
+ Signed by |
+
+
+
+
+
+
+ | 2027-09-21 19:57:57 |
+
+ 901 |
+
+ RSA |
+
+ 443 |
+
+ BuildingsIoT RSA Signing CA |
+
+
+
+
+
+
+
+
+
+
Certificate Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
+
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
+ Version |
+ 1 (0x0) |
-
-
-
+
- | 2027-09-21 19:57:57 |
- 901 |
- RSA |
- 443 |
- BuildingsIoT RSA Signing CA |
+ Signature Alg. |
+ sha256WithRSAEncryption |
-
-
-
-
-
-
Certificate Information
-
-
- | Property |
- Value |
+ Validity from |
+ 2022-09-21 19:57:57 |
-
-
-
- | Version |
- 1 (0x0) |
-
-
- | Signature Alg. |
- sha256WithRSAEncryption |
-
-
- | Validity from |
- 2022-09-21 19:57:57 |
-
-
- | Valid to |
- 2027-09-21 19:57:57 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ Valid to |
+ 2027-09-21 19:57:57 |
-
-
-
- | C |
- US |
-
-
-
- | ST |
- California |
-
-
-
- | L |
- Concord |
-
-
-
- | O |
- BuildingsIoT |
-
-
-
- | OU |
- Software |
-
-
-
- | CN |
- EasyIO_FS-32 |
-
-
+
-
-
-
-
-
-
-
-
+
+
+
Subject Information
+
+
+
+
+ | Property |
+
+ Value |
+
+
+
+
+
- | Expiry |
- Length |
- Type |
- Port number |
- Signed by |
+ C |
+ US |
-
-
-
+
- | 2027-09-21 19:57:57 |
- 901 |
- RSA |
- 443 |
- BuildingsIoT RSA Signing CA |
+ ST |
+ California |
-
-
-
-
-
-
Certificate Information
-
-
- | Property |
- Value |
+ L |
+ Concord |
-
-
-
- | Version |
- 1 (0x0) |
-
-
- | Signature Alg. |
- sha256WithRSAEncryption |
-
-
- | Validity from |
- 2022-09-21 19:57:57 |
-
-
- | Valid to |
- 2027-09-21 19:57:57 |
-
-
-
-
-
-
-
Subject Information
-
-
- | Property |
- Value |
+ O |
+ BuildingsIoT |
-
-
-
- | C |
- US |
-
-
-
- | ST |
- California |
-
-
-
- | L |
- Concord |
-
-
-
- | O |
- BuildingsIoT |
-
-
-
- | OU |
- Software |
-
-
-
- | CN |
- EasyIO_FS-32 |
-
-
+
+
+ | OU |
+ Software |
+
+
+
+ | CN |
+ EasyIO_FS-32 |
+
+
+
-
Outbound Connections
-
-
-
- | Destination IP |
- Port |
-
-
-
-
-
-
-
-
\ No newline at end of file
+
+
+
+
+