• src/ssh/CMakeLists.txt sr

    From Deuc¿@VERT to Git commit to main/sbbs/m on Sunday, March 22, 2026 10:47:00
    https://gitlab.synchro.net/main/sbbs/-/commit/1f815b90e196c943f87b9fd7
    Modified Files:
    src/ssh/CMakeLists.txt src/ssh/comp/none.c none.h src/ssh/deucessh.h src/ssh/enc/aes256-ctr.c aes256-ctr.h none.c none.h src/ssh/kex/curve25519-sha256.c curve25519-sha256.h dh-gex-sha256.c dh-gex-sha256.h src/ssh/key_algo/rsa-sha2-256.c rsa-sha2-256.h ssh-ed25519.c ssh-ed25519.h src/ssh/mac/hmac-sha2-256.c hmac-sha2-256.h none.c none.h src/ssh/portable.h ssh-auth.c ssh-auth.h ssh-chan.c ssh-chan.h ssh-conn.c ssh-conn.h ssh-trans.c ssh-trans.h ssh.c
    Log Message:
    DeuceSSH: ELF symbol visibility and separate static/shared builds

    portable.h: add DEUCE_SSH_PUBLIC and DEUCE_SSH_PRIVATE macros.
    - GCC/Clang: visibility("default") and visibility("hidden")
    - MSVC: __declspec(dllexport/dllimport)
    - Static builds: no-ops

    CMakeLists.txt: split OBJECT library into separate static and
    shared library targets compiled from the same sources. Shared
    library builds with -DDEUCE_SSH_SHARED and -fvisibility=hidden.

    All public API functions decorated with DEUCE_SSH_PUBLIC (70 symbols
    exported from libdeuce-ssh.so). All internal cross-file functions
    decorated with DEUCE_SSH_PRIVATE (ssh-chan.c buffer primitives).
    Algorithm module callbacks (sign, verify, handler, cleanup, etc.)
    made static where they were missing it.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Monday, March 23, 2026 20:49:00
    https://gitlab.synchro.net/main/sbbs/-/commit/30feea027d05d936299b6747
    Modified Files:
    src/ssh/CMakeLists.txt src/ssh/test/test_dhgex_provider.h
    Log Message:
    Cache test host keys to avoid repeated RSA keygen

    test_generate_host_key() now checks DSSH_TEST_ED25519_KEY and
    DSSH_TEST_RSA_KEY environment variables. If set to a file path:
    - Load the key from that file if it exists
    - Otherwise generate and save it for next time

    If the env var is not set, generates a fresh key every time
    (preserving original behavior for manual runs).

    CMakeLists.txt sets both env vars to build-directory paths for all
    CTest configurations, so keys are generated once and reused across
    the 23 test runs.

    Test suite time: ~130s -> ~42s (3x speedup).

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Thursday, April 30, 2026 10:38:00
    https://gitlab.synchro.net/main/sbbs/-/commit/4e2d5d8a30773c960d5168b4
    Modified Files:
    src/ssh/CMakeLists.txt src/syncterm/GNUmakefile
    Log Message:
    SyncTERM: tolerate trimmed source dist + half-finished DeuceSSH configure

    Source-dist tarball ships ssh/CMakeLists.txt without ssh/examples/, so DeuceSSH's add_executable(client/server) targets fail at configure
    ("Cannot find source file"). cmake's failure mode is "Configuring
    done Ä Generate step failed", which leaves deucessh.pc on disk (the configure_file ran) but no Makefile/build.ninja (generation aborted).
    The next gmake then sees deucessh.pc, skips configure, and runs
    `cmake --build` against a Makefile-less directory Ä "No rule to make
    target 'Makefile'", with no breadcrumb pointing back at the original
    cmake error.

    Two fixes:

    src/ssh/CMakeLists.txt: gate the example targets on EXISTS so a
    trimmed source tree doesn't fail configure. The examples are
    EXCLUDE_FROM_ALL anyway and never built as part of a normal target.

    src/syncterm/GNUmakefile: replace the deucessh.pc-only sentinel with
    a DSSH_BUILD_READY check that requires both deucessh.pc AND a
    build-system file (Makefile or build.ninja). A half-finished configure
    no longer looks succeeded. Same check applied to the build recipe's
    `if [ ! -f $(DEUCESSH_PC) ]` short-circuit.

    Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net