#bindings #low-level #found #nettle

sys nettle-sys

Nettle 密码库的低级 Rust 绑定

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密码学

Download history 1084/week @ 2024-03-24 1337/week @ 2024-03-31 1083/week @ 2024-04-07 1183/week @ 2024-04-14 1250/week @ 2024-04-21 1091/week @ 2024-04-28 850/week @ 2024-05-05 1136/week @ 2024-05-12 1273/week @ 2024-05-19 1108/week @ 2024-05-26 1043/week @ 2024-06-02 907/week @ 2024-06-09 1320/week @ 2024-06-16 1178/week @ 2024-06-23 639/week @ 2024-06-30 866/week @ 2024-07-07

4,087 每月下载量
用于 35 个crate(2 个直接使用)

LGPL-3.0 OR GPL-2.0 OR GPL-3.0

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 的新版本构建时才可用。每个功能的支持在构建时检测。

如果由于某种原因自动检测不起作用,可以通过设置给定的环境变量来启用或禁用可选算法。

将此类变量设置为 1yyesenabletrue 启用功能。任何其他值都禁用它。

算法 所需的 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 版本。

许可证

本项目许可协议为以下之一:

任选其一。

依赖项

~0–3MB
~50K SLoC