17 个稳定版本
2.3.0 | 2023 年 10 月 13 日 |
---|---|
2.2.0 | 2023 年 5 月 16 日 |
2.1.1 | 2023 年 1 月 27 日 |
2.1.0 | 2022 年 1 月 31 日 |
0.1.0 | 2017 年 11 月 30 日 |
#2186 在 密码学
4,087 每月下载量
用于 35 个crate(2 个直接使用)
29KB
404 行
nettle-sys
Nettle 密码库的低级 Rust 绑定。
文档可以在这里找到。
构建
要构建 Nettle 绑定,您需要一些库和支持包。特别地,您需要 Nettle 密码库版本 3.4.1 或更高版本。某些密码学算法只有在与 Nettle 的新版本构建时才可用,请参阅可选功能。
请参见以下针对特定操作系统的安装所需库的命令。
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),使用 MacPorts
$ sudo port install nettle pkgconfig
Windows
MSYS2
您可以使用以下命令安装所需的库
$ pacman -S mingw-w64-x86_64-{clang,pkg-config,nettle} libnettle-devel
可选功能
某些密码学算法只有在与 Nettle 的新版本构建时才可用。每个功能的支持在构建时检测。
如果由于某种原因自动检测不起作用,可以通过设置给定的环境变量来启用或禁用可选算法。
将此类变量设置为 1
、y
、yes
、enable
或 true
启用功能。任何其他值都禁用它。
算法 | 所需的 Nettle 版本 | 环境变量 |
---|---|---|
cv448, ed448 | >= 3.6 | NETTLE_HAVE_CV448 |
OCB | >= 3.9 | NETTLE_HAVE_OCB |
交叉编译
nettle-sys
可以使用 cross
和自定义 Docker 容器进行交叉编译。首先,构建容器并安装 cross
cargo install cross
docker -t nettle-sys/<toolchain>:1 docker/<toolchain>
然后,您可以交叉编译项目
cross --target <toolchain> -v
构建工件将放置在 target/debug/<toolchain>
。
静态链接
默认情况下,nettle-sys
与其依赖项进行动态链接。
在构建过程中定义 NETTLE_STATIC
环境变量,也可以将其依赖项静态链接
env NETTLE_STATIC=yes cargo build
这对于生成易于分发的独立二进制文件非常有用。
预先生成 bindings.rs
默认情况下,nettle-sys
会调用 bindgen
来生成 Nettle 的绑定。在某些构建环境中,由于 bindgen
依赖于 libllvm
,这可能会导致不工作。在这种情况下,可以预先生成 bindings.rs
,并通过设置以下命令使用它:
env NETTLE_PREGENERATED_BINDINGS=/path/to/bindings.rs cargo build
注意:bindings.rs
专门针对目标架构、操作系统和 Nettle 版本。
许可证
本项目许可协议为以下之一:
- GNU 通用公共许可证,版本 2.0,(LICENSE-GPL2 或 https://www.gnu.org/licenses/old-licenses/gpl-2.0.html)
- GNU 通用公共许可证,版本 3.0,(LICENSE-GPL3 或 https://www.gnu.org/licenses/gpl.html)
- GNU 较小通用公共许可证,版本 3.0,(LICENSE-LGPL3 或 https://www.gnu.org/licenses/lgpl.html)
任选其一。
依赖项
~0–3MB
~50K SLoC