Expand description
§giong-tls
Server-side TLS for the giong thread-per-core runtime, built on
rustls (TLS 1.2 and 1.3, ring for cryptography).
use giong::net::TcpListener;
use giong_tls::TlsAcceptor;
let cert = std::fs::read("cert.pem")?;
let key = std::fs::read("key.pem")?;
let acceptor = TlsAcceptor::from_pem(&cert, &key)?;
giong::block_on(async move {
let listener = TcpListener::bind("0.0.0.0:8443")?;
loop {
let tcp = listener.accept().await?;
let acceptor = acceptor.clone();
giong::spawn(async move {
let Ok(tls) = acceptor.accept(tcp).await else { return };
while let Ok(data) = tls.recv().await {
if data.is_empty() {
break; // closed by the peer
}
if tls.write_all(data).await.0.is_err() {
break;
}
}
let _ = tls.shutdown().await;
});
}
})The API mirrors giong::net::TcpStream: TlsStream::recv returns the
next piece of decrypted data and TlsStream::write_all takes a buffer by
value and hands it back.
Re-exports§
pub use rustls;
Structs§
- TlsAcceptor
- Turns accepted TCP connections into TLS connections.
- TlsStream
- A TLS connection over a
TcpStream.