2 releases
0.5.1 | Jul 24, 2024 |
---|---|
0.5.0 | Jul 24, 2024 |
#557 in Asynchronous
36KB
571 lines
async-native-tls
Asynchronous Native TLS
Native TLS for async-std or tokio.
This crate uses SChannel on Windows (via schannel), Secure Transport on OSX (via security-framework), and OpenSSL (via openssl) on all other platforms.
Installation
$ cargo add async-native-tls
Cargo Feature Flags
-
runtime-async-std
(on by default): Use theasync-std
runtime. -
runtime-tokio
: Use thetokio
runtime. This is mutually exclusive withruntime-async-std
.
Example
async-std
Requires
runtime-async-std
feature (on by default).
# Cargo.toml
[dependencies]
async-native-tls = "0.4"
use async_std::prelude::*;
use async_std::net::TcpStream;
let stream = TcpStream::connect("google.com:443").await?;
let mut stream = async_native_tls::connect("google.com", stream).await?;
stream.write_all(b"GET / HTTP/1.0\r\n\r\n").await?;
let mut res = Vec::new();
stream.read_to_end(&mut res).await?;
println!("{}", String::from_utf8_lossy(&res));
tokio
Requires
runtime-tokio
feature.
# Cargo.toml
[dependencies]
async-native-tls = { version = "0.4", default-features = false, features = [ "runtime-tokio" ] }
use tokio::prelude::*;
use tokio::net::TcpStream;
let stream = TcpStream::connect("google.com:443").await?;
let mut stream = async_native_tls::connect("google.com", stream).await?;
stream.write_all(b"GET / HTTP/1.0\r\n\r\n").await?;
let mut res = Vec::new();
stream.read_to_end(&mut res).await?;
println!("{}", String::from_utf8_lossy(&res));
Contributing
Want to join us? Check out our "Contributing" guide and take a look at some of these issues:
License
Licensed under either of Apache License, Version 2.0 or MIT license at your option.Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in this crate by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~1–13MB
~187K SLoC