pub mod crypto;
pub mod stream;
pub use stream::CttpsStream;
pub use crypto::CttpsCrypto;
pub const DEFAULT_PORT: u16 = 443;
#[cfg(test)]
mod tests {
use super::*;
use tokio::net::{TcpListener, TcpStream};
#[tokio::test]
async fn test_handshake() -> anyhow::Result<()> {
let listener = TcpListener::bind("127.0.0.1:0").await?;
let addr = listener.local_addr()?;
let server_task = tokio::spawn(async move {
let (stream, _) = listener.accept().await.unwrap();
let mut server = CttpsStream::accept(stream).await.unwrap();
let msg = server.read_packet().await.unwrap();
assert_eq!(msg, b"hello from client");
server.write_packet(b"hello from server").await.unwrap();
});
let client_stream = TcpStream::connect(addr).await?;
let mut client = CttpsStream::connect(client_stream).await?;
client.write_packet(b"hello from client").await?;
let resp = client.read_packet().await?;
assert_eq!(resp, b"hello from server");
server_task.await?;
Ok(())
}
}