Crate rustls_async

Crate rustls_async 

Source
Expand description

An async tls stream library based on rustls and futures_io. Both for server/client.

一个基于 rustlsfutures_io 的异步 TLS 流库,同时支持服务端和客户端。

§Examples

Server

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();

Client

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();

or examples.

Structs§

TlsAccepted
Represents a server-side TLS session after the Client Hello has been received.
TlsConnector
A TLS client connector for initiating a TLS handshake.
TlsStream
A TLS stream that implements AsyncRead and AsyncWrite.