#[non_exhaustive]pub struct TlsClientPolicyConfig {
pub crypto_provider: CryptoProviderConfig,
pub allowed_versions: AllowedTlsVersionsConfig,
pub certificate_verification: CertificateVerificationConfig,
pub insecure: InsecureTlsClientConfig,
}Expand description
Configure the TLS policy for a client.
It covers:
- The cryptographic stack used to secure the connection.
- Which TLS versions are allowed.
- The certificate verification mechanism used to verify server certificates.
For testing/development purposes only, it exposes a few insecure configuration options that lower the security posture of your client.
§Defaults
The default configuration should be suitable for most production environments:
# In YAML format
crypto_provider: aws_lc_rs
allowed_versions:
v1_2: true
v1_3: true
certificate_verification:
use_os_verifier: true
additional_roots: []
insecure:
skip_verification: false§Overriding the default configuration
If you want to deviate from the default configuration, it’s enough to specify the fields you want to override.
§Example: Disable TLS 1.2
# In YAML format
allowed_versions:
v1_2: false§Example: Trust additional root certificates
# In YAML format
certificate_verification:
additional_roots:
- file:
path: "/path/to/certificate.pem"
encoding: "pem"
- inline:
data: |
-----BEGIN CERTIFICATE-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA
-----END CERTIFICATE-----§Example: Disable certificate verification
# In YAML format
insecure:
skip_verification: trueFields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.crypto_provider: CryptoProviderConfigThe cryptographic stack used to secure the connection.
Refer to the documentation for CryptoProviderConfig
for more details.
allowed_versions: AllowedTlsVersionsConfigWhich TLS versions are allowed.
Refer to the documentation for AllowedTlsVersionsConfig
for more details.
certificate_verification: CertificateVerificationConfigThe mechanism used to verify server certificates.
Refer to the documentation for CertificateVerificationConfig
for more details.
insecure: InsecureTlsClientConfigDangerous configuration options that lower the security posture of your client.
These options should never be used in production scenarios. They are available for testing/development purposes only.
Implementations§
Source§impl TlsClientPolicyConfig
impl TlsClientPolicyConfig
Sourcepub fn rustls_0_23_config(&self) -> Result<ClientConfig, Rustls023ConfigError>
pub fn rustls_0_23_config(&self) -> Result<ClientConfig, Rustls023ConfigError>
Build a rustls::ClientConfig according to the specified configuration.
Trait Implementations§
Source§impl Clone for TlsClientPolicyConfig
impl Clone for TlsClientPolicyConfig
Source§fn clone(&self) -> TlsClientPolicyConfig
fn clone(&self) -> TlsClientPolicyConfig
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for TlsClientPolicyConfig
impl Debug for TlsClientPolicyConfig
Source§impl Default for TlsClientPolicyConfig
impl Default for TlsClientPolicyConfig
Source§fn default() -> TlsClientPolicyConfig
fn default() -> TlsClientPolicyConfig
Source§impl<'de> Deserialize<'de> for TlsClientPolicyConfig
impl<'de> Deserialize<'de> for TlsClientPolicyConfig
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Source§impl Serialize for TlsClientPolicyConfig
impl Serialize for TlsClientPolicyConfig
Auto Trait Implementations§
impl Freeze for TlsClientPolicyConfig
impl RefUnwindSafe for TlsClientPolicyConfig
impl Send for TlsClientPolicyConfig
impl Sync for TlsClientPolicyConfig
impl Unpin for TlsClientPolicyConfig
impl UnwindSafe for TlsClientPolicyConfig
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);