Git Signatures Overview
All merge commits to the main branch must be PGP (gpg) signed in git. This signs off the entire feature branch.Individual commits in feature branches do not need to be signed, unless they change one or more of the files deemed extra important (see below).
Merge Commit Requirements
Standard Feature Branches
- All merge commits to
mainmust be PGP signed - The signature signs off the entire feature branch
- Individual commits in the feature branch do not require signatures (with exceptions)
Files Requiring Signatures on Every Commit
Certain files are deemed security-critical and require signatures on every commit that changes them, not just merge commits. The list of files requiring signatures to every commit that changes them is defined in theverify-locked-down-signatures workflow.
Developer Keys
Mullvad signs every merge commit to themain branch as well as release tags. If you would like to verify checkouts or releases, you can find our developer keys on Mullvad’s Open Source page.
The Open Source page includes:
- PGP keys for all Mullvad developers
- Instructions for cryptographic verification
- Code signing keys for release verification
Binaries Submodule
The repository has a git submodule atdist-assets/binaries that contains binaries and build scripts for third party code bundled with the app (such as Wintun).
This submodule conforms to the same integrity/security standards as the main repository:
- Every merge commit must be signed
- The main repository should only ever point to a signed merge commit of the binaries submodule
Setting Up PGP Signing
Generate a PGP Key
If you don’t already have a PGP key:Configure Git to Sign Commits
Tell git to use your PGP key:Sign a Merge Commit
When merging a pull request:-S flag ensures the merge commit is signed.
Verification
To verify signed commits:OpenSSF Best Practices
The Mullvad VPN app follows the OpenSSF (Open Source Security Foundation) Best Practices and has achieved the OpenSSF Best Practices badge.- Secure development practices
- Vulnerability disclosure processes
- Code signing and verification
- Regular security audits
- Transparent security policies