Struct pingora_openssl::ssl::SslOptions
source · pub struct SslOptions(/* private fields */);
Expand description
Options controlling the behavior of an SslContext
.
Implementations§
source§impl SslOptions
impl SslOptions
sourcepub const DONT_INSERT_EMPTY_FRAGMENTS: SslOptions = _
pub const DONT_INSERT_EMPTY_FRAGMENTS: SslOptions = _
Disables a countermeasure against an SSLv3/TLSv1.0 vulnerability affecting CBC ciphers.
sourcepub const ALL: SslOptions = _
pub const ALL: SslOptions = _
A “reasonable default” set of options which enables compatibility flags.
sourcepub const NO_QUERY_MTU: SslOptions = _
pub const NO_QUERY_MTU: SslOptions = _
Do not query the MTU.
Only affects DTLS connections.
sourcepub const COOKIE_EXCHANGE: SslOptions = _
pub const COOKIE_EXCHANGE: SslOptions = _
Enables Cookie Exchange as described in RFC 4347 Section 4.2.1.
Only affects DTLS connections.
sourcepub const NO_TICKET: SslOptions = _
pub const NO_TICKET: SslOptions = _
Disables the use of session tickets for session resumption.
sourcepub const NO_SESSION_RESUMPTION_ON_RENEGOTIATION: SslOptions = _
pub const NO_SESSION_RESUMPTION_ON_RENEGOTIATION: SslOptions = _
Always start a new session when performing a renegotiation on the server side.
sourcepub const NO_COMPRESSION: SslOptions = _
pub const NO_COMPRESSION: SslOptions = _
Disables the use of TLS compression.
sourcepub const ALLOW_UNSAFE_LEGACY_RENEGOTIATION: SslOptions = _
pub const ALLOW_UNSAFE_LEGACY_RENEGOTIATION: SslOptions = _
Allow legacy insecure renegotiation with servers or clients that do not support secure renegotiation.
sourcepub const SINGLE_ECDH_USE: SslOptions = _
pub const SINGLE_ECDH_USE: SslOptions = _
Creates a new key for each session when using ECDHE.
This is always enabled in OpenSSL 1.1.0.
sourcepub const SINGLE_DH_USE: SslOptions = _
pub const SINGLE_DH_USE: SslOptions = _
Creates a new key for each session when using DHE.
This is always enabled in OpenSSL 1.1.0.
sourcepub const CIPHER_SERVER_PREFERENCE: SslOptions = _
pub const CIPHER_SERVER_PREFERENCE: SslOptions = _
Use the server’s preferences rather than the client’s when selecting a cipher.
This has no effect on the client side.
sourcepub const TLS_ROLLBACK_BUG: SslOptions = _
pub const TLS_ROLLBACK_BUG: SslOptions = _
Disables version rollback attach detection.
sourcepub const NO_SSLV2: SslOptions = _
pub const NO_SSLV2: SslOptions = _
Disables the use of SSLv2.
sourcepub const NO_SSLV3: SslOptions = _
pub const NO_SSLV3: SslOptions = _
Disables the use of SSLv3.
sourcepub const NO_TLSV1: SslOptions = _
pub const NO_TLSV1: SslOptions = _
Disables the use of TLSv1.0.
sourcepub const NO_TLSV1_1: SslOptions = _
pub const NO_TLSV1_1: SslOptions = _
Disables the use of TLSv1.1.
sourcepub const NO_TLSV1_2: SslOptions = _
pub const NO_TLSV1_2: SslOptions = _
Disables the use of TLSv1.2.
sourcepub const NO_TLSV1_3: SslOptions = _
pub const NO_TLSV1_3: SslOptions = _
Disables the use of TLSv1.3.
Requires OpenSSL 1.1.1 or LibreSSL 3.4.0 or newer.
sourcepub const NO_DTLSV1: SslOptions = _
pub const NO_DTLSV1: SslOptions = _
Disables the use of DTLSv1.0
Requires OpenSSL 1.0.2 or LibreSSL 3.3.2 or newer.
sourcepub const NO_DTLSV1_2: SslOptions = _
pub const NO_DTLSV1_2: SslOptions = _
Disables the use of DTLSv1.2.
Requires OpenSSL 1.0.2 or LibreSSL 3.3.2 or newer.
sourcepub const NO_SSL_MASK: SslOptions = _
pub const NO_SSL_MASK: SslOptions = _
Disables the use of all (D)TLS protocol versions.
This can be used as a mask when whitelisting protocol versions.
Requires OpenSSL 1.0.2 or newer.
§Examples
Only support TLSv1.2:
use openssl::ssl::SslOptions;
let options = SslOptions::NO_SSL_MASK & !SslOptions::NO_TLSV1_2;
sourcepub const NO_RENEGOTIATION: SslOptions = _
pub const NO_RENEGOTIATION: SslOptions = _
Disallow all renegotiation in TLSv1.2 and earlier.
Requires OpenSSL 1.1.0h or newer.
sourcepub const ENABLE_MIDDLEBOX_COMPAT: SslOptions = _
pub const ENABLE_MIDDLEBOX_COMPAT: SslOptions = _
Enable TLSv1.3 Compatibility mode.
Requires OpenSSL 1.1.1 or newer. This is on by default in 1.1.1, but a future version may have this disabled by default.
sourcepub const PRIORITIZE_CHACHA: SslOptions = _
pub const PRIORITIZE_CHACHA: SslOptions = _
Prioritize ChaCha ciphers when preferred by clients.
Temporarily reprioritize ChaCha20-Poly1305 ciphers to the top of the server cipher list if a ChaCha20-Poly1305 cipher is at the top of the client cipher list. This helps those clients (e.g. mobile) use ChaCha20-Poly1305 if that cipher is anywhere in the server cipher list; but still allows other clients to use AES and other ciphers.
Requires enable SslOptions::CIPHER_SERVER_PREFERENCE
.
Requires OpenSSL 1.1.1 or newer.
source§impl SslOptions
impl SslOptions
sourcepub const fn empty() -> SslOptions
pub const fn empty() -> SslOptions
Get a flags value with all bits unset.
sourcepub const fn all() -> SslOptions
pub const fn all() -> SslOptions
Get a flags value with all known bits set.
sourcepub const fn bits(&self) -> u64
pub const fn bits(&self) -> u64
Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
sourcepub const fn from_bits(bits: u64) -> Option<SslOptions>
pub const fn from_bits(bits: u64) -> Option<SslOptions>
Convert from a bits value.
This method will return None
if any unknown bits are set.
sourcepub const fn from_bits_truncate(bits: u64) -> SslOptions
pub const fn from_bits_truncate(bits: u64) -> SslOptions
Convert from a bits value, unsetting any unknown bits.
sourcepub const fn from_bits_retain(bits: u64) -> SslOptions
pub const fn from_bits_retain(bits: u64) -> SslOptions
Convert from a bits value exactly.
sourcepub fn from_name(name: &str) -> Option<SslOptions>
pub fn from_name(name: &str) -> Option<SslOptions>
Get a flags value with the bits of a flag with the given name set.
This method will return None
if name
is empty or doesn’t
correspond to any named flag.
sourcepub const fn intersects(&self, other: SslOptions) -> bool
pub const fn intersects(&self, other: SslOptions) -> bool
Whether any set bits in a source flags value are also set in a target flags value.
sourcepub const fn contains(&self, other: SslOptions) -> bool
pub const fn contains(&self, other: SslOptions) -> bool
Whether all set bits in a source flags value are also set in a target flags value.
sourcepub fn insert(&mut self, other: SslOptions)
pub fn insert(&mut self, other: SslOptions)
The bitwise or (|
) of the bits in two flags values.
sourcepub fn remove(&mut self, other: SslOptions)
pub fn remove(&mut self, other: SslOptions)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
remove
won’t truncate other
, but the !
operator will.
sourcepub fn toggle(&mut self, other: SslOptions)
pub fn toggle(&mut self, other: SslOptions)
The bitwise exclusive-or (^
) of the bits in two flags values.
sourcepub fn set(&mut self, other: SslOptions, value: bool)
pub fn set(&mut self, other: SslOptions, value: bool)
Call insert
when value
is true
or remove
when value
is false
.
sourcepub const fn intersection(self, other: SslOptions) -> SslOptions
pub const fn intersection(self, other: SslOptions) -> SslOptions
The bitwise and (&
) of the bits in two flags values.
sourcepub const fn union(self, other: SslOptions) -> SslOptions
pub const fn union(self, other: SslOptions) -> SslOptions
The bitwise or (|
) of the bits in two flags values.
sourcepub const fn difference(self, other: SslOptions) -> SslOptions
pub const fn difference(self, other: SslOptions) -> SslOptions
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
sourcepub const fn symmetric_difference(self, other: SslOptions) -> SslOptions
pub const fn symmetric_difference(self, other: SslOptions) -> SslOptions
The bitwise exclusive-or (^
) of the bits in two flags values.
sourcepub const fn complement(self) -> SslOptions
pub const fn complement(self) -> SslOptions
The bitwise negation (!
) of the bits in a flags value, truncating the result.
source§impl SslOptions
impl SslOptions
sourcepub const fn iter(&self) -> Iter<SslOptions>
pub const fn iter(&self) -> Iter<SslOptions>
Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
sourcepub const fn iter_names(&self) -> IterNames<SslOptions>
pub const fn iter_names(&self) -> IterNames<SslOptions>
Yield a set of contained named flags values.
This method is like iter
, except only yields bits in contained named flags.
Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
Trait Implementations§
source§impl Binary for SslOptions
impl Binary for SslOptions
source§impl BitAnd for SslOptions
impl BitAnd for SslOptions
source§fn bitand(self, other: SslOptions) -> SslOptions
fn bitand(self, other: SslOptions) -> SslOptions
The bitwise and (&
) of the bits in two flags values.
§type Output = SslOptions
type Output = SslOptions
&
operator.source§impl BitAndAssign for SslOptions
impl BitAndAssign for SslOptions
source§fn bitand_assign(&mut self, other: SslOptions)
fn bitand_assign(&mut self, other: SslOptions)
The bitwise and (&
) of the bits in two flags values.
source§impl BitOr for SslOptions
impl BitOr for SslOptions
source§fn bitor(self, other: SslOptions) -> SslOptions
fn bitor(self, other: SslOptions) -> SslOptions
The bitwise or (|
) of the bits in two flags values.
§type Output = SslOptions
type Output = SslOptions
|
operator.source§impl BitOrAssign for SslOptions
impl BitOrAssign for SslOptions
source§fn bitor_assign(&mut self, other: SslOptions)
fn bitor_assign(&mut self, other: SslOptions)
The bitwise or (|
) of the bits in two flags values.
source§impl BitXor for SslOptions
impl BitXor for SslOptions
source§fn bitxor(self, other: SslOptions) -> SslOptions
fn bitxor(self, other: SslOptions) -> SslOptions
The bitwise exclusive-or (^
) of the bits in two flags values.
§type Output = SslOptions
type Output = SslOptions
^
operator.source§impl BitXorAssign for SslOptions
impl BitXorAssign for SslOptions
source§fn bitxor_assign(&mut self, other: SslOptions)
fn bitxor_assign(&mut self, other: SslOptions)
The bitwise exclusive-or (^
) of the bits in two flags values.
source§impl Clone for SslOptions
impl Clone for SslOptions
source§fn clone(&self) -> SslOptions
fn clone(&self) -> SslOptions
1.0.0 · source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moresource§impl Debug for SslOptions
impl Debug for SslOptions
source§impl Extend<SslOptions> for SslOptions
impl Extend<SslOptions> for SslOptions
source§fn extend<T>(&mut self, iterator: T)where
T: IntoIterator<Item = SslOptions>,
fn extend<T>(&mut self, iterator: T)where
T: IntoIterator<Item = SslOptions>,
The bitwise or (|
) of the bits in each flags value.
source§fn extend_one(&mut self, item: A)
fn extend_one(&mut self, item: A)
extend_one
)source§fn extend_reserve(&mut self, additional: usize)
fn extend_reserve(&mut self, additional: usize)
extend_one
)source§impl Flags for SslOptions
impl Flags for SslOptions
source§const FLAGS: &'static [Flag<SslOptions>] = _
const FLAGS: &'static [Flag<SslOptions>] = _
source§fn from_bits_retain(bits: u64) -> SslOptions
fn from_bits_retain(bits: u64) -> SslOptions
§fn from_bits_truncate(bits: Self::Bits) -> Self
fn from_bits_truncate(bits: Self::Bits) -> Self
§fn from_name(name: &str) -> Option<Self>
fn from_name(name: &str) -> Option<Self>
§fn iter_names(&self) -> IterNames<Self>
fn iter_names(&self) -> IterNames<Self>
§fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
fn intersects(&self, other: Self) -> boolwhere
Self: Sized,
§fn contains(&self, other: Self) -> boolwhere
Self: Sized,
fn contains(&self, other: Self) -> boolwhere
Self: Sized,
§fn insert(&mut self, other: Self)where
Self: Sized,
fn insert(&mut self, other: Self)where
Self: Sized,
|
) of the bits in two flags values.§fn remove(&mut self, other: Self)where
Self: Sized,
fn remove(&mut self, other: Self)where
Self: Sized,
&!
). Read more§fn toggle(&mut self, other: Self)where
Self: Sized,
fn toggle(&mut self, other: Self)where
Self: Sized,
^
) of the bits in two flags values.§fn set(&mut self, other: Self, value: bool)where
Self: Sized,
fn set(&mut self, other: Self, value: bool)where
Self: Sized,
Flags::insert
] when value
is true
or [Flags::remove
] when value
is false
.§fn intersection(self, other: Self) -> Self
fn intersection(self, other: Self) -> Self
&
) of the bits in two flags values.§fn difference(self, other: Self) -> Self
fn difference(self, other: Self) -> Self
&!
). Read more§fn symmetric_difference(self, other: Self) -> Self
fn symmetric_difference(self, other: Self) -> Self
^
) of the bits in two flags values.§fn complement(self) -> Self
fn complement(self) -> Self
!
) of the bits in a flags value, truncating the result.source§impl FromIterator<SslOptions> for SslOptions
impl FromIterator<SslOptions> for SslOptions
source§fn from_iter<T>(iterator: T) -> SslOptionswhere
T: IntoIterator<Item = SslOptions>,
fn from_iter<T>(iterator: T) -> SslOptionswhere
T: IntoIterator<Item = SslOptions>,
The bitwise or (|
) of the bits in each flags value.
source§impl Hash for SslOptions
impl Hash for SslOptions
source§impl IntoIterator for SslOptions
impl IntoIterator for SslOptions
§type Item = SslOptions
type Item = SslOptions
§type IntoIter = Iter<SslOptions>
type IntoIter = Iter<SslOptions>
source§fn into_iter(self) -> <SslOptions as IntoIterator>::IntoIter
fn into_iter(self) -> <SslOptions as IntoIterator>::IntoIter
source§impl LowerHex for SslOptions
impl LowerHex for SslOptions
source§impl Not for SslOptions
impl Not for SslOptions
source§fn not(self) -> SslOptions
fn not(self) -> SslOptions
The bitwise negation (!
) of the bits in a flags value, truncating the result.
§type Output = SslOptions
type Output = SslOptions
!
operator.source§impl Octal for SslOptions
impl Octal for SslOptions
source§impl Ord for SslOptions
impl Ord for SslOptions
source§fn cmp(&self, other: &SslOptions) -> Ordering
fn cmp(&self, other: &SslOptions) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
source§impl PartialEq for SslOptions
impl PartialEq for SslOptions
source§fn eq(&self, other: &SslOptions) -> bool
fn eq(&self, other: &SslOptions) -> bool
self
and other
values to be equal, and is used
by ==
.source§impl PartialOrd for SslOptions
impl PartialOrd for SslOptions
source§fn partial_cmp(&self, other: &SslOptions) -> Option<Ordering>
fn partial_cmp(&self, other: &SslOptions) -> Option<Ordering>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read moresource§impl Sub for SslOptions
impl Sub for SslOptions
source§fn sub(self, other: SslOptions) -> SslOptions
fn sub(self, other: SslOptions) -> SslOptions
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.
§type Output = SslOptions
type Output = SslOptions
-
operator.source§impl SubAssign for SslOptions
impl SubAssign for SslOptions
source§fn sub_assign(&mut self, other: SslOptions)
fn sub_assign(&mut self, other: SslOptions)
The intersection of a source flags value with the complement of a target flags value (&!
).
This method is not equivalent to self & !other
when other
has unknown bits set.
difference
won’t truncate other
, but the !
operator will.