#compio #openssl #tcp-stream #compio-openssl

compio-openssl

A compio asynchronous stream of OpenSSL stream

1 unstable release

Uses new Rust 2024

new 0.1.0 May 9, 2025

#1078 in Cryptography

MIT license

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