nettle-sys
Low-level Rust bindings for the Nettle cryptographic library.
The documentation can be found here.
Building
To build the Nettle bindings, you need a few libraries and support packages. Notably, you need the Nettle cryptographic library version 3.4.1 or up.
Please see below for OS-specific commands to install the needed libraries.
Debian
$ sudo apt install clang llvm pkg-config nettle-dev
Arch Linux
$ sudo pacman -S clang pkg-config nettle --needed
Fedora
$ sudo dnf install clang pkg-config nettle-devel
macOS (Mojave), using MacPorts
$ sudo port install nettle pkgconfig
Windows
MSYS2
You can install the needed libraries with the following command:
$ pacboy -S clang:x nettle:x
Features
This is a list of feature flags for this library:
vendored
: Use a packaged version of the Nettle library. Implies static linking.
Cross compilation
nettle-sys
can be cross compiled using cross
and a custom Docker container. First, build the container and install cross
:
Then, you can cross compile the project:
The build artifacts will be placed in target/debug/<toolchain>
.
Static linking
By default, nettle-sys
is dynamically linked to its dependencies.
By defining the NETTLE_STATIC
environment variable during the build, it can
also be statically link to its dependencies:
This is particularly useful to produce standalone binaries that can be easily distributed.
Pregenerate bindings.rs
By default, nettle-sys
invokes bindgen
to generate bindings for
Nettle. In some build environments, this might not work due to
bindgen
depending on libllvm
. In this case, the bindings.rs
may
be pregenerated, and used by setting:
Note: bindings.rs
is specific to target architecture, operating
system, and Nettle version.
License
This project is licensed under either of
- GNU General Public License, Version 2.0, (LICENSE-GPL2 or https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
- GNU General Public License, Version 3.0, (LICENSE-GPL3 or https://www.gnu.org/licenses/gpl.html)
- GNU Lesser General Public License, Version 3.0, (LICENSE-LGPL3 or https://www.gnu.org/licenses/lgpl.html)
at your option.