#async-tls #tls-stream #rustls #stream #tls #async

async-rustls-stream

基于 rustls 和 futures-io 的异步 TLS 流库。适用于服务器/客户端。

2 个版本

0.1.1 2022 年 10 月 3 日
0.1.0 2022 年 10 月 3 日

#1644 in 异步

MIT/Apache

17KB
309 代码行

描述

一个基于 rustlsfutures-io 的异步 TLS 流库。适用于服务器/客户端。

服务器

let listener = async_net::TcpListener::bind((Ipv4Addr::LOCALHOST, 4443)).await.unwrap();
let (stream, remote_addr) = listener.accept().await.unwrap();
// Recv Client Hello
let accept = TlsAccepted::accept(stream).await.unwrap();
let server_config = Arc::new(server_config);
let mut stream = accept.into_stream(server_config.clone()).unwrap();
// handshake completed
stream.flush().await.unwrap();

客户端

let server_name = "test.com".try_into().unwrap();
let client_config = Arc::new(client_config);
let connector = TlsConnector::new(client_config.clone(), server_name).unwrap();
let stream = async_net::TcpStream::connect((Ipv4Addr::LOCALHOST, 4443)).await.unwrap();
let mut stream = connector.connect(stream);
// handshake completed
stream.flush().await.unwrap();

示例

依赖

~7–16MB
~291K SLoC