···2233A tool to sign arbitrary objects in a git repository.
4455-## Brief overview of how it works
55+## Generating keys
66+77+Signing keys can be generated with [`signify`](https://man.openbsd.org/signify.1),
88+from the OpenBSD project.
99+1010+```
1111+$ signify -G -p newkey.pub -s newkey.sec
1212+```
1313+1414+If you do not wish to encrypt your keys, pass the `-n` flag to the
1515+command line of `signify`.
1616+1717+## Basic usage
1818+1919+This program keeps track of signatures made by a keypair with a given
2020+fingerprint as git references. References can be fetched from and
2121+pushed to a remote.
2222+2323+```
2424+$ git signify pull origin
2525+$ git signify push origin
2626+```
2727+2828+Verification can be done with `git signify verify`. For example, to
2929+verify a release of `git-signify` itself:
3030+3131+```
3232+$ git pull --tags
3333+$ git signify pull
3434+$ git signify verify -k keys/releases.pub v0.3.0
3535+```
3636+3737+To sign git revisions, run something akin to:
3838+3939+```
4040+$ git signify sign -k <secret-key> v0.3.0
4141+```
4242+4343+## In-depth
4444+4545+### Brief overview of this program works
64677-This tool writes a tree object to some git repository containing the
4747+`git-signify` writes a tree object to some git repository containing the
848following blobs:
9491050```
···1656to be signed, and `signature` stores the signature over `object`. The
1757tree's hash is returned by `git signify sign`.
18581919-## Generating keys
2020-2121-Signing keys can be generated with [`signify`](https://man.openbsd.org/signify.1),
2222-from the OpenBSD project.
2323-2424-```
2525-$ signify -G -p newkey.pub -s newkey.sec
2626-```
2727-2828-If you do not wish to encrypt your keys, pass the `-n` flag to the
2929-command line of `signify`.
5959+### Storing signatures in tags
30603131-## Usage
3232-3333-The flags supported by this program and their respective documentation can
3434-be checked by running the following commands:
6161+To store signatures in tags, one must use the "raw" mode of `git-signify`.
6262+The raw flags supported by this program and their respective documentation
6363+can be checked by running the following commands:
35643665```
3737-$ git signify -h
3838-$ git signify sign -h
3939-$ git signify verify -h
6666+$ git signify raw -h
6767+$ git signify raw sign -h
6868+$ git signify raw verify -h
4069```
41704242-To push signatures to a remote, the suggested approach is the following:
7171+The suggested approach to store signatures in tags is the following:
43724473```
4574$ SIGNATURE_TREE=$(git signify sign -k $SECRET_KEY $OBJECT_TO_SIGN)
···5180Verification can then be done with:
52815382```
5454-$ git signify verify -p -k $PUBLIC_KEY $SIGNATURE_COMMIT^{tree}
8383+$ git signify raw verify -p -k $PUBLIC_KEY $SIGNATURE_COMMIT^{tree}
5584```