From d1b2d29528b7794b41e66fc2136e395a02f8529b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Thu, 30 May 2024 05:59:35 +0200 Subject: Merging upstream version 1.73.0+dfsg1. Signed-off-by: Daniel Baumann --- .../examples/download-rust-lang.rs | 39 ++++++++++++++++ vendor/tokio-native-tls/examples/echo.rs | 52 +++++++++++++++++++++ vendor/tokio-native-tls/examples/identity.p12 | Bin 0 -> 3386 bytes 3 files changed, 91 insertions(+) create mode 100644 vendor/tokio-native-tls/examples/download-rust-lang.rs create mode 100644 vendor/tokio-native-tls/examples/echo.rs create mode 100644 vendor/tokio-native-tls/examples/identity.p12 (limited to 'vendor/tokio-native-tls/examples') diff --git a/vendor/tokio-native-tls/examples/download-rust-lang.rs b/vendor/tokio-native-tls/examples/download-rust-lang.rs new file mode 100644 index 000000000..6f864c38a --- /dev/null +++ b/vendor/tokio-native-tls/examples/download-rust-lang.rs @@ -0,0 +1,39 @@ +// #![warn(rust_2018_idioms)] + +use native_tls::TlsConnector; +use std::error::Error; +use std::net::ToSocketAddrs; +use tokio::io::{AsyncReadExt, AsyncWriteExt}; +use tokio::net::TcpStream; + +#[tokio::main] +async fn main() -> Result<(), Box> { + let addr = "www.rust-lang.org:443" + .to_socket_addrs()? + .next() + .ok_or("failed to resolve www.rust-lang.org")?; + + let socket = TcpStream::connect(&addr).await?; + let cx = TlsConnector::builder().build()?; + let cx = tokio_native_tls::TlsConnector::from(cx); + + let mut socket = cx.connect("www.rust-lang.org", socket).await?; + + socket + .write_all( + "\ + GET / HTTP/1.0\r\n\ + Host: www.rust-lang.org\r\n\ + \r\n\ + " + .as_bytes(), + ) + .await?; + + let mut data = Vec::new(); + socket.read_to_end(&mut data).await?; + + // println!("data: {:?}", &data); + println!("{}", String::from_utf8_lossy(&data[..])); + Ok(()) +} diff --git a/vendor/tokio-native-tls/examples/echo.rs b/vendor/tokio-native-tls/examples/echo.rs new file mode 100644 index 000000000..74c056433 --- /dev/null +++ b/vendor/tokio-native-tls/examples/echo.rs @@ -0,0 +1,52 @@ +#![warn(rust_2018_idioms)] + +// A tiny async TLS echo server with Tokio +use native_tls::Identity; +use tokio::io::{AsyncReadExt, AsyncWriteExt}; +use tokio::net::TcpListener; + +/** +an example to setup a tls server. +how to test: +wget https://127.0.0.1:12345 --no-check-certificate +*/ +#[tokio::main] +async fn main() -> Result<(), Box> { + // Bind the server's socket + let addr = "127.0.0.1:12345".to_string(); + let tcp: TcpListener = TcpListener::bind(&addr).await?; + + // Create the TLS acceptor. + let der = include_bytes!("identity.p12"); + let cert = Identity::from_pkcs12(der, "mypass")?; + let tls_acceptor = + tokio_native_tls::TlsAcceptor::from(native_tls::TlsAcceptor::builder(cert).build()?); + loop { + // Asynchronously wait for an inbound socket. + let (socket, remote_addr) = tcp.accept().await?; + let tls_acceptor = tls_acceptor.clone(); + println!("accept connection from {}", remote_addr); + tokio::spawn(async move { + // Accept the TLS connection. + let mut tls_stream = tls_acceptor.accept(socket).await.expect("accept error"); + // In a loop, read data from the socket and write the data back. + + let mut buf = [0; 1024]; + let n = tls_stream + .read(&mut buf) + .await + .expect("failed to read data from socket"); + + if n == 0 { + return; + } + println!("read={}", unsafe { + String::from_utf8_unchecked(buf[0..n].into()) + }); + tls_stream + .write_all(&buf[0..n]) + .await + .expect("failed to write data to socket"); + }); + } +} diff --git a/vendor/tokio-native-tls/examples/identity.p12 b/vendor/tokio-native-tls/examples/identity.p12 new file mode 100644 index 000000000..d16abb8c7 Binary files /dev/null and b/vendor/tokio-native-tls/examples/identity.p12 differ -- cgit v1.2.3