refactor!: remove GPG commit verification, SSH-only signing - #60
Conversation
Commit signature verification is now SSH-only. Delete check-gpg.sh, security.sh, gpg-list.asc, and the gpg/ key directory; drop them from checksum.sha256 coverage, CODEOWNERS, and .gitignore; remove the GPG-vs-SSH drift report from generate-ssh-allowed-signers.sh; point README.md and SECURITY.md at check-ssh.sh and the SSH-only signer onboarding flow. Also includes the refreshed ssh-allowed-signers roster and the regenerated checksum.sha256 (9 covered files). BREAKING CHANGE: consumers calling check-gpg.sh must switch to check-ssh.sh.
|
Thanks for the cleanup — the GPG removal is thorough and internally consistent: One thing I want to confirm before approving, because it's a security-boundary change that isn't called out: This PR also shrinks the SSH trusted-signer roster, not just GPG. Beyond deleting the GPG anchor, it drops these principals from
Several of these users have live SSH keys in the current file (e.g. Two questions:
Happy to approve once this is either confirmed intentional + documented, or the roster is preserved. Not blocking on anything else. |
|
Good catch — answering both points: 1. Intentional. The roster reduction is a deliberate maintainer decision made together with the move to SSH-only signing: the trust anchor is being reset to the currently active signers ( 2. Documented. Pushed 3da7ed5: the CHANGELOG CHANGELOG.md isn't in the |
on-unknown-fish
left a comment
There was a problem hiding this comment.
Both points from my earlier review are resolved:
- Roster reduction confirmed intentional — a deliberate maintainer decision to reset the trust anchor to the currently active signers, with re-onboarding via the SECURITY.md flow for anyone who resumes committing. That's the boundary working as designed.
- Documented — 3da7ed5 adds the dedicated "Trusted-signer roster reduction (security boundary)" entry to the CHANGELOG
### Removedsection, listing all 11 removed usernames, noting only nine had live SSH entries, and pointing at the re-onboarding flow.
GPG removal remains thorough and internally consistent (checksum fresh, CODEOWNERS/README/SECURITY tracked, generator drift-report cleanly removed). All four required checks pass. Approving and merging.
Summary
Commit signature verification is now SSH-only. All GPG verification code and trust anchors are removed:
check-gpg.sh,security.sh(GPG allowlist rebuilder),gpg-list.asc, and the entiregpg/key directory (13 keys).generate-checksums.sh: droppedcheck-gpg.sh/gpg-list.ascfrom the covered-file list;checksum.sha256regenerated (9 covered files, down from 12) — checksum changes included in this PR.generate-ssh-allowed-signers.sh: removed the GPG-vs-SSH trust-anchor drift report (it iterated the now-deletedgpg/*.asc); refreshedssh-allowed-signersroster included.CODEOWNERS/.gitignore: removed entries for the deleted files and their runtime artifacts (.allowed-keyids.txt,gpg-list.asc.1).README.mdandSECURITY.mdnow document only thecheck-ssh.shflow; SSH-only signer onboarding in SECURITY.md; CHANGELOG updated.Note:
check-ssh.shkeepsgit config gpg.format ssh/gpg.ssh.allowedSignersFile— those are Git's literal config key names for SSH signature verification.Breaking change
Consumers piping
check-gpg.shto bash will 404 once this merges.orochi-network/actionsmust switch any composite action callingcheck-gpg.shtocheck-ssh.sh(coordinated follow-up).Verification
bash -nandshellcheckpass on all modified scripts../generate-checksums.shre-run;checksum.sha256is fresh and sorted (CI checksum-freshness check should pass).grep -ri gpgover the repo: only intentional remains (Git config key names incheck-ssh.sh, CHANGELOG history).