#rustls #digest #postgresql #后端 #tokio-postgres #tls #加密

tokio-postgres-generic-rustls

无需加密后端即可为 tokio-postgres 提供 rustls 支持的 TLS

1 个不稳定版本

0.1.0 2024 年 5 月 4 日

#679Rust 模式

Download history 147/week @ 2024-04-28 31/week @ 2024-05-05 31/week @ 2024-05-19 15/week @ 2024-05-26 68/week @ 2024-06-02 34/week @ 2024-06-09 51/week @ 2024-06-16 60/week @ 2024-06-23 11/week @ 2024-06-30 6/week @ 2024-07-07 38/week @ 2024-07-14 61/week @ 2024-07-21 34/week @ 2024-07-28

每月 142 次下载
pict-rs 中使用

MIT/Apache

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;
}

许可证

本项目许可协议为以下之一:

任选其一。

依赖项

~15–32MB
~695K SLoC