rustls-tokio-stream

rustls-tokio-stream is a Rust crate that provides an AsyncRead/AsyncWrite interface for rustls.

Examples

Create a server and client running on localhost:

```rust fn serverconfig() -> ServerConfig { ServerConfig::builder() .withsafedefaults() .withnoclientauth() .withsinglecert(vec![certificate()], private_key()) .expect("Failed to build server config") }

fn clientconfig() -> ClientConfig { ClientConfig::builder() .withsafedefaults() .withnoclientauth() }

async fn tcppair() -> (TcpStream, TcpStream) { let listener = TcpListener::bind(SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, 0))) .await .unwrap(); let port = listener.localaddr().unwrap().port(); let server = spawn(async move { listener.accept().await.unwrap().0 }); let client = spawn(async move { TcpSocket::new_v4() .unwrap() .connect(SocketAddr::V4(SocketAddrV4::new(Ipv4Addr::LOCALHOST, port))) .await .unwrap() });

let (server, client) = (server.await.unwrap(), client.await.unwrap());
(server, client)

}

async fn tlspair() -> (TlsStream, TlsStream) { let (server, client) = tcppair().await; let server = TlsStream::newserverside(server, serverconfig().into()); let client = TlsStream::newclientside( client, clientconfig().into(), "example.com".try_into().unwrap(), );

(server, client)

} ```