1 个不稳定版本
0.1.0 | 2024 年 5 月 4 日 |
---|
#679 在 Rust 模式
每月 142 次下载
在 pict-rs 中使用
22KB
271 行
tokio-postgres-generic-rustls
基于 rustls 的 tokio-postgres TLS 实现
此包允许用户选择加密后端或提供自己的后端,而不是直接依赖 ring 提供的原语。这是通过使用 x509-cert 进行证书解析而不是 X509-certificate 来实现的,同时添加了计算摘要的抽象。
默认情况下,tokio-postgres-generic-rustls 不提供摘要实现,但提供了一或多个实现作为包特性。
特性 | 实现 |
---|---|
aws-lc-rs |
AwsLcRsDigest |
ring |
RingDigest |
rustcrypto |
RustcryptoDigest |
用法
使用此包非常简单。首先,通过包特性选择您的摘要实现(或提供自己的实现),然后使用您的 rustls 客户端配置构建 tokio-postgres 的 rustls 连接器。
以下示例演示了提供自定义摘要后端。
use tokio_postgres_generic_rustls::{DigestImplementation, DigestAlgorithm, MakeRustlsConnect};
#[derive(Clone)]
struct DemoDigest;
impl DigestImplementation for DemoDigest {
fn digest(&self, algorithm: DigestAlgorithm, bytes: &[u8]) -> Vec<u8> {
todo!("digest it")
}
}
fn main() {
let cert_store = rustls::RootCertStore::empty();
let config = rustls::ClientConfig::builder()
.with_root_certificates(cert_store)
.with_no_client_auth();
let tls = MakeRustlsConnect::new(config, DemoDigest);
let connect_future = tokio_postgres::connect("postgres://username:password@localhost:5432/db", tls);
// connect_future.await;
}
许可证
本项目许可协议为以下之一:
- Apache 许可证 2.0 版,(LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
依赖项
~15–32MB
~695K SLoC