• src/ssh/TODO.md ssh-trans.c src/ssh/test/dssh_test_internal.h test_tra

    From Deuc¿@VERT to Git commit to main/sbbs/master on Sat Mar 28 12:55:04 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/bb749b57be1a596b01d60496
    Modified Files:
    src/ssh/TODO.md ssh-trans.c src/ssh/test/dssh_test_internal.h test_transport.c
    Log Message:
    Close items 19, 20, 22: decompose kexinit/newkeys, clean up derive_key

    kexinit() (~330 lines) split into build_kexinit_packet,
    receive_peer_kexinit, dssh_test_parse_peer_kexinit (DSSH_TESTABLE
    pure parser), and negotiate_algorithms. Eliminates KEXINIT_SER_NL
    macro and if(0){kexinit_fail:} goto pattern.

    newkeys() (~280 lines) split into dssh_test_encode_k_wire
    (DSSH_TESTABLE pure K wire encoder) and derive_and_apply_keys.

    derive_key() refactored: chained || OpenSSL calls replaced with
    sequential checks; 3 duplicated cleanup blocks unified via goto.

    11 new unit tests: 6 for parse_peer_kexinit (valid, control char,
    name too long, truncated, too short, first_kex_follows), 5 for
    encode_k_wire (mpint no pad, sign pad, empty, string, string empty). Previously-SKIP kexinit/peer_trunc_namelist now implemented.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net