Clincher
clincher is a tool for checking that all the commits in a git repo are signed, or if they're not that someone has signed something afterwards to backfill that.
It implicitly trusts all the keys that are in the git repository, and dealing with keys that shouldn't be there is currently out of scope.
Options
--rev-spec: to check only the revisions in a git rev spec (as per https://git-scm.com/docs/gitrevisions#_specifying_ranges). Default is to check everything.--git-path: specify the root directory of the git repo (defaults to the current directory)--key-path: specify the keys path (default is "keys")--manual-signing-path: specify the manually signed commits path (default is "manually_signed")
Trusted keys
The key-path folder contains a list of the GPG keys for all trusted users, which will be automatically imported by the tool. To export a key in the format we expect run gpg --export --armor <key id> (taking the key id from gpg --list-keys) and write it to a file
in key-path ending with ".gpg". We suggest using the users name and today's date to allow for identification and coping with expired keys.
Please note that even if a key is expired, if it's been used to sign historical commits prior to it's expiry it should be kept, as otherwise you have a commit we don't know how to verify.
Unsigned commits
If a commit isn't signed, a file will be generated in the manual-signing-path folder corresponding to that commit. This is a representation of the commit that can be signed as a way to backfill the missing signing without editing the git history, and will be treated the same as the commit itself. It is named <git hash> - <author>.
To sign the commit, use the following
gpg --sign --armor --detach-sign <commit file>
This file should be named <git hash> - <author>.asc
Uploading new versions to PyPi
We use Flit for uploading so the following works
FLIT_USERNAME="<pypi username>" FLIT_PASSWORD="<pypi password>" flit publish
Metadata
Release files for clincher 1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| clincher-1.0.tar.gz | 23.9 kB | Without provenance | Details for clincher-1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| clincher-1.0-py3-none-any.whl | Python 3 | none | any | Details for clincher-1.0-py3-none-any.whl |
Total release size: 69.4 kB
Release files / clincher-1.0.tar.gz
| Download URL | clincher-1.0.tar.gz |
|---|---|
| Size | 23.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
dbd30bd0fc8172a5efa7b594169866db0a71d538c4bcde622adc9147d680225c
|
|
BLAKE2b-256 checksum How to use checksums |
53a2f13dcc43b32036125911dee963f4f4f776896fcb56455f78f84e8028625f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.20.0
|
Release files / clincher-1.0-py3-none-any.whl
| Download URL | clincher-1.0-py3-none-any.whl |
|---|---|
| Size | 45.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b49a856b30d201d38732c3e3639f3f905ef85ca42d4474a19ecd4df30338aa50
|
|
BLAKE2b-256 checksum How to use checksums |
d97c045d7e37d7114c106ed66ab61a75160dc5271f2f0258b9d87532c5ede5f8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
python-requests/2.20.0
|
Security for clincher 1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.