31个稳定版本 (3个主要版本)

4.9.1 2024年8月4日
4.8.0 2024年7月5日
4.5.0 2024年2月8日
4.2.0 2023年12月14日
1.0.2 2020年11月12日

#61密码学

Download history 9505/week @ 2024-04-28 10111/week @ 2024-05-05 12283/week @ 2024-05-12 13892/week @ 2024-05-19 10845/week @ 2024-05-26 12878/week @ 2024-06-02 12727/week @ 2024-06-09 11996/week @ 2024-06-16 13380/week @ 2024-06-23 10160/week @ 2024-06-30 11771/week @ 2024-07-07 10229/week @ 2024-07-14 10575/week @ 2024-07-21 11822/week @ 2024-07-28 11247/week @ 2024-08-04 10445/week @ 2024-08-11

44,466 每月下载量
36 个crate中 使用 (直接使用 23 个)

Apache-2.0

27MB
741K SLoC

GNU Style Assembly 218K SLoC // 0.0% comments C++ 186K SLoC // 0.2% comments C 152K SLoC // 0.2% comments Assembly 63K SLoC // 0.0% comments Perl 56K SLoC // 0.1% comments Go 49K SLoC // 0.1% comments Rust 16K SLoC // 0.0% comments Bazel 1K SLoC

boring

crates.io

boring对Rust编程语言和BoringSSL库的绑定,同时提供对基于它的tokiohyper的TLS适配器。

文档

贡献

除非你明确声明,否则任何有意提交给作品包含在内的贡献,根据Apache-2.0许可证定义,应同时以Apache许可证版本2.0和MIT许可证的条款进行双重许可,而无需任何额外的条款或条件。

荣誉

该项目基于对rust-openssl的分支。


lib.rs:

BoringSSL绑定

此crate提供了一个安全接口,用于访问BoringSSL加密库。

版本

crate版本

该crate及其所有相关crate(FFI绑定等)同时发布,并将所有版本升级到相同的版本,无论特定crate是否有任何API更改。然而,语义版本控制仍然保持,因为所有crate版本都将根据具有最大更改的crate进行更新。

BoringSSL版本

默认情况下,crate旨在与最新的BoringSSL主分支进行静态链接。注意:任何BoringSSL修订版本的更新都将作为所有crate的主要版本更新发布。

编译和链接选项

环境变量

此crate使用各种环境变量来调整BoringSSL的构建方式。这些变量都以BORING_BSSL_为前缀,用于非FIPS构建,而对于FIPS构建,则使用BORING_BSSL_FIPS_作为前缀。

支持预构建的二进制文件或自定义源代码

虽然这个crate可以独立构建BoringSSL,但你可能希望提供预构建的二进制文件。为此,需要指定环境变量BORING_BSSL{,_FIPS}_PATH,并指定二进制文件的路径。

你也可以通过设置BORING_BSSL{,_FIPS}_INCLUDE_PATH来提供特定的头文件。

注意:crate将在$BORING_BSSL{,_FIPS}_INCLUDE_PATH/openssl/文件夹中查找头文件,请确保将你的头文件放在那里。

另外,可以通过设置BORING_BSSL{,_FIPS}_SOURCE_PATH来指定BoringSSL源代码目录的不同路径,这将自动在构建过程中编译。

警告:当提供BoringSSL的不同版本时,请确保使用兼容版本,crate依赖于某些函数的存在。

使用FIPS验证的模块进行构建

仅支持BoringCrypto模块版本853ca1ea1168dff08011e5d42d94609cc0ca2e27,该版本已通过FIPS 140-2证书4407认证。支持是通过crate的fips特性启用的。

boring-sys包含一个测试,根据功能标志启用/禁用FIPS。你可以按以下方式运行它

$ cargo test --features fips fips::is_enabled

将当前BoringSSL版本与预编译的FIPS验证模块链接(bcm.o

可以将BoringSSL的最新支持版本与FIPS验证的加密模块(bcm.o)链接起来。要启用此编译选项,应启用fips-link-precompiled编译功能,并提供一个BORING_BSSL_FIPS_PRECOMPILED_BCM_O环境变量,指定预编译的FIPS验证bcm.o模块的路径。

请注意,BORING_BSSL_PRECOMPILED_BCM_O永远不会使用,因为不支持将BoringSSL与预编译的非FIPS模块链接。

可选补丁

原始公钥

可以通过启用rpk编译功能,使用RawPublicKey支持编译crate。

实验性的后量子密码学

可以通过启用post-quantum编译功能,使用后量子密码学支持编译crate。

BoringSSL上游支持后量子混合密钥协商X25519Kyber768Draft00。大多数用户应坚持使用该版本。启用此功能将添加一些其他后量子密钥协商

  • X25519Kyber768Draft00OldX25519Kyber768Draft00 相同,但属于旧的代码点。
  • X25519Kyber512Draft00。与 X25519Kyber768Draft00 类似,但 Kyber 使用级别 1 参数集。不推荐使用。它有助于测试较短的 ClientHello 是否会引发更少的中间设备问题。
  • P256Kyber768Draft00。再次与 X25519Kyber768Draft00 类似,但使用 P256 作为经典部分。它使用非标准代码点。不推荐使用。
  • IPDWing。X-Wing 的早期版本。与 X25519Kyber768Draft00Old 类似,但使用名为 ML-KEM-ipd 的新版(但尚未最终确定)Kyber。不推荐使用。

目前所有这些密钥协商都由 Cloudflare 部署,但我们不保证对这些密钥协商的持续支持。

依赖关系