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://gnu.ac.cn/licenses/old-licenses/gpl-2.0.html)
- GNU 通用公共许可证,版本 3.0,(LICENSE-GPL3 或 https://gnu.ac.cn/licenses/gpl.html)
- GNU 较小通用公共许可证,版本 3.0,(LICENSE-LGPL3 或 https://gnu.ac.cn/licenses/lgpl.html)
任选其一。
依赖项
~0–3MB
~50K SLoC