Files
banban/tools/test_mbedtls_cert.py
T
chenjintao 551a7bb1e6 Prefer X25519 for legacy WSS full handshakes
Prioritize X25519 while retaining enabled curve fallbacks and log the negotiated ECDHE group. Extend ABI checks, crypto benchmarks and backend group probes, and document the updated APP package.
2026-09-16 15:32:22 +08:00

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/tls-speed/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)