Skip to content

feat(install): verify release-asset minisign signatures#83

Merged
ElbertePlinio merged 2 commits into
mainfrom
feat/installer-minisign
Jul 24, 2026
Merged

feat(install): verify release-asset minisign signatures#83
ElbertePlinio merged 2 commits into
mainfrom
feat/installer-minisign

Conversation

@ElbertePlinio

Copy link
Copy Markdown
Member

Implements #76: the curl installer now verifies release-asset minisign signatures.

Design: verify-if-available — when minisign (or rsign) is on PATH, verification is mandatory and fail-closed (bad, missing, or undecodable signature aborts before any tar parsing or install step); with no verifier present the installer prints a loud warning explaining what was skipped and how to install minisign, then proceeds. The Tauri updater public key (key id C9FDD29AA6D3DEA1) is embedded as a constant sourced from tauri.conf.json — never fetched from the network. The .sig companion downloads through the same allowlisted-host, HTTPS-pinned path as the asset. Verified empirically against the live v0.2.1 release on both asset types, including a tamper case, plus a portable base64 decode helper (-d with -D fallback) for older macOS.

Smoke suite extended to 13 scenarios (good/bad/missing signature, no verifier, -D-only base64). Serious-class review panel: security lane clean (bypass, fail-closed completeness, TOCTOU, pubkey match all checked), shell-portability finding fixed and VERIFIED FIXED by targeted re-review.

Known limits (documented): rsign2 branch follows its documented CLI but was not empirically exercised (fails closed if wrong); a hostile earlier-PATH verifier shim is outside the script's trust model, same as its existing reliance on genuine curl/tar.

Closes #76.

🤖 Generated with Claude Code

Download the .sig companion published for each Tauri-updater asset and
verify it with minisign (or rsign from rsign2) when available on PATH,
using the public key embedded from src-tauri/tauri.conf.json. A missing
verifier only warns and proceeds; a present verifier makes verification
mandatory and fails closed on a missing, undecodable, or bad signature.
Older macOS base64 only accepts -D (not -d) for decoding, so a Mac
with minisign installed but an old base64 would fail-closed and abort
a good install. Try -d first, then -D, before handing the decoded
signature to the verifier.
@ElbertePlinio
ElbertePlinio merged commit 46f75ef into main Jul 24, 2026
4 checks passed
@ElbertePlinio
ElbertePlinio deleted the feat/installer-minisign branch July 24, 2026 19:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

install.sh: verify release-asset minisign signatures on install

1 participant