Preserve main GNSS and volume behavior while porting verified TLS, receive fixes and full-handshake optimizations. Add MQTT connection diagnostics and route MQTT through banban.api.talkingq.com:1883. Include migration documentation and regression tools. Firmware builds and package checks passed; user confirmed new-board connectivity after switching the MQTT host to the domain.
38 lines
2.1 KiB
Python
38 lines
2.1 KiB
Python
"""Build the SDK's real crypto/X.509 sources with MSVC and test the server chain.
|
|
Run from a Visual Studio developer shell. Chain PEMs come from the WSS probe.
|
|
"""
|
|
from pathlib import Path
|
|
import argparse
|
|
import subprocess
|
|
|
|
root = Path(__file__).resolve().parents[1]
|
|
parser = argparse.ArgumentParser()
|
|
parser.add_argument('chain', nargs='?', default=str(root / 'artifacts/wss/retest-443'))
|
|
parser.add_argument('--compare-nist', action='store_true')
|
|
parser.add_argument('--compare-windows', action='store_true')
|
|
args = parser.parse_args()
|
|
output = root / 'artifacts/wss/new-board/host-cert'
|
|
output.mkdir(parents=True, exist_ok=True)
|
|
chain = Path(args.chain).resolve()
|
|
sources = '''asn1parse asn1write bignum base64 pem oid pk pkparse pk_wrap rsa rsa_internal
|
|
ecp ecp_curves ecdsa md md5 sha1 sha256 sha512 aes des gcm cipher cipher_wrap
|
|
chacha20 chachapoly poly1305 constant_time ctr_drbg x509 x509_crt platform_util
|
|
ecdh ssl_ciphersuites'''.split()
|
|
command = ['cl', '/nologo', '/O2', '/Gy', '/TC', '/D_CRT_SECURE_NO_WARNINGS',
|
|
'/DMBEDTLS_CONFIG_FILE="wss_tls_host_config.h"',
|
|
'/I' + str(root / 'tools'), '/I' + str(root / 'tools/wss_host_stubs'),
|
|
'/I' + str(root / 'ql-kernel/threadx/common/include'),
|
|
'/I' + str(root / 'ql-application/threadx/interface/custom_app/inc'),
|
|
str(root / 'tools/test_mbedtls_cert.c'),
|
|
str(root / 'ql-application/threadx/interface/custom_app/talkingq_root_ca.c')]
|
|
command += [str(root / ('ql-kernel/threadx/quec_mbedtls/' + name + '.c')) for name in sources]
|
|
variants = ['window4', 'window5', 'window6'] if args.compare_windows else (['baseline', 'nist'] if args.compare_nist else ['nist'])
|
|
for variant in variants:
|
|
exe = output / ('test_mbedtls_cert_' + variant + '.exe')
|
|
flags = ['/DWSS_TEST_DISABLE_NIST_OPTIM'] if variant == 'baseline' else []
|
|
if variant.startswith('window'):
|
|
flags += ['/DWSS_TEST_ECP_WINDOW=' + variant[-1]]
|
|
subprocess.run(command + flags + ['/Fe' + str(exe), '/link', '/OPT:REF'], cwd=output, check=True)
|
|
print('Certificate test variant:', variant, flush=True)
|
|
subprocess.run([str(exe), str(chain)], check=True)
|