summaryrefslogtreecommitdiffstats
path: root/vendor/tokio-native-tls/examples
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 03:59:35 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-30 03:59:35 +0000
commitd1b2d29528b7794b41e66fc2136e395a02f8529b (patch)
treea4a17504b260206dec3cf55b2dca82929a348ac2 /vendor/tokio-native-tls/examples
parentReleasing progress-linux version 1.72.1+dfsg1-1~progress7.99u1. (diff)
downloadrustc-d1b2d29528b7794b41e66fc2136e395a02f8529b.tar.xz
rustc-d1b2d29528b7794b41e66fc2136e395a02f8529b.zip
Merging upstream version 1.73.0+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/tokio-native-tls/examples')
-rw-r--r--vendor/tokio-native-tls/examples/download-rust-lang.rs39
-rw-r--r--vendor/tokio-native-tls/examples/echo.rs52
-rw-r--r--vendor/tokio-native-tls/examples/identity.p12bin0 -> 3386 bytes
3 files changed, 91 insertions, 0 deletions
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<dyn Error + Send + Sync>> {
+ 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<dyn std::error::Error>> {
+ // 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
--- /dev/null
+++ b/vendor/tokio-native-tls/examples/identity.p12
Binary files differ