OpenBSD tool to signs and verify signatures on files. Portable version.
C Makefile Other Other
Permalink
Failed to load latest commit information.
libwaive @ cdf7c16 Update libwaive and pledge_waive.c to use WAIVE_SOCKET Mar 22, 2016
patches Update bundled libbsd to 0.8.3 Jun 6, 2016
.gitignore Support bundled libbsd and its patching for musl Jan 25, 2016
.gitmodules Provide a pledge() implementation using waive() Dec 1, 2015
.travis.yml CI: Old Travis images have old glibc which needs -lrt Jun 6, 2016
.ycm_extra_conf.py Initial import Jan 14, 2014
CHANGELOG.md Release version 20 Nov 4, 2016
Makefile Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
README.md README: Properly format Markdown link Nov 30, 2016
arc4random.c Updated to upstream sources as of 2015.12.01 Dec 1, 2015
arc4random.h Updated to upstream CVS sources as of 2015.02.19 Feb 19, 2015
base64.c Updated to upstream CVS sources as of 2015.02.19 Feb 19, 2015
bcrypt_pbkdf.c Move declaration of explicit_bero() to avid warnings in sha2.c Jul 14, 2015
blf.h Initial import Jan 14, 2014
blowfish.c Updated to upstream sources as of 2015.12.01 Dec 1, 2015
compat.h Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
crypto_api.c Updated to upstream sources as of 2016.01.06 Jan 6, 2016
crypto_api.h Updated to upstream sources as of 2015.12.01 Dec 1, 2015
cvs-files Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
explicit_bzero.c Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
fe25519.c Updated to upstream CVS sources as of 2015.07.14 Jul 14, 2015
fe25519.h Updated to upstream CVS sources as of 2015.07.14 Jul 14, 2015
ge25519.h Updated to upstream CVS sources as of 2015.07.14 Jul 14, 2015
ge25519_base.data Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
helper.c Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
mod_ed25519.c Initial import Jan 14, 2014
mod_ge25519.c Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
ohash.c Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
ohash.h Remove usage of __BEGIN_DECLS/__END_DECLS Jan 24, 2016
pledge_noop.c Updated to upstream sources as of 2015.12.01 Dec 1, 2015
pledge_waive.c Update libwaive and pledge_waive.c to use WAIVE_SOCKET Mar 22, 2016
sc25519.c Updated to upstream CVS sources as of 2015.07.14 Jul 14, 2015
sc25519.h Updated to upstream CVS sources as of 2015.07.14 Jul 14, 2015
sha2.c Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
sha2.h Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
signify.1 Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
signify.c Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
signify.h Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016
smult_curve25519_ref.c Updated to upstream CVS sources as of 2015.07.14 Jul 14, 2015
timingsafe_bcmp.c Updated to upstream sources as of 2015.12.01 Dec 1, 2015
update-cvs-files Update CVSWeb URL in update-cvs-files script Jun 6, 2016
zsig.c Updated to upstream CVS sources as of 2016.11.04 Nov 4, 2016

README.md

Signify - Sign and Verify

Build Status

OpenBSD tool to signs and verify signatures on files. This is a portable version which uses libbsd (version 0.7 or newer is required).

See http://www.tedunangst.com/flak/post/signify for more information.

License

Like OpenBSD itself, Signify is distributed under the terms of the BSD license.

Building

Dependencies

  • GNU Make (any version above 3.70).
  • C compiler. Both GCC and Clang are tested and supported.
  • libbsd 0.8 or newer.

If your system does not provide a package for libbsd, it is possible to download and compile it automatically, check the build options section for more details.

Options

The following options can be passed to Make:

  • VERIFY_ONLY=1

    Build only the verification code. Support for signing will not be available in the built signify binary. Note that this is unsupported and compilation may not succeed.

  • BOUNDS_CHECKING=1

    Enables bounds-checking using __attribute__((bounded)). Your compiler must have support for this. Clang 3.4 is known to work.

  • BUNDLED_LIBBSD=1

    Downloads and builds libbsd, and links it statically into Signify. This can be used when the version installed in the system is an unsupported version, or when installing it in the system is not desirable.

    Enabling this options needs wget, xz, tar, and gpg installed in the build system. To avoid downloading files while building, there are two options:

    • make BUNDLED_LIBBSD=1 libbsd-print-urls will print the URLs of the files which need to be downloaded, one per line.
    • make BUNDLED_LIBBSD=1 libbsd-download will download the needed files.

    Pre-downloading the files will avoid hitting the network during build, but will still check the PGP signature of the libbsd tarball.

  • BUNDLED_LIBBSD_VERIFY_GPG=0

    Disables checking the PGP signature of the bundled libbsd tarball. This avoids the need for GnuPG to be installed for building.

  • BUNDLED_LIBBSD_VERIFY_GPG=/path/to/gpg

    Set the path to the gpg binary used for checking signatures. If not specified, the program is searched in the $PATH.

  • MUSL=1

    Enable linking against the Musl libc. At the moment this needs a patched libbsd, so enabling this option will automatically set BUNDLED_LIBBSD=1 and patch the locally-built version.

  • LTO=1

    Perform Link-Time Optimizations. Both your compiler and linker must have support for this. Recent binutils and GCC/Clang are known to work.

  • PLEDGE=…

    Choose among one of the alternative implementations of the pledge() system call. For the moment the only supported values is:

    • noop (default): Uses an implementation which does nothing
    • waive (Linux-only): Uses libwaive, which itself uses seccomp filters.

    To use your own implementation, use an empty value, and pass the needed flags for linking its code. For example: make PLEDGE='' EXTRA_LDFLAGS=my-pledge.o.

  • EXTRA_CFLAGS=…, EXTRA_LDFLAGS=…

    Additional flags to be passed to the compiler and the linker, repectively.

For example, you can build a size-optimized version with:

make EXTRA_CFLAGS='-Os -s' LTO=1

Troubleshooting

  • Problem: Undefined references to clock_gettime.
    Solution: Your system has an old glibc version, you need to pass LDLIBS=-lrt to make.

Other implementations

  • asignify can read signatures generated by Signify (generating them is not yet implemented), and can be used as a library.
  • signify-rs, a re-implementation in Rust. It's fully compatible with the original implementation.