#[derive(Debug, PartialEq)]
pub struct TlsCommonConfiguration
{
pub cipher_suites: Vec<&'static SupportedCipherSuite>,
pub supported_tls_versions: SupportedTlsVersions,
pub tls_mtu: Option<usize>,
pub application_layer_protocol_negotiation_protocols: ApplicationLayerProtocolNegotiationProtocols,
pub session_buffer_limit: usize,
}
impl Default for TlsCommonConfiguration
{
#[inline(always)]
fn default() -> Self
{
Self
{
cipher_suites: Self::default_cipher_suites(),
supported_tls_versions: Self::default_supported_tls_versions(),
tls_mtu: Self::default_tls_mtu(),
application_layer_protocol_negotiation_protocols: Self::default_application_layer_protocol_negotiation_protocols(),
session_buffer_limit: Self::default_session_buffer_limit(),
}
}
}
impl TlsCommonConfiguration
{
#[inline(always)]
pub fn default_cipher_suites() -> Vec<&'static SupportedCipherSuite>
{
vec!
[
TLS13_CHACHA20_POLY1305_SHA256,
TLS13_AES_256_GCM_SHA384,
TLS13_AES_128_GCM_SHA256,
TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256,
TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256,
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
]
}
#[inline(always)]
pub fn cipher_suites(&self) -> Vec<&'static SupportedCipherSuite>
{
self.cipher_suites.clone()
}
#[inline(always)]
pub fn default_supported_tls_versions() -> SupportedTlsVersions
{
SupportedTlsVersions::default()
}
#[inline(always)]
pub const fn default_tls_mtu() -> Option<usize>
{
None
}
#[inline(always)]
pub fn default_application_layer_protocol_negotiation_protocols() -> ApplicationLayerProtocolNegotiationProtocols
{
ApplicationLayerProtocolNegotiationProtocols::default()
}
#[inline(always)]
pub fn default_session_buffer_limit() -> usize
{
16 * 1024
}
}