#[derive(Clone, Copy)]
pub enum TlsMode {
NoClient,
Client,
}
pub struct TlsAuthConfig {
pub mode: TlsMode,
#[cfg(feature = "openssl")]
pub psk: Option<
Box<
dyn Fn(
&mut openssl::ssl::SslRef,
Option<&[u8]>,
&mut [u8],
) -> Result<usize, std::io::Error>
+ Sync
+ Send,
>,
>,
}
impl Default for TlsAuthConfig {
fn default() -> Self {
Self {
mode: TlsMode::NoClient,
#[cfg(feature = "openssl")]
psk: None,
}
}
}
pub trait WithTlsAuthConfig {
fn with_tls_auth_config(&self, tls_config: TlsAuthConfig) -> Option<TlsAuthConfig>;
}
impl WithTlsAuthConfig for bool {
fn with_tls_auth_config(&self, tls_config: TlsAuthConfig) -> Option<TlsAuthConfig> {
if *self {
None
} else {
Some(tls_config)
}
}
}