From 50471a5b0ceaf441cda0445fa2018346aa2c3958 Mon Sep 17 00:00:00 2001 From: "atomicbackspace-agent[bot]" <330986079+atomicbackspace-agent[bot]@users.noreply.github.com> Date: Thu, 12 Nov 2026 16:52:19 +0100 Subject: [PATCH] fix: add openssh-keygen, so zegit's SSHSIG oracle runs on this runner zegit's TestSSHSIG_ChecksumsVerifyWithSSHKeygen_441 verifies release checksum signatures with `ssh-keygen -Y verify` and fails under CI when ssh-keygen is missing. zegit's Gitea jobs run in host mode on this runner image, which has no ssh-keygen, so Gitea `lint + test` stayed red on zegit master 639871e0 and the v0.1.56 cut is refused (zegit#575). GitHub's ARC pool was fixed separately (zegit-arc-runner#21, zegit#578). openssh-keygen joins the apk list, and a build step signs and verifies an SSHSIG in namespace "file", so a build without a working ssh-keygen fails here. Checked on the operator workstation: the image builds, and zegit's test passes inside it with CI=1 (`ok cmd/z-backend`, ssh-keygen at /usr/bin/ssh-keygen). Refs: zegit-zoo/zegit#575 Co-Authored-By: Claude Opus 5.5 --- Dockerfile | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/Dockerfile b/Dockerfile index a202fb2..cf71086 100644 --- a/Dockerfile +++ b/Dockerfile @@ -86,6 +86,10 @@ USER root # anywhere. chromedp finds `chromium`/`chromium-browser` on PATH; # chrome-launcher honours CHROME_PATH. font-noto so text renders # (an empty font set makes layout/contrast audits meaningless). +# openssh-keygen -> `ssh-keygen`: zegit's SSHSIG oracle test +# (TestSSHSIG_ChecksumsVerifyWithSSHKeygen_441) verifies release-checksum +# signatures with `ssh-keygen -Y verify` and fails under CI without it, +# so the v0.1.56 cut was refused on this runner (zegit#575). # postgresql-client -> `psql`, so the lighthouse job can CREATE/DROP its own # database on the runner's ci-postgres (ZEGIT_TESTPG_DSN) instead # of migrating the shared maintenance database from under the @@ -111,7 +115,18 @@ RUN apk add --no-cache \ jq \ chromium \ font-noto \ - postgresql-client + postgresql-client \ + openssh-keygen + +# ssh-keygen signs and verifies an SSHSIG in namespace "file", the form zegit's +# test uses, so a build without a working ssh-keygen fails here, not in CI. +RUN set -eu; d=$(mktemp -d); \ + ssh-keygen -q -t ed25519 -N '' -f "$d/k"; \ + echo smoke > "$d/f"; \ + ssh-keygen -q -Y sign -n file -f "$d/k" "$d/f"; \ + printf 'smoke %s\n' "$(cat "$d/k.pub")" > "$d/allowed"; \ + ssh-keygen -Y verify -f "$d/allowed" -I smoke -n file -s "$d/f.sig" < "$d/f"; \ + rm -rf "$d" # CVE-2026-111497 (brotli decoder out-of-bounds write, CISA KEV, due 2026-11-10): the # forgejo/runner:12.11.1 base ships brotli-libs 1.2.0-r0, and `apk add` above never