use serde::{Deserialize, Serialize};
use std::path::PathBuf;
pub(crate) mod _config {
use super::*;
#[doc = include_str!("../../../tests/fixtures/tls_config/default.yaml")]
#[doc = include_str!("../../../tests/fixtures/tls_config/disable_tls_1_2.yaml")]
#[doc = include_str!("../../../tests/fixtures/tls_config/additional_roots.yaml")]
#[doc = include_str!("../../../tests/fixtures/tls_config/skip_verification.yaml")]
#[derive(Debug, Default, Clone, Deserialize, Serialize)]
#[non_exhaustive]
pub struct TlsClientPolicyConfig {
#[serde(default)]
#[serde(with = "serde_yaml::with::singleton_map_recursive")]
pub crypto_provider: CryptoProviderConfig,
#[serde(default)]
pub allowed_versions: AllowedTlsVersionsConfig,
#[serde(default)]
pub certificate_verification: CertificateVerificationConfig,
#[serde(default)]
pub insecure: InsecureTlsClientConfig,
}
}
#[derive(Debug, Clone, Copy, Deserialize, Serialize)]
#[non_exhaustive]
pub struct AllowedTlsVersionsConfig {
#[serde(default = "default_v1_2")]
pub v1_2: bool,
#[serde(default = "default_v1_3")]
pub v1_3: bool,
}
fn default_v1_2() -> bool {
true
}
fn default_v1_3() -> bool {
true
}
impl Default for AllowedTlsVersionsConfig {
fn default() -> Self {
Self {
v1_2: default_v1_2(),
v1_3: default_v1_3(),
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[non_exhaustive]
pub struct CertificateVerificationConfig {
#[serde(default = "default_use_os_verifier")]
pub use_os_verifier: bool,
#[serde(default)]
#[serde(with = "serde_yaml::with::singleton_map_recursive")]
pub additional_roots: Vec<RootCertificate>,
}
fn default_use_os_verifier() -> bool {
true
}
impl Default for CertificateVerificationConfig {
fn default() -> Self {
CertificateVerificationConfig {
use_os_verifier: default_use_os_verifier(),
additional_roots: Default::default(),
}
}
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum RootCertificate {
File {
encoding: RootCertificateFileEncoding,
path: PathBuf,
},
Inline {
data: String,
},
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum RootCertificateFileEncoding {
Der,
Pem,
}
#[derive(Debug, Clone, Deserialize, Serialize)]
#[non_exhaustive]
pub struct InsecureTlsClientConfig {
#[serde(default = "default_skip_verification")]
pub skip_verification: bool,
}
impl Default for InsecureTlsClientConfig {
fn default() -> Self {
InsecureTlsClientConfig {
skip_verification: default_skip_verification(),
}
}
}
fn default_skip_verification() -> bool {
false
}
#[derive(Debug, Default, Copy, Clone, Deserialize, Serialize)]
#[serde(rename_all = "snake_case")]
#[non_exhaustive]
pub enum CryptoProviderConfig {
#[default]
AwsLcRs,
AwsLcRsFips,
Ring,
}