bitcoin/contrib/verify-commits
Wladimir J. van der Laan 7deba93bdc
test: Update trust git root
Marco Falke's old key expired, causing a travis error while verifying
commits 36afd4db44 and before:

    gpg: Good signature from "Marco Falke <marco.falke@tum.de>" [unknown]
    gpg:                 aka "Marco Falke <falke.marco@gmail.com>" [unknown]
    gpg: Note: This key has expired!
    Primary key fingerprint: B8B3 F1C0 E58C 15DB 6A81  D30C 3648 A882 F431 6B9B
      Subkey fingerprint: FE09 B823 E6D8 3A3B C798  3EAA 2D7F 2372 E50F E137

Update the trusted root commit to the commit after that, to fix
this issue.

Tree-SHA512: 41e5913728099b131f73f8b4621cf6474d8914b2ffd524be8bac356426820f58016cc427fb32d043367688c8dbb60c26a7e34756589b61d0ba4ca3f8529a300f
2018-03-06 15:03:00 +01:00
..
allow-revsig-commits Add Pieter's old signed commits to revsig-commits 2017-02-27 20:24:20 -05:00
gpg.sh [verify-commits] Fix gpg.sh's echoing for commits with '\n' 2017-12-05 15:21:23 -05:00
pre-push-hook.sh [copyright] add MIT license headers to .sh scripts where missing 2016-09-11 13:36:22 -06:00
README.md Add README for verify-commits 2016-06-09 13:58:29 -04:00
trusted-git-root test: Update trust git root 2018-03-06 15:03:00 +01:00
trusted-keys Allow any subkey in verify-commits 2017-03-04 09:41:16 -05:00
trusted-sha512-root-commit Update trusted-sha512-root-commit for new bad tree hash 2017-03-09 09:53:19 -05:00
verify-commits.sh Merge #10773: Shell script cleanups 2017-12-04 15:52:11 -08: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.