Provides SslStream, an async wrapper around openssl::ssl::SslStream that
implements futures_io::AsyncRead and futures_io::AsyncWrite instead of the
blocking std::io::Read / std::io::Write traits, making it usable with any
runtime that builds on the futures-io ecosystem.
Forked from tokio-openssl and
reworked to target the runtime-agnostic futures-io traits rather than the
tokio-specific ones.
use async_openssl::SslStream;
use openssl::ssl::{SslConnector, SslMethod};
use std::pin::Pin;
async fn connect(host: &str) -> Result<(), Box<dyn std::error::Error>> {
use smol::net::TcpStream;
let connector = SslConnector::builder(SslMethod::tls())?.build();
let stream = TcpStream::connect((host, 443u16)).await?;
let ssl = connector.configure()?.into_ssl(host)?;
let mut stream = SslStream::new(ssl, stream)?;
Pin::new(&mut stream).connect().await?;
Ok(())
}For a complete runnable example see examples/.
Licensed under either of Apache License, Version 2.0 or MIT license at your option.