#rustls #async #pipebuf #client-server #crypto

pipebuf_rustls

PipeBuf 对 Rustls 的封装

2 个不稳定版本

0.23.0 2024 年 4 月 14 日
0.21.0 2023 年 6 月 7 日

#925 in 加密学

Download history 95/week @ 2024-04-08 47/week @ 2024-04-15 5/week @ 2024-05-20

每月 105 次下载

MIT/Apache

36KB
404 代码行

PipeBufRustls 的封装

这提供了一个单一的 "process" 调用,用于处理在 Rustls ServerConnection 的加密和明文两侧之间移动数据所需的所有调用。通常与支持 PipeBuf 的其他包,如 pipebuf_mio 一起使用,提供传输,以及基于 PipeBuf 的封装协议的实现,形成一个完整的处理链。

文档

请参阅 包文档

许可证

本项目采用 Apache License 2.0 或 MIT 许可证之一,由您选择。(请参阅 LICENSE-APACHELICENSE-MIT)。

贡献

除非您明确说明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在此包中的任何贡献,均将按上述方式双许可,无需任何附加条款或条件。


lib.rs:

PipeBuf 封装 Rustls

这提供了一个单一的 "process" 调用,用于处理在 Rustls 客户端或服务器连接结构中加密和明文两侧之间移动数据所需的所有调用。通常与支持 PipeBuf 的其他包,如 pipebuf_mio 或类似,一起使用,提供传输,并实现基于 PipeBuf 的封装协议,形成一个完整的解决方案。

内部使用由Rustls提供的缓冲或不缓冲接口,具体取决于所选的cargo功能。默认使用缓冲接口,因为它是成熟的。尽管不缓冲接口在0.23.4版本中大多数情况下都能正常工作,但有一些边缘情况(在这个crate中的一些失败测试)并且由于计划中的Rustls不缓冲优化尚未实现,它还没有提供任何性能优势。

版本控制

这个crate遵循它封装的Rustls crate的主版本/次版本号。Rustls被重导出为pipebuf_rustls::rustls

选择Rustls crate功能

这个crate默认只使用std启用Rustls(用于缓冲操作)。这意味着您需要在自己的依赖中包含相同版本的Rustls来选择所需的功能,特别是加密提供者。这种方法是必要的,以便您可以使用default-features = false来禁用tls12(如果需要的话)。因此,您的依赖部分可能如下所示,以使用默认的加密提供者

[dependencies]
pipebuf_rustls = "0.23"
rustls = "0.23"

或者可能如下所示,以使用ring

[dependencies]
pipebuf_rustls = "0.23"
rustls = { version = "0.23", features = ["ring"] }

或者可能如下所示,以禁用tls12

[dependencies]
pipebuf_rustls = "0.23"
rustls = { version = "0.23", default-features = false,
           features = ["aws_lc_rs", "logging"] }

查看Rustls Cargo.toml了解如何控制此功能。

要使用Rustls不缓冲实现(目前不推荐),您需要如下所示

[dependencies]
pipebuf_rustls = { version = "0.23", default-features = false, features = ["unbuffered"] }
rustls = "0.23"

依赖关系

~7-14MB
~266K SLoC