Commit 2497888
committed
Make the package signature verification actually work
The Docker image has not been buildable since v1.4.1. Adding
packages/CHECKSUMS.sha256.asc on 2026-07-15 switched on a verification branch
in the Dockerfile that had never once executed, and it failed immediately:
python:3.12.11-slim ships no gpg. Building v1.4.1 today reproduces it exactly.
The native path was broken too, for a different reason. bootstrap-linux.sh and
bootstrap-macos.sh call gpg --verify without ever importing the public key, so
on any machine that does not already have it in its keyring gpg exits 2 with
"No public key" and the script aborts the install. That is almost every user.
The public key is now in the repo. The copy published on the docs site could
not be imported at all: it was missing the blank line the armor format requires
between the header and the base64 body, so gpg rejected it as an invalid armor
header. That is fixed here.
The Dockerfile installs gnupg, imports the key, verifies, then purges gnupg in
the same layer so it does not reach the final image. The bootstrap scripts
import the bundled key, and when gpg is absent they now warn loudly and fall
through to the SHA-256 check instead of aborting: this tool is meant to run on
air-gapped machines where installing gnupg may be impossible, and refusing to
install there would fail in exactly the case it exists for.
Verified: the build prints Good signature from S.A.S.U. KATVIO (Fractum Release
Signing), the image is 260 MB with gpg absent from it, an encrypt/decrypt round
trip through the image with --network=none returns an identical SHA-256, two
shares below the threshold still fail, and the suite is 107 tests, 8/8 files.1 parent a6887b4 commit 2497888
4 files changed
Lines changed: 116 additions & 9 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
11 | 17 | | |
12 | | - | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
13 | 22 | | |
| 23 | + | |
| 24 | + | |
14 | 25 | | |
15 | 26 | | |
16 | 27 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
16 | 26 | | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
21 | 43 | | |
22 | 44 | | |
23 | 45 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
13 | 14 | | |
14 | 15 | | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
15 | 25 | | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
20 | 42 | | |
21 | 43 | | |
22 | 44 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
0 commit comments