#tls-stream #tls-api #tokio #non-blocking #async-io #native-tls #connect


An implementation of TLS/SSL streams for Tokio giving an implementation of TLS for nonblocking I/O streams

19 releases

Uses old Rust 2015

0.2.1 Jan 1, 2020
0.2.0 May 26, 2019
0.1.22 Apr 28, 2019
0.1.20 Jul 15, 2018
0.1.8 Jun 17, 2017

#2012 in Asynchronous

Download history 2530/week @ 2023-12-18 3256/week @ 2023-12-25 2862/week @ 2024-01-01 3357/week @ 2024-01-08 2798/week @ 2024-01-15 1586/week @ 2024-01-22 1832/week @ 2024-01-29 2683/week @ 2024-02-05 3867/week @ 2024-02-12 4853/week @ 2024-02-19 2539/week @ 2024-02-26 2254/week @ 2024-03-04 2156/week @ 2024-03-11 3293/week @ 2024-03-18 2586/week @ 2024-03-25 4345/week @ 2024-04-01

12,482 downloads per month
Used in 12 crates (via lapin-futures-tls-api)




An implementation of TLS/SSL streams for Tokio built on top of the native-tls crate

Build Status Build status



First, add this to your Cargo.toml:

native-tls = "0.1"
tokio-tls = "0.1"

Next, add this to your crate:

extern crate tls_api;
extern crate tokio_tls_api;

use tokio_tls::{TlsConnectorExt, TlsAcceptorExt};

You can find an example of using this crate at https://tokio.rs along with a detailed explanation of what's happening.

This crate provides two extension traits, TlsConnectorExt and TlsAcceptorExt, which augment the functionality provided by the native-tls crate. These extension traits provide the ability to connect a stream asynchronously and accept a socket asynchronously. Configuration of TLS parameters is still done through the support in the native-tls crate.

By default the native-tls crate currently uses the "platform appropriate" backend for a TLS implementation. This means:

Typically these selections mean that you don't have to worry about a portability when using TLS, these libraries are all normally installed by default.

Interaction with tokio-proto

If you're working with a protocol that starts out with a TLS negotation on either the client or server side then you can use the proto::Client and proto::Server types in this crate for performing those tasks. To do so, you can update your dependency as such:

tokio-tls = { version = "0.1", features = ["tokio-proto"] }


tokio-tls is primarily distributed under the terms of both the MIT license and the Apache License (Version 2.0), with portions covered by various BSD-like licenses.

See LICENSE-APACHE, and LICENSE-MIT for details.


~27K SLoC