1 unstable release
Uses new Rust 2024
new 0.1.0 | May 9, 2025 |
---|
#1078 in Cryptography
19KB
272 lines
compio-openssl
An asynchronous OpenSSL stream for compio.
Features
- Asynchronous support: Built on top of compio's asynchronous manner, async-based SSL/TLS communication.
- Compatibility: Maintain API compatibility with the original synchronous SslStream.
- Wide OpenSSL version support: Compatible with wide versions of OpenSSL just like the openssl crate dose.
*Note: to use TLS 1.3 early data, you need OpenSSL 1.1.1 at least.
Example
use compio::net::TcpStream;
use openssl::ssl::{SslConnector, SslMethod};
let mut builder = SslConnector::builder(SslMethod::tls_client()).unwrap();
let tls_connector = builder.build();
let stream = TcpStream::connect(("www.google.com", 443)).await.unwrap();
let tls_ctx = tls_connector.configure().unwrap().into_ssl("www.google.com").unwrap();
let mut stream = SslStream::new(tls_ctx, stream).unwrap();
stream.connect().await.unwrap();
// Now you get a full async TLS stream!
Fore more examples, see our test.
Vendored
To make OpenSSL static links to your binary, please use openssl's vendored
feature.
[dependencies]
openssl = { version = "0.10", features = ["vendored"] }
License
MIT License
Dependencies
~13–25MB
~489K SLoC