Commits that show "Verified" on GitHub indicate the author cryptographically signed them. Options:
- GitHub web UI: Edits via github.com are signed automatically.
- SSH signing (recommended): Upload an SSH public key as a Signing Key in GitHub Settings (not just auth), then:
git config --global user.name "Thor Thor" git config --global user.email "codethor@gmail.com" PUBKEY="${HOME}/.ssh/id_ed25519.pub" test -f "$PUBKEY" || { echo "Missing $PUBKEY. Create/reuse an SSH keypair outside the repo."; exit 1; } git config --global gpg.format ssh git config --global commit.gpgsign true git config --global user.signingkey "$PUBKEY"
- GPG signing: Configure GPG and add your public key to GitHub.
No private key material or key-generation scripts belong in this repo.
To reject Co-authored-by trailers before commit creation:
cp scripts/hooks/commit-msg .git/hooks/commit-msg && chmod +x .git/hooks/commit-msgThis does not modify global git config.
make verifymust pass before any PR is merged.- Do not weaken tests or relax validation.
- Do not add self-updating or auto-regenerating behavior for vector/golden files.
- Deterministic vectors must remain deterministic by construction.
- Fork and branch from
main. - Run
make verifylocally (includes fmt, lint, test, test-race, fuzz, build, vectors, test-repeat). - Ensure
make vectorsdoes not modify committed vector files (byte-for-byte stable). - Submit PR. CI must pass.
From a clean working tree, run before pushing:
./scripts/pre-push-gate.shTo confirm commit signing:
git config --global --get gpg.format
git config --global --get commit.gpgsign
git config --global --get user.signingkeyThen: git push -u origin main, tag v0.1.0, push tag, create GitHub Release with Docker/break-NAIVE/SAFE-resists notes.
- Main branch: Protected - no direct pushes
- Feature branches: Create from main, submit PR
- Merge requirements: All tests must pass, at least 1 review
This repository uses pinned dependencies for deterministic cryptographic builds.
Process for updates:
- Check security alerts in GitHub Security tab
- Review changelog for cryptographic implications
- Update single dependency:
go get -u package@version - Run full verification:
make verify - Commit with attribution:
git commit -m "deps: update package to vX.X.X"
NO automated dependency updates - all commits must maintain Thor Thor attribution.
- Vector generation uses
internal/drbgand deterministic handshake paths only. Seetests/policy/for import and symbol guards. - Lab-server and production handshake paths must never use deterministic APIs.
- All crypto API failures must surface as generic
ErrDecrypt(no oracle leakage).