dash/contrib/verify-commits
Wladimir J. van der Laan 3979f24d3f Merge #13479: contrib: Fix CVE-2018-12356 by hardening the regex
9e2e5626dabb7208dafedcc9904940b666be1c3b Fix CVE-2018-12356 by hardening the regex. (Loganaden Velvindron)

Pull request description:

  Detailed write-up here:
  https://neopg.io/blog/pass-signature-spoof/

Tree-SHA512: 2020474ff4c7b5e7f1bea932c63da62aca48d3dc6dcd04507afefad6c40f2977ed2d2916defe2e8e7936a2d498125c578077870147954a7af9b29b823cbb0b10
2020-07-07 11:48:28 -05:00
..
allow-revsig-commits Merge #7713: Fixes for verify-commits script 2017-12-28 11:44:59 +01:00
gpg.sh Merge #13479: contrib: Fix CVE-2018-12356 by hardening the regex 2020-07-07 11:48:28 -05:00
pre-push-hook.sh Merge #8700: [copyright] add MIT license headers to .sh scripts where missing 2018-01-11 13:20:57 +01:00
README.md Merge #7713: Fixes for verify-commits script 2017-12-28 11:44:59 +01:00
trusted-git-root Merge #7713: Fixes for verify-commits script 2017-12-28 11:44:59 +01:00
trusted-keys Merge #9880: Verify Tree-SHA512s in merge commits, enforce sigs are not SHA1 2019-02-04 19:58:07 -06:00
trusted-sha512-root-commit Merge #9940: Fix verify-commits on OSX, update for new bad Tree-SHA512, point travis to different keyservers 2019-02-26 16:41:05 -06:00
verify-commits.sh More of 10773 2020-04-01 12:43:18 -05:00

Tooling for verification of PGP signed commits

This is an incomplete work in progress, but currently includes a pre-push hook script (pre-push-hook.sh) for maintainers to ensure that their own commits are PGP signed (nearly always merge commits), as well as a script to verify commits against a trusted keys list.

Using verify-commits.sh safely

Remember that you can't use an untrusted script to verify itself. This means that checking out code, then running verify-commits.sh against HEAD is not safe, because the version of verify-commits.sh that you just ran could be backdoored. Instead, you need to use a trusted version of verify-commits prior to checkout to make sure you're checking out only code signed by trusted keys:

git fetch origin && \
  ./contrib/verify-commits/verify-commits.sh origin/master && \
  git checkout origin/master

Note that the above isn't a good UI/UX yet, and needs significant improvements to make it more convenient and reduce the chance of errors; pull-reqs improving this process would be much appreciated.