install.sh: verify releases via SSHSIG (ssh-keygen -Y) and drop the minisign prerequisite #23
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Part of the simplify-first-run-install arc. Motivating incident: a new user's very first install (ditc v3.5.0, macOS 26) stalled at the minisign hard gate — the welcome-page command refused with "Refusing to install: minisign is not installed" and the user had to discover
brew install minisignunprompted. dit-client#216 made signature verification MANDATORY because the old shared key was retired and no documented install ever crypto-verified — but #216 mandates the PROPERTY (release bytes anchored to a key the forge cannot forge, fail-closed), not minisign-the-tool.Proposal
Replace the minisign prerequisite with SSHSIG (
ssh-keygen -Y verify), which ships by default on macOS, Linux, and Windows (OpenSSH client) — zero client-side prerequisites on every ditc target.Scope
SHA256SUMS.sshsigalongsideSHA256SUMS.minisig(new per-tool Ed25519 release key, same CI/secret-store custody as the current minisign key;.minisigkeeps shipping during a transition window so already-installed binaries keep self-updating).ssh-keygen -Y verifyagainst an embedded per-tool allowed-signers block (identityditc-release@deepnet— mirrors today's embedded per-tool pubkeys; rotation = add a key line). Missingssh-keygen→ printed per-OS hint + exit ≠0, never auto-install.curl … | bash -s --usage header from install.sh — it bypasses the welcome line's hash pin and contradicts the script's own D7/SC-3 doctrine.Acceptance criteria
debian:12-slimcontainer with NO minisign and NO package installs..sshsigfails closed (non-zero exit, nothing installed).tests/install-signing.shproves: absent-minisign gate is gone; absent-ssh-keygen prints the hint and exits non-zero; verified and tampered paths both covered.Critic review amendments (2026-10-06):
Implemented on branch
arc/23-24-installer-rescue(unpushed):25aa547SSHSIG-prefer verify + minisign fallback (both installers),74ce636POST URL alignment. E2E (podman debian:12-slim, 11 scenarios) ALL PASSED incl. minisign-absent install, tampered-sshsig fail-closed, fallback, refusal paths. Pending: SSH release-key mint + placeholder pubkey swap, push/PR.