All Projects → aperezdc → Signify

aperezdc / Signify

Licence: isc
OpenBSD tool to signs and verify signatures on files. Portable version.

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Signify

Objfw
[Official Mirror] A portable framework for the Objective-C language.
Stars: ✭ 161 (+31.97%)
Mutual labels:  openbsd, portable
Hash Library
Portable C++ hashing library
Stars: ✭ 109 (-10.66%)
Mutual labels:  portable
Qa Checks V4
PowerShell scripts to ensure consistent and reliable build quality and configuration for your servers
Stars: ✭ 94 (-22.95%)
Mutual labels:  verify
Hasswp
Portable version of Home Assistant for Windows (no need to install)
Stars: ✭ 101 (-17.21%)
Mutual labels:  portable
Zenroom
Small, secure and portable virtual machine for crypto language processing
Stars: ✭ 96 (-21.31%)
Mutual labels:  portable
Libtuntap
The portable Tun/Tap devices configuration utility
Stars: ✭ 107 (-12.3%)
Mutual labels:  openbsd
Snap
OpenBSD upgrade tool (OpenBSD,Shell)
Stars: ✭ 92 (-24.59%)
Mutual labels:  openbsd
Simple
The Simple Intelligent and Modular Programming Language and Environment
Stars: ✭ 120 (-1.64%)
Mutual labels:  portable
Picotorrent
A tiny, hackable BitTorrent client.
Stars: ✭ 1,695 (+1289.34%)
Mutual labels:  portable
Pc Engines Apu Router Guide
Guide to building a Linux or BSD router on the PC Engines APU platform
Stars: ✭ 101 (-17.21%)
Mutual labels:  openbsd
Mdnsd
Mdns daemon for OpenBSD.
Stars: ✭ 100 (-18.03%)
Mutual labels:  openbsd
Aura Botnet
A super portable botnet framework with a Django-based C2 server. The client is written in C++, with alternate clients written in Rust, Bash, and Powershell.
Stars: ✭ 95 (-22.13%)
Mutual labels:  portable
Fisy Fuzz
This is the full file system fuzzing framework that I presented at the Hack in the Box 2020 Lockdown Edition conference in April.
Stars: ✭ 110 (-9.84%)
Mutual labels:  openbsd
I2pdbrowser
i2pd browser bundle
Stars: ✭ 94 (-22.95%)
Mutual labels:  portable
Mg
Micro (GNU) Emacs-like text editor ❤️ public-domain
Stars: ✭ 117 (-4.1%)
Mutual labels:  openbsd
Netbsd Curses
libcurses and dependencies taken from netbsd and brought into a portable shape (at least to musl or glibc)
Stars: ✭ 93 (-23.77%)
Mutual labels:  portable
Piracychecker
An Android library that prevents your app from being pirated / cracked using Google Play Licensing (LVL), APK signature protection and more. API 14+ required.
Stars: ✭ 1,359 (+1013.93%)
Mutual labels:  verify
Postinstall
💻 Bash Script to automate post-installation steps
Stars: ✭ 104 (-14.75%)
Mutual labels:  openbsd
Hdl4fpga
VHDL library 4 FPGAs
Stars: ✭ 120 (-1.64%)
Mutual labels:  portable
Discord Portable
🚀 Discord portable for Windows
Stars: ✭ 118 (-3.28%)
Mutual labels:  portable

Signify - Sign and Verify

Build Status

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

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

License

Signify is distributed under the terms of the ISC license.

Installation

Some GNU/Linux distributions have readily available packages in their repositories. It is recommended to use these, unless you absolutely need to build from source code:

  • Debian: apt install signify-openbsd
  • Arch Linux: pacman -S signify

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, 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 option requires wget, xz, tar, and gpg installed on 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(2) system call. For the moment the only supported values are:

    • 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.

  • BZERO=…

    Choose which implementation of explicit_bzero(3) to use. Supported values are:

    • libc: Relies on the system C library providing the function definition in the <string.h> header.
    • bundled: Use the portable implementation included with Signify's source code in explicit_bzero.c.

    The build system will try to detect whether the C library includes the function, and in most cases it will not be needed to specify this option. Providing a value for BZERO disables the automatic detection.

  • EXTRA_CFLAGS=…, EXTRA_LDFLAGS=…

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

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

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

Convenience Targets

The following Make targets are provided as convenience for building static signify binaries:

  • make static: Build a static binary bundling libbsd and using the system default C library.
  • make static-musl: Build a static binary bundling libbsd using the Musl C library. This will set musl-gcc both as the compiler and linker to use and may not work on systems where this wrapper scripts is not available.

Release Signing

PGP

PGP detached signatures of source tarballs (.asc) are done with key 0x91C559DBE4C9123B. The key can be obtained with the following command:

gpg --keyserver hkps://keys.openpgp.org --recv-keys 5AA3BC334FD7E3369E7C77B291C559DBE4C9123B

Assuming that both the tarball and its signature are in the same directory, a release can be checked using:

gpg --verify signify-<version>.tar.xz.asc

Signify

An OpenBSD-style SHA256.sig signed checksum is provided alongside with each release. The signing key can be found at keys/signifyportable.pub, its contents are:

untrusted comment: Signify portable release signing public key
RWRQFCY809DUoWEHxWmoTNtxph6yUlWNsjfW54PqLI6S3dWfuZN4Ovj1

To verify a release, save the associated SHA256.sig file in the same directory as the source tarball. If the signing key is into a file named signifyportable.pub, then use:

signify -C -p signifyportable.pub -x SHA256.sig

The above Signify public key can itself be verified using the same PGP key used for release tarballs. Grab the keys/signifyportable.pub.asc file as well, the run:

gpg --verify signifyportable.pub.asc

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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].