#crypto #api-bindings

gcrypt

libgcrypt 对 Rust 的绑定

5 个版本 (重大更新)

0.7.0 2020年4月18日
0.6.1 2018年6月14日
0.5.4 2017年9月8日
0.5.3 2017年7月22日
0.2.0 2015年7月24日

#1853 in 密码学

LGPL-2.1

130KB
3.5K SLoC

libgcrypt-rs

Build Status crates.io version LGPL-2.1 licensed downloads

Libgcrypt 对 Rust 的绑定。

文档

构建

这些 crate 需要安装 libgcrypt 库及其开发文件(例如,头文件、libgcrypt-config)。构建脚本将尝试使用与 libgcrypt 一起分发的 libgcrypt-config 脚本来检测必要的信息。如果由于某种原因这不起作用,也可以使用一个或多个环境变量来指定所需的信息

  • LIBGCRYPT_INCLUDE 指定可以找到头文件的路径。
  • LIBGCRYPT_LIB_DIR 指定可以找到库文件(例如,*.so、*.a、*.dll 等)的路径。
  • LIBGCRYPT_LIBS 指定所有必需库的名称。
  • LIBGCRYPT_STATIC 控制库默认是静态链接还是动态链接。可以在 LIBGCRYPT_LIBS 中通过在库名称前加上 static=dynamic= 来覆盖个别库的链接方式。
  • LIBGCRYPT_CONFIG 指定 libgcrypt-config 脚本的路径。

每个环境变量(除 LIBGCRYPT_STATICLIBGCRYPT_CONFIG 之外)可以接受由平台的路径分隔符分隔的多个值。

注意:这些 crate 还依赖于具有其自己要求的 gpg-error crate。

注意:这些 crate 的早期版本捆绑了 libgcrypt 库的源代码,并通过构建脚本尝试构建它们。这不再被支持。

使用方法

在首次使用之前,该库需要初始化。可以使用 initinit_fipsinit_default 函数来初始化库。传递给前两个函数的闭包用于配置库。对于第三个函数,使用默认配置。有关配置选项的更多信息,请参阅 libgcrypt 的 文档

示例

let token = gcrypt::init(|x| {
    x.disable_secmem();
});

在未调用初始化函数之前调用包装器中的任何需要初始化的函数将导致包装器尝试通过调用 init_default 来初始化库。

依赖项

~0.4–0.8MB
~14K SLoC