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 = ''' - - - - - - - - - - - - ''' - - # Generate the certificate table - cert_table = ''' -
ExpiryLengthTypePort numberSigned by
- - - - - - - ''' + 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''' - - - - - - - - - - - - - - - - - -
PropertyValue
Version{version_value}
Signature Alg.{signature_alg_value}
Validity from{not_before}
Valid to{not_after}
- ''' - - subject_table = ''' - - - - - - - - ''' + 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''' - - - - - ''' - - subject_table += ''' - -
PropertyValue
{dn[0]}{dn[1]}
''' + 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
- - - - - - - - ''' - + 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_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''' - - - - - ''' - - ext_table += ''' - -
PropertyValue
{extension.oid._name}{self.format_extension_value(extension_value.value)}
{extension.oid._name}{self.format_extension_value(extension.value)}
''' - - # 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%} + + {% endfor %} + + + + {% for k,v in cert_info_data.items() %} + + + + + {% endfor %} + +
{{ header }}
{{ k }}{{ v }}
+
+
+
Subject Information
+ + + + {% for header in cert_table_headers%} + + {% endfor %} + + + + {% for k,v in subject_data.items() %} + + + + + {% endfor %} + +
{{ header }}
{{ k }}{{ v }}
+
+
+ {% if cert_ext %} +
Certificate Extensions
+ + + + + + + + + {% for k,v in cert_ext.items()%} + + + + + {% endfor %} + +
PropertyValue
{{ k }}{{ v }}
+ {% endif %} +{% elif ountbound_headers %} +

Outbound Connections

+ + + + {% for header in ountbound_headers%} + + {% endfor %} + + + + {% for ip, port in outbound_conns%} + + + + + {% endfor %} + +
{{ header }}
{{ip}}{{port}}
+{% 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 %} - - {% endfor %} - - - - - {% for cell in summary_data %} - - {% endfor %} - - -
{{ header }}
{{ cell }}
+ {% 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 serverRequests to external DNS serversTotal DNS requestsTotal DNS responses
7107184
+ + + + + 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 serverRequests to external DNS serversTotal DNS requestsTotal DNS responses
0000
+ + + + + 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 serverRequests to external NTP serversTotal NTP requestsTotal NTP responses
6338101104
+ + + + + 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 serverRequests to external NTP serversTotal NTP requestsTotal NTP responses
0000
+ + + + + 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 openUDP ports openTotal ports open
000
+ + + + + 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 openUDP ports openTotal ports open
303
+ + + + + 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

-
- - - - - - - - - - +
+
+
+ {# Badge #} +

+ {% if json_data['device']['test_pack'] == 'Device Qualification' %} + + Device Qualification + {% else %} + + Pilot Assessment + {% endif %} +

+ {{ title }} +
+ + {{ device['manufacturer'] }} + {{ device['model']}} + + Testrun +
+ +
+ +

TLS Module

+
ExpiryLengthTypePort numberSigned by
+ + + + - - - - - - - - -
2027-07-25 15:33:09888EC443Sub CA
- -
-
-
Certificate Information
+ Expiry + + Length + + Type + + Port number + + Signed by + + + + + + + 2027-07-25 15:33:09 + + 888 + + EC + + 443 + + Sub CA + + + + + + + +
+
+
Certificate Information
+ + + + + + + + + + + -
PropertyValue
- - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValueVersion3 (0x2)
Version3 (0x2)
Signature Alg.sha256WithRSAEncryption
Validity from2022-07-26 15:33:09
Valid to2027-07-25 15:33:09
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - - -
PropertyValueSignature Alg.sha256WithRSAEncryption
CUS
CNapc27D605.nam.gad.schneider-electric.com
-
-
- - -
Certificate Extensions
- - - - - - - - - - - - - - -
PropertyValue
subjectAltNameap9643_qa1941270129.nam.gad.schneider-electric.com
- - - - + - - - - - + + - - - + + - - - - - -
ExpiryLengthTypePort numberSigned byValidity from2022-07-26 15:33:09
Valid to 2027-07-25 15:33:09888EC443Sub CA
- -
-
-
Certificate Information
- - + +
+
+
+
Subject Information
+ + + + + + + + + + + + - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValue
PropertyValueCUS
Version3 (0x2)
Signature Alg.sha256WithRSAEncryption
Validity from2022-07-26 15:33:09
Valid to2027-07-25 15:33:09
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - +
PropertyValueCNapc27D605.nam.gad.schneider-electric.com
CUS
CNapc27D605.nam.gad.schneider-electric.com
- - -
Certificate Extensions
+ +
Certificate Extensions
@@ -189,24 +137,22 @@
Certificate Extensions
- - - - - - -
subjectAltNameap9643_qa1941270129.nam.gad.schneider-electric.com
-

Outbound Connections

- - - - - - - - - - - -
Destination IPPort
- \ 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

- - +
+
+
+ {# Badge #} +

+ {% if json_data['device']['test_pack'] == 'Device Qualification' %} + + Device Qualification + {% else %} + + Pilot Assessment + {% endif %} +

+ {{ title }} +
+ + {{ device['manufacturer'] }} + {{ device['model']}} + + Testrun +
+ +
+ +

TLS Module

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpiryLengthTypePort numberSigned by
2049-12-31 23:59:59779EC35288None
+ + + +
+
+
Certificate Information
+ + + + + + + + + + + + - - - - - + + - - - + - - - - - + + - -
PropertyValue
ExpiryLengthTypePort numberSigned byVersion3 (0x2)
2049-12-31 23:59:59779EC47188NoneSignature Alg.sha256WithRSAEncryption
- -
-
-
Certificate Information
- - - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValueValidity from2023-03-29 18:37:51
Version3 (0x2)
Signature Alg.sha256WithRSAEncryption
Validity from2023-03-29 18:37:51
Valid to2049-12-31 23:59:59
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - +
PropertyValueValid to2049-12-31 23:59:59
CUS
STPennsylvania
LCoopersburg
OLutron Electronics Co.\, Inc.
CNathena04E580B9
-
-
- - -
Certificate Extensions
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PropertyValue
authorityKeyIdentifierkey_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None
subjectKeyIdentifierdigest=37d90a274635e963081520f98411bda240d30252
basicConstraintsca=False, path_length=None
keyUsagedigital_signature=True, key_cert_sign=False, key_encipherment=False, crl_sign=False
- - - - + +
+
Subject Information
+
+ + + + + + + + + + + - - - - - + + - - - + - - - - - + + - -
PropertyValue
ExpiryLengthTypePort numberSigned byCUS
2049-12-31 23:59:59779EC35288NoneSTPennsylvania
- -
-
-
Certificate Information
- - - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValueLCoopersburg
Version3 (0x2)
Signature Alg.sha256WithRSAEncryption
Validity from2023-03-29 18:37:51
Valid to2049-12-31 23:59:59
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + +
PropertyValueOLutron Electronics Co.\, Inc.
CUS
STPennsylvania
LCoopersburg
OLutron Electronics Co.\, Inc.
CNathena04E580B9
CNathena04E580B9
- - -
Certificate Extensions
+ +
Certificate Extensions
@@ -234,128 +152,185 @@
Certificate Extensions
- - - - - - - - - - - - - - - - - - - - - -
authorityKeyIdentifierkey_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None
subjectKeyIdentifierdigest=37d90a274635e963081520f98411bda240d30252
basicConstraintsca=False, path_length=None
keyUsagedigital_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 + + + + + + + +
+ +
+
+
+
+
+ {# Badge #} +

+ {% if json_data['device']['test_pack'] == 'Device Qualification' %} + + Device Qualification + {% else %} + + Pilot Assessment + {% endif %} +

+ {{ title }} +
+ + {{ device['manufacturer'] }} + {{ device['model']}} + + Testrun +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpiryLengthTypePort numberSigned by
2119-02-05 00:00:00619EC443AthenaProcessor685E1CCB6ECB
+ + - - +
+
+
Certificate Information
+
+ + + + + + + + + + + - - - - - + + - - - + - - - - - + + - -
PropertyValue
ExpiryLengthTypePort numberSigned byVersion3 (0x2)
2119-02-05 00:00:00619EC443AthenaProcessor685E1CCB6ECBSignature Alg.ecdsa-with-SHA256
- -
-
-
Certificate Information
- - - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValueValidity from2019-03-01 00:00:00
Version3 (0x2)
Signature Alg.ecdsa-with-SHA256
Validity from2019-03-01 00:00:00
Valid to2119-02-05 00:00:00
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - - - - - - - - - - - + + +
PropertyValueValid to2119-02-05 00:00:00
CUS
STPennsylvania
LCoopersburg
OLutron Electronics Co.\, Inc.
+
+
+
Subject Information
+ + - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CNIPLServer4E580B9PropertyValue
CUS
STPennsylvania
LCoopersburg
OLutron Electronics Co.\, Inc.
CNIPLServer4E580B9
- - -
Certificate Extensions
+ +
Certificate Extensions
@@ -364,128 +339,185 @@
Certificate Extensions
- - - - - - - - - - - - - - - - - - - - - -
keyUsagedigital_signature=True, key_cert_sign=False, key_encipherment=True, crl_sign=False
extendedKeyUsageserverAuth, Unknown OID
authorityKeyIdentifierkey_identifier=dff100033b0ab36497bbcd2f3e0515ea7b2f7ea0, authority_cert_issuer=None, authority_cert_serial_number=None
subjectAltNameIPLServer4E580B9
+ + + 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 + + + + + + + +
+ +
+
+
+
+
+ {# Badge #} +

+ {% if json_data['device']['test_pack'] == 'Device Qualification' %} + + Device Qualification + {% else %} + + Pilot Assessment + {% endif %} +

+ {{ title }} +
+ + {{ device['manufacturer'] }} + {{ device['model']}} + + Testrun +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpiryLengthTypePort numberSigned by
2049-12-31 23:59:59779EC47188None
+ + - - +
+
+
Certificate Information
+
+ + + + + + + + + + + - - - - - + + - - - + - - - - - + + - -
PropertyValue
ExpiryLengthTypePort numberSigned byVersion3 (0x2)
2049-12-31 23:59:59779EC47188NoneSignature Alg.sha256WithRSAEncryption
- -
-
-
Certificate Information
- - - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValueValidity from2023-03-29 18:37:51
Version3 (0x2)
Signature Alg.sha256WithRSAEncryption
Validity from2023-03-29 18:37:51
Valid to2049-12-31 23:59:59
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - - - - - - - - - - - + + +
PropertyValueValid to2049-12-31 23:59:59
CUS
STPennsylvania
LCoopersburg
OLutron Electronics Co.\, Inc.
+
+
+
Subject Information
+ + - - + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CNathena04E580B9PropertyValue
CUS
STPennsylvania
LCoopersburg
OLutron Electronics Co.\, Inc.
CNathena04E580B9
- - -
Certificate Extensions
+ +
Certificate Extensions
@@ -494,45 +526,125 @@
Certificate Extensions
- - - - - - - - - - - - - - - - - - - - - -
authorityKeyIdentifierkey_identifier=accca4f9bd2a47dae81a8f4c87ed2c8edcfd07bf, authority_cert_issuer=None, authority_cert_serial_number=None
subjectKeyIdentifierdigest=37d90a274635e963081520f98411bda240d30252
basicConstraintsca=False, path_length=None
keyUsagedigital_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 + + + + + + + +
+ + +
+
+ +
+
+
+ {# Badge #} +

+ {% if json_data['device']['test_pack'] == 'Device Qualification' %} + + Device Qualification + {% else %} + + Pilot Assessment + {% endif %} +

+ {{ title }} +
+ + {{ device['manufacturer'] }} + {{ device['model']}} + + Testrun +
+ +
+ + + + +

Outbound Connections

- - + + + + + - - - - - - - - - - -
Destination IPPortDestination IPPort
224.0.0.2515353
209.244.0.3Unknown
3.227.250.136443
3.227.203.88443
34.226.101.2528883
3.227.250.208443
52.94.225.110443
- \ 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 + +
+
+
+ {# Badge #} +

+ {% if json_data['device']['test_pack'] == 'Device Qualification' %} + + Device Qualification + {% else %} + + Pilot Assessment + {% endif %} +

+ {{ title }} +
+ + {{ device['manufacturer'] }} + {{ device['model']}} + + Testrun +
+ +
+ +

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

-
- +
+
+
+ {# Badge #} +

+ {% if json_data['device']['test_pack'] == 'Device Qualification' %} + + Device Qualification + {% else %} + + Pilot Assessment + {% endif %} +

+ {{ title }} +
+ + {{ device['manufacturer'] }} + {{ device['model']}} + + Testrun +
+ +
+ +

TLS Module

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ExpiryLengthTypePort numberSigned by
2027-09-21 19:57:57901RSA443BuildingsIoT RSA Signing CA
+ + + +
+
+
Certificate Information
+ + + + + + + + + + + + - - - - - + + - - - + - - - - - + + - -
PropertyValue
ExpiryLengthTypePort numberSigned byVersion1 (0x0)
2027-09-21 19:57:57901RSA443BuildingsIoT RSA Signing CASignature Alg.sha256WithRSAEncryption
- -
-
-
Certificate Information
- - - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValueValidity from2022-09-21 19:57:57
Version1 (0x0)
Signature Alg.sha256WithRSAEncryption
Validity from2022-09-21 19:57:57
Valid to2027-09-21 19:57:57
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
PropertyValueValid to2027-09-21 19:57:57
CUS
STCalifornia
LConcord
OBuildingsIoT
OUSoftware
CNEasyIO_FS-32
-
-
- - - - - - + +
+
Subject Information
+
+ + + + + + + + + + + - - - - - + + - - - + - - - - - + + - -
PropertyValue
ExpiryLengthTypePort numberSigned byCUS
2027-09-21 19:57:57901RSA443BuildingsIoT RSA Signing CASTCalifornia
- -
-
-
Certificate Information
- - - - + + - - - - - - - - - - - - - - - - - - - -
PropertyValueLConcord
Version1 (0x0)
Signature Alg.sha256WithRSAEncryption
Validity from2022-09-21 19:57:57
Valid to2027-09-21 19:57:57
- -
-
-
Subject Information
- - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + +
PropertyValueOBuildingsIoT
CUS
STCalifornia
LConcord
OBuildingsIoT
OUSoftware
CNEasyIO_FS-32
OUSoftware
CNEasyIO_FS-32
+ -

Outbound Connections

- - - - - - - - - - - -
Destination IPPort
- \ No newline at end of file +
+ + +
+