1 个稳定版本

新版本 4.9.1 2024 年 8 月 12 日

#1427网络编程

Download history 1000/week @ 2024-08-11

1,000 每月下载量
2 crates 中使用

MIT/Apache

16MB
462K SLoC

GNU Style Assembly 206K SLoC // 0.0% comments C++ 98K SLoC // 0.2% comments C 78K SLoC // 0.2% comments Assembly 63K SLoC // 0.0% comments Rust 17K SLoC // 0.0% comments Bazel 1K SLoC

tokio-boring

基于 BoringSSL 的 Tokio SSL 流实现。

文档

用法

首先,将以下内容添加到您的 Cargo.toml

[dependencies]
tokio-boring = "1.0.0"

然后,根据需要使用 acceptconnect

use boring::ssl;
use tokio::net::TcpListener;

#[tokio::main]
async fn main() -> anyhow::Result<()> {
    let listener = TcpListener::bind("127.0.0.1:8080").await?;
    let (tcp_stream, _addr) = listener.accept().await?;

    let server = ssl::SslMethod::tls_server();
    let mut ssl_builder = boring::ssl::SslAcceptor::mozilla_modern(server)?;
    ssl_builder.set_default_verify_paths()?;
    ssl_builder.set_verify(ssl::SslVerifyMode::PEER);
    let acceptor = ssl_builder.build();
    let _ssl_stream = tokio_boring::accept(&acceptor, tcp_stream).await?;
    Ok(())
}

该库使用 BoringSSL 来协商连接,是 TLS 流的实现。每个 TLS 流都实现了 ReadWrite 特性,以与 futures I/O 生态系统中的其他部分进行交互和互操作。从该 crate 启动的客户端连接将自动验证主机名(默认行为)。

tokio-boring 通过 acceptconnect 导出此功能。服务器应使用 accept,客户端应使用 connect。这些扩展了该 crate 所依赖的 boring crate 的功能。

许可证

该项目受以下任一许可证的许可:

任您选择。

贡献

除非您明确声明,否则您提交给Serde(根据Apache-2.0许可证定义)的任何有意贡献,都将双授权,如上所述,没有任何附加条款或条件。

赞誉

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

依赖项

~2.5–6.5MB
~108K SLoC