template (1884B)
1 # Template file for 'unos-keys' 2 pkgname=unos-keys 3 version=0.1.0 4 revision=2 5 short_desc="UNOS trust anchors - apk and installer verification keys" 6 maintainer="finwo <finwo@pm.me>" 7 license="GPL-2.0-only" 8 homepage="https://unos.finwo.dev" 9 # Key ceremony: private halves live in ~/.unos-keys/ (developer) or on the CI 10 # workers under the unos-sign-key feature, and never enter git. Public halves 11 # are committed here (public by design): 12 # files/apk/* -> /etc/apk/keys/, files/unos/* -> /etc/unos/keys/. 13 # Rotation = add the new .pub files and bump revision. 14 # 15 # EVERY CI worker's public key must be here. Each of the four workers holds a 16 # distinct keypair, and mk/build.sh names the signature record after whichever 17 # key signed it (.SIGN.RSA.<keyname>.rsa.pub), so the signer is decided by 18 # wherever the conductor happened to schedule the build. Ship fewer than all of 19 # them and verification fails for an arbitrary, run-to-run-varying subset of 20 # packages -- the failure looks like corruption, not like a missing key. 21 # 22 # Consequences worth knowing before adding a fifth worker: 23 # - publish this package BEFORE that worker builds anything, or existing 24 # installs cannot verify its output; 25 # - any one worker can sign packages every client trusts, so these four are 26 # jointly as trusted as the repo itself. The intended end state is a 27 # release step that re-signs with a single key and merely *accepts* these 28 # as inputs; that does not exist yet. 29 # 30 # unos-dev@finwo.dev-096b7b41 is the developer key, kept so locally built 31 # packages still install. It should be dropped once CI is publishing. 32 do_install() { 33 for k in "${FILESDIR}"/apk/*; do 34 [ -e "${k}" ] || break 35 vinstall "${k}" 644 etc/apk/keys "$(basename "${k}")" 36 done 37 for k in "${FILESDIR}"/unos/*; do 38 [ -e "${k}" ] || break 39 vinstall "${k}" 644 etc/unos/keys "$(basename "${k}")" 40 done 41 }