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 在 密码学 中
44,466 每月下载量
在 36 个crate中 使用 (直接使用 23 个)
27MB
741K SLoC
boring
boring对Rust编程语言和BoringSSL库的绑定,同时提供对基于它的tokio和hyper的TLS适配器。
文档
- Boring API: https://docs.rs/boring
- tokio TLS适配器: https://docs.rs/tokio-boring
- hyper HTTPS连接器: https://docs.rs/hyper-boring
- FFI绑定: https://docs.rs/boring-sys
贡献
除非你明确声明,否则任何有意提交给作品包含在内的贡献,根据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
。大多数用户应坚持使用该版本。启用此功能将添加一些其他后量子密钥协商
X25519Kyber768Draft00Old
与X25519Kyber768Draft00
相同,但属于旧的代码点。X25519Kyber512Draft00
。与X25519Kyber768Draft00
类似,但 Kyber 使用级别 1 参数集。不推荐使用。它有助于测试较短的 ClientHello 是否会引发更少的中间设备问题。P256Kyber768Draft00
。再次与X25519Kyber768Draft00
类似,但使用 P256 作为经典部分。它使用非标准代码点。不推荐使用。IPDWing
。X-Wing 的早期版本。与X25519Kyber768Draft00Old
类似,但使用名为 ML-KEM-ipd 的新版(但尚未最终确定)Kyber。不推荐使用。
目前所有这些密钥协商都由 Cloudflare 部署,但我们不保证对这些密钥协商的持续支持。