7个版本 (稳定)
1.2.0 | 2020年4月9日 |
---|---|
1.1.2 | 2019年12月20日 |
1.1.0-alpha1 |
|
0.0.1 |
|
#860 in 加密学
每月44次下载
在tokio-libtls中使用
4MB
7K SLoC
Rust绑定,用于LibreSSL的libtls。
LibreSSL项目提供了一个免费的TLS和加密堆栈,该项目于2014年从OpenSSL分叉。目标是提供现代化的代码库、改进的安全性,并应用最佳实践的开发流程。
LibreSSL提供了与OpenSSL's libssl和libcrypto库兼容的C API。它还提供了libtls,这是一个新的TLS库,旨在使编写防错应用程序更容易。
此Rust包空间仅提供对libtls的绑定,因为其他LibreSSL API可以使用现有的rust-openssl包。支持LibreSSL 2.9.0至3.1.0(或更高版本)。TLSv1.3需要LibreSSL 3.1.0或更高版本。
以下包包括
- libtls-sys:FFI绑定。
- libtls:Rust绑定。
- tokio-libtls:Tokio绑定。
最低Rust版本
使用tokio-libtls进行异步I/O需要Rust 1.39或更高版本以支持async-await。此包不提供任何向后兼容性,但您可以在旧版Rust版本上使用版本1.0.0
。
示例
请参阅示例目录以获取各种配置、建立和连接同步和异步TLS连接的示例。以下选定的示例使用Tokio和tokio-libtls包创建非阻塞和异步TLS连接
use std::io;
use tokio::io::{AsyncReadExt, AsyncWriteExt};
use tokio_libtls::prelude::*;
async fn async_https_connect(servername: &str) -> io::Result<()> {
let addr = &(servername.to_owned() + ":443");
let request = format!(
"GET / HTTP/1.1\r\n\
Host: {}\r\n\
Connection: close\r\n\r\n",
servername
);
let config = Builder::new().build()?;
let mut tls = connect(addr, &config, None).await?;
tls.write_all(request.as_bytes()).await?;
let mut buf = vec![0u8; 1024];
tls.read_exact(&mut buf).await?;
let ok = b"HTTP/1.1 200 OK\r\n";
assert_eq!(&buf[..ok.len()], ok);
Ok(())
}
#[tokio::main]
async fn main() {
async_https_connect("www.example.com").await.unwrap();
}
版权和许可
遵循OpenBSD-ISC风格许可,详细信息请参阅 LICENSE。