Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/hs-cn/async-rustls-stream

An async tls stream library based on rustls and futures-io. Both for server/client.
https://github.com/hs-cn/async-rustls-stream

async rust rustls stream tls

Last synced: about 1 month ago
JSON representation

An async tls stream library based on rustls and futures-io. Both for server/client.

Awesome Lists containing this project

README

        

# Description

An async tls stream library based on [rustls](https://crates.io/crates/rustls) and [futures-io](https://crates.io/crates/futures-io). Both for server/client.

## Server

```rust
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

```rust
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](https://github.com/hs-CN/async-rustls-stream/blob/master/examples).