Files
google-apis-rs/rustls/struct.ConfigBuilder.html
2024-03-05 21:06:01 +01:00

201 lines
64 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="Building a `ServerConfig` or `ClientConfig` in a linker-friendly and complete way."><title>ConfigBuilder in rustls - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="rustls" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc struct"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../rustls/index.html">rustls</a><span class="version">0.21.7</span></h2></div><h2 class="location"><a href="#">ConfigBuilder</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.with_cert_resolver">with_cert_resolver</a></li><li><a href="#method.with_certificate_transparency_logs">with_certificate_transparency_logs</a></li><li><a href="#method.with_cipher_suites">with_cipher_suites</a></li><li><a href="#method.with_client_auth_cert">with_client_auth_cert</a></li><li><a href="#method.with_client_auth_cert-1">with_client_auth_cert</a></li><li><a href="#method.with_client_cert_resolver">with_client_cert_resolver</a></li><li><a href="#method.with_client_cert_resolver-1">with_client_cert_resolver</a></li><li><a href="#method.with_client_cert_verifier">with_client_cert_verifier</a></li><li><a href="#method.with_kx_groups">with_kx_groups</a></li><li><a href="#method.with_no_client_auth">with_no_client_auth</a></li><li><a href="#method.with_no_client_auth-1">with_no_client_auth</a></li><li><a href="#method.with_no_client_auth-2">with_no_client_auth</a></li><li><a href="#method.with_protocol_versions">with_protocol_versions</a></li><li><a href="#method.with_root_certificates">with_root_certificates</a></li><li><a href="#method.with_safe_default_cipher_suites">with_safe_default_cipher_suites</a></li><li><a href="#method.with_safe_default_kx_groups">with_safe_default_kx_groups</a></li><li><a href="#method.with_safe_default_protocol_versions">with_safe_default_protocol_versions</a></li><li><a href="#method.with_safe_defaults">with_safe_defaults</a></li><li><a href="#method.with_single_cert">with_single_cert</a></li><li><a href="#method.with_single_cert-1">with_single_cert</a></li><li><a href="#method.with_single_cert-2">with_single_cert</a></li><li><a href="#method.with_single_cert_with_ocsp_and_sct">with_single_cert_with_ocsp_and_sct</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Clone-for-ConfigBuilder%3CSide,+State%3E">Clone</a></li><li><a href="#impl-Debug-for-ConfigBuilder%3CSide,+State%3E">Debug</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-ConfigBuilder%3CSide,+State%3E">RefUnwindSafe</a></li><li><a href="#impl-Send-for-ConfigBuilder%3CSide,+State%3E">Send</a></li><li><a href="#impl-Sync-for-ConfigBuilder%3CSide,+State%3E">Sync</a></li><li><a href="#impl-Unpin-for-ConfigBuilder%3CSide,+State%3E">Unpin</a></li><li><a href="#impl-UnwindSafe-for-ConfigBuilder%3CSide,+State%3E">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-T">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-T">Into&lt;U&gt;</a></li><li><a href="#impl-ToOwned-for-T">ToOwned</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In crate rustls</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../rustls/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Struct <a href="index.html">rustls</a>::<wbr><a class="struct" href="#">ConfigBuilder</a><button id="copy-path" title="Copy item path to clipboard"><img src="../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../src/rustls/builder.rs.html#97-100">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub struct ConfigBuilder&lt;Side: <a class="trait" href="trait.ConfigSide.html" title="trait rustls::ConfigSide">ConfigSide</a>, State&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Building a <a href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig"><code>ServerConfig</code></a> or <a href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig"><code>ClientConfig</code></a> in a linker-friendly and
complete way.</p>
<p>Linker-friendly: meaning unused cipher suites, protocol
versions, key exchange mechanisms, etc. can be discarded
by the linker as theyll be unreferenced.</p>
<p>Complete: the type system ensures all decisions required to run a
server or client have been made by the time the process finishes.</p>
<p>Example, to make a <a href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig"><code>ServerConfig</code></a>:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>ServerConfig::builder()
.with_safe_default_cipher_suites()
.with_safe_default_kx_groups()
.with_safe_default_protocol_versions()
.unwrap()
.with_no_client_auth()
.with_single_cert(certs, private_key)
.expect(<span class="string">"bad certificate/key"</span>);</code></pre></div>
<p>This may be shortened to:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>ServerConfig::builder()
.with_safe_defaults()
.with_no_client_auth()
.with_single_cert(certs, private_key)
.expect(<span class="string">"bad certificate/key"</span>);</code></pre></div>
<p>To make a <a href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig"><code>ClientConfig</code></a>:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>ClientConfig::builder()
.with_safe_default_cipher_suites()
.with_safe_default_kx_groups()
.with_safe_default_protocol_versions()
.unwrap()
.with_root_certificates(root_certs)
.with_client_auth_cert(certs, private_key)
.expect(<span class="string">"bad certificate/key"</span>);</code></pre></div>
<p>This may be shortened to:</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code>ClientConfig::builder()
.with_safe_defaults()
.with_root_certificates(root_certs)
.with_no_client_auth();</code></pre></div>
<p>The types used here fit together like this:</p>
<ol>
<li>Call <a href="client/struct.ClientConfig.html#method.builder" title="associated function rustls::client::ClientConfig::builder"><code>ClientConfig::builder()</code></a> or <a href="server/struct.ServerConfig.html#method.builder" title="associated function rustls::server::ServerConfig::builder"><code>ServerConfig::builder()</code></a> to initialize a builder.</li>
<li>You must make a decision on which cipher suites to use, typically
by calling <a href="struct.ConfigBuilder.html#method.with_safe_default_cipher_suites" title="method rustls::ConfigBuilder::with_safe_default_cipher_suites"><code>ConfigBuilder&lt;S, WantsCipherSuites&gt;::with_safe_default_cipher_suites()</code></a>.</li>
<li>Now you must make a decision
on key exchange groups: typically by calling
<a href="struct.ConfigBuilder.html#method.with_safe_default_kx_groups" title="method rustls::ConfigBuilder::with_safe_default_kx_groups"><code>ConfigBuilder&lt;S, WantsKxGroups&gt;::with_safe_default_kx_groups()</code></a>.</li>
<li>Now you must make
a decision on which protocol versions to support, typically by calling
<a href="struct.ConfigBuilder.html#method.with_safe_default_protocol_versions" title="method rustls::ConfigBuilder::with_safe_default_protocol_versions"><code>ConfigBuilder&lt;S, WantsVersions&gt;::with_safe_default_protocol_versions()</code></a>.</li>
<li>Now see <a href="struct.ConfigBuilder.html#impl-3"><code>ConfigBuilder&lt;ClientConfig, WantsVerifier&gt;</code></a> or
<a href="struct.ConfigBuilder.html#impl-6"><code>ConfigBuilder&lt;ServerConfig, WantsVerifier&gt;</code></a> for further steps.</li>
</ol>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CS,+WantsCipherSuites%3E" class="impl"><a class="src rightside" href="../src/rustls/builder.rs.html#121-163">source</a><a href="#impl-ConfigBuilder%3CS,+WantsCipherSuites%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S: <a class="trait" href="trait.ConfigSide.html" title="trait rustls::ConfigSide">ConfigSide</a>&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsCipherSuites.html" title="struct rustls::WantsCipherSuites">WantsCipherSuites</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_safe_defaults" class="method"><a class="src rightside" href="../src/rustls/builder.rs.html#131-140">source</a><h4 class="code-header">pub fn <a href="#method.with_safe_defaults" class="fn">with_safe_defaults</a>(self) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsVerifier.html" title="struct rustls::WantsVerifier">WantsVerifier</a>&gt;</h4></section></summary><div class="docblock"><p>Start side-specific config with defaults for underlying cryptography.</p>
<p>If used, this will enable all safe supported cipher suites (<a href="static.DEFAULT_CIPHER_SUITES.html" title="static rustls::DEFAULT_CIPHER_SUITES"><code>DEFAULT_CIPHER_SUITES</code></a>), all
safe supported key exchange groups (<a href="static.ALL_KX_GROUPS.html" title="static rustls::ALL_KX_GROUPS"><code>ALL_KX_GROUPS</code></a>) and all safe supported protocol
versions (<a href="static.DEFAULT_VERSIONS.html" title="static rustls::DEFAULT_VERSIONS"><code>DEFAULT_VERSIONS</code></a>).</p>
<p>These are safe defaults, useful for 99% of applications.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_cipher_suites" class="method"><a class="src rightside" href="../src/rustls/builder.rs.html#143-153">source</a><h4 class="code-header">pub fn <a href="#method.with_cipher_suites" class="fn">with_cipher_suites</a>(
self,
cipher_suites: &amp;[<a class="enum" href="enum.SupportedCipherSuite.html" title="enum rustls::SupportedCipherSuite">SupportedCipherSuite</a>]
) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsKxGroups.html" title="struct rustls::WantsKxGroups">WantsKxGroups</a>&gt;</h4></section></summary><div class="docblock"><p>Choose a specific set of cipher suites.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_safe_default_cipher_suites" class="method"><a class="src rightside" href="../src/rustls/builder.rs.html#160-162">source</a><h4 class="code-header">pub fn <a href="#method.with_safe_default_cipher_suites" class="fn">with_safe_default_cipher_suites</a>(self) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsKxGroups.html" title="struct rustls::WantsKxGroups">WantsKxGroups</a>&gt;</h4></section></summary><div class="docblock"><p>Choose the default set of cipher suites (<a href="static.DEFAULT_CIPHER_SUITES.html" title="static rustls::DEFAULT_CIPHER_SUITES"><code>DEFAULT_CIPHER_SUITES</code></a>).</p>
<p>Note that this default provides only high-quality suites: there is no need
to filter out low-, export- or NULL-strength cipher suites: rustls does not
implement these.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CS,+WantsKxGroups%3E" class="impl"><a class="src rightside" href="../src/rustls/builder.rs.html#173-194">source</a><a href="#impl-ConfigBuilder%3CS,+WantsKxGroups%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S: <a class="trait" href="trait.ConfigSide.html" title="trait rustls::ConfigSide">ConfigSide</a>&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsKxGroups.html" title="struct rustls::WantsKxGroups">WantsKxGroups</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_kx_groups" class="method"><a class="src rightside" href="../src/rustls/builder.rs.html#175-186">source</a><h4 class="code-header">pub fn <a href="#method.with_kx_groups" class="fn">with_kx_groups</a>(
self,
kx_groups: &amp;[&amp;'static <a class="struct" href="struct.SupportedKxGroup.html" title="struct rustls::SupportedKxGroup">SupportedKxGroup</a>]
) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsVersions.html" title="struct rustls::WantsVersions">WantsVersions</a>&gt;</h4></section></summary><div class="docblock"><p>Choose a specific set of key exchange groups.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_safe_default_kx_groups" class="method"><a class="src rightside" href="../src/rustls/builder.rs.html#191-193">source</a><h4 class="code-header">pub fn <a href="#method.with_safe_default_kx_groups" class="fn">with_safe_default_kx_groups</a>(self) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsVersions.html" title="struct rustls::WantsVersions">WantsVersions</a>&gt;</h4></section></summary><div class="docblock"><p>Choose the default set of key exchange groups (<a href="static.ALL_KX_GROUPS.html" title="static rustls::ALL_KX_GROUPS"><code>ALL_KX_GROUPS</code></a>).</p>
<p>This is a safe default: rustls doesnt implement any poor-quality groups.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CS,+WantsVersions%3E" class="impl"><a class="src rightside" href="../src/rustls/builder.rs.html#205-243">source</a><a href="#impl-ConfigBuilder%3CS,+WantsVersions%3E" class="anchor">§</a><h3 class="code-header">impl&lt;S: <a class="trait" href="trait.ConfigSide.html" title="trait rustls::ConfigSide">ConfigSide</a>&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsVersions.html" title="struct rustls::WantsVersions">WantsVersions</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_safe_default_protocol_versions" class="method"><a class="src rightside" href="../src/rustls/builder.rs.html#207-211">source</a><h4 class="code-header">pub fn <a href="#method.with_safe_default_protocol_versions" class="fn">with_safe_default_protocol_versions</a>(
self
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsVerifier.html" title="struct rustls::WantsVerifier">WantsVerifier</a>&gt;, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Accept the default protocol versions: both TLS1.2 and TLS1.3 are enabled.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_protocol_versions" class="method"><a class="src rightside" href="../src/rustls/builder.rs.html#214-242">source</a><h4 class="code-header">pub fn <a href="#method.with_protocol_versions" class="fn">with_protocol_versions</a>(
self,
versions: &amp;[&amp;'static <a class="struct" href="struct.SupportedProtocolVersion.html" title="struct rustls::SupportedProtocolVersion">SupportedProtocolVersion</a>]
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;S, <a class="struct" href="struct.WantsVerifier.html" title="struct rustls::WantsVerifier">WantsVerifier</a>&gt;, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Use a specific set of protocol versions.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CClientConfig,+WantsVerifier%3E" class="impl"><a class="src rightside" href="../src/rustls/client/builder.rs.html#16-49">source</a><a href="#impl-ConfigBuilder%3CClientConfig,+WantsVerifier%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="struct" href="struct.WantsVerifier.html" title="struct rustls::WantsVerifier">WantsVerifier</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_root_certificates" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#18-31">source</a><h4 class="code-header">pub fn <a href="#method.with_root_certificates" class="fn">with_root_certificates</a>(
self,
root_store: impl <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;<a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;<a class="struct" href="struct.RootCertStore.html" title="struct rustls::RootCertStore">RootCertStore</a>&gt;&gt;
) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="struct" href="client/struct.WantsTransparencyPolicyOrClientCert.html" title="struct rustls::client::WantsTransparencyPolicyOrClientCert">WantsTransparencyPolicyOrClientCert</a>&gt;</h4></section></summary><div class="docblock"><p>Choose how to verify server certificates.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CClientConfig,+WantsTransparencyPolicyOrClientCert%3E" class="impl"><a class="src rightside" href="../src/rustls/client/builder.rs.html#66-149">source</a><a href="#impl-ConfigBuilder%3CClientConfig,+WantsTransparencyPolicyOrClientCert%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="struct" href="client/struct.WantsTransparencyPolicyOrClientCert.html" title="struct rustls::client::WantsTransparencyPolicyOrClientCert">WantsTransparencyPolicyOrClientCert</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_certificate_transparency_logs" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#74-83">source</a><h4 class="code-header">pub fn <a href="#method.with_certificate_transparency_logs" class="fn">with_certificate_transparency_logs</a>(
self,
logs: &amp;'static [&amp;'static <a class="struct" href="../sct/struct.Log.html" title="struct sct::Log">Log</a>&lt;'_&gt;],
validation_deadline: <a class="struct" href="https://doc.rust-lang.org/1.76.0/std/time/struct.SystemTime.html" title="struct std::time::SystemTime">SystemTime</a>
) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="struct" href="client/struct.WantsClientCert.html" title="struct rustls::client::WantsClientCert">WantsClientCert</a>&gt;</h4></section></summary><div class="docblock"><p>Set Certificate Transparency logs to use for server certificate validation.</p>
<p>Because Certificate Transparency logs are sharded on a per-year basis and can be trusted or
distrusted relatively quickly, rustls stores a validation deadline. Server certificates will
be validated against the configured CT logs until the deadline expires. After the deadline,
certificates will no longer be validated, and a warning message will be logged. The deadline
may vary depending on how often you deploy builds with updated dependencies.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_client_auth_cert" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#92-99">source</a><h4 class="code-header">pub fn <a href="#method.with_client_auth_cert" class="fn">with_client_auth_cert</a>(
self,
cert_chain: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Certificate.html" title="struct rustls::Certificate">Certificate</a>&gt;,
key_der: <a class="struct" href="struct.PrivateKey.html" title="struct rustls::PrivateKey">PrivateKey</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Sets a single certificate chain and matching private key for use
in client authentication.</p>
<p><code>cert_chain</code> is a vector of DER-encoded certificates.
<code>key_der</code> is a DER-encoded RSA, ECDSA, or Ed25519 private key.</p>
<p>This function fails if <code>key_der</code> is invalid.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_single_cert" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#109-115">source</a><h4 class="code-header">pub fn <a href="#method.with_single_cert" class="fn">with_single_cert</a>(
self,
cert_chain: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Certificate.html" title="struct rustls::Certificate">Certificate</a>&gt;,
key_der: <a class="struct" href="struct.PrivateKey.html" title="struct rustls::PrivateKey">PrivateKey</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.21.4: Use <code>with_client_auth_cert</code> instead</span></div></span></summary><div class="docblock"><p>Sets a single certificate chain and matching private key for use
in client authentication.</p>
<p><code>cert_chain</code> is a vector of DER-encoded certificates.
<code>key_der</code> is a DER-encoded RSA, ECDSA, or Ed25519 private key.</p>
<p>This function fails if <code>key_der</code> is invalid.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_no_client_auth" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#118-121">source</a><h4 class="code-header">pub fn <a href="#method.with_no_client_auth" class="fn">with_no_client_auth</a>(self) -&gt; <a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a></h4></section></summary><div class="docblock"><p>Do not support client auth.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_client_cert_resolver" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#124-130">source</a><h4 class="code-header">pub fn <a href="#method.with_client_cert_resolver" class="fn">with_client_cert_resolver</a>(
self,
client_auth_cert_resolver: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;dyn <a class="trait" href="client/trait.ResolvesClientCert.html" title="trait rustls::client::ResolvesClientCert">ResolvesClientCert</a>&gt;
) -&gt; <a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a></h4></section></summary><div class="docblock"><p>Sets a custom <a href="client/trait.ResolvesClientCert.html" title="trait rustls::client::ResolvesClientCert"><code>ResolvesClientCert</code></a>.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CClientConfig,+WantsClientCert%3E" class="impl"><a class="src rightside" href="../src/rustls/client/builder.rs.html#163-222">source</a><a href="#impl-ConfigBuilder%3CClientConfig,+WantsClientCert%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="struct" href="client/struct.WantsClientCert.html" title="struct rustls::client::WantsClientCert">WantsClientCert</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_client_auth_cert-1" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#171-178">source</a><h4 class="code-header">pub fn <a href="#method.with_client_auth_cert-1" class="fn">with_client_auth_cert</a>(
self,
cert_chain: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Certificate.html" title="struct rustls::Certificate">Certificate</a>&gt;,
key_der: <a class="struct" href="struct.PrivateKey.html" title="struct rustls::PrivateKey">PrivateKey</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Sets a single certificate chain and matching private key for use
in client authentication.</p>
<p><code>cert_chain</code> is a vector of DER-encoded certificates.
<code>key_der</code> is a DER-encoded RSA, ECDSA, or Ed25519 private key.</p>
<p>This function fails if <code>key_der</code> is invalid.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_single_cert-1" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#188-194">source</a><h4 class="code-header">pub fn <a href="#method.with_single_cert-1" class="fn">with_single_cert</a>(
self,
cert_chain: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Certificate.html" title="struct rustls::Certificate">Certificate</a>&gt;,
key_der: <a class="struct" href="struct.PrivateKey.html" title="struct rustls::PrivateKey">PrivateKey</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a>, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.21.4: Use <code>with_client_auth_cert</code> instead</span></div></span></summary><div class="docblock"><p>Sets a single certificate chain and matching private key for use
in client authentication.</p>
<p><code>cert_chain</code> is a vector of DER-encoded certificates.
<code>key_der</code> is a DER-encoded RSA, ECDSA, or Ed25519 private key.</p>
<p>This function fails if <code>key_der</code> is invalid.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_no_client_auth-1" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#197-199">source</a><h4 class="code-header">pub fn <a href="#method.with_no_client_auth-1" class="fn">with_no_client_auth</a>(self) -&gt; <a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a></h4></section></summary><div class="docblock"><p>Do not support client auth.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_client_cert_resolver-1" class="method"><a class="src rightside" href="../src/rustls/client/builder.rs.html#202-221">source</a><h4 class="code-header">pub fn <a href="#method.with_client_cert_resolver-1" class="fn">with_client_cert_resolver</a>(
self,
client_auth_cert_resolver: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;dyn <a class="trait" href="client/trait.ResolvesClientCert.html" title="trait rustls::client::ResolvesClientCert">ResolvesClientCert</a>&gt;
) -&gt; <a class="struct" href="client/struct.ClientConfig.html" title="struct rustls::client::ClientConfig">ClientConfig</a></h4></section></summary><div class="docblock"><p>Sets a custom <a href="client/trait.ResolvesClientCert.html" title="trait rustls::client::ResolvesClientCert"><code>ResolvesClientCert</code></a>.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CServerConfig,+WantsVerifier%3E" class="impl"><a class="src rightside" href="../src/rustls/server/builder.rs.html#15-36">source</a><a href="#impl-ConfigBuilder%3CServerConfig,+WantsVerifier%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig">ServerConfig</a>, <a class="struct" href="struct.WantsVerifier.html" title="struct rustls::WantsVerifier">WantsVerifier</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_client_cert_verifier" class="method"><a class="src rightside" href="../src/rustls/server/builder.rs.html#17-30">source</a><h4 class="code-header">pub fn <a href="#method.with_client_cert_verifier" class="fn">with_client_cert_verifier</a>(
self,
client_cert_verifier: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;dyn ClientCertVerifier&gt;
) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig">ServerConfig</a>, <a class="struct" href="server/struct.WantsServerCert.html" title="struct rustls::server::WantsServerCert">WantsServerCert</a>&gt;</h4></section></summary><div class="docblock"><p>Choose how to verify client certificates.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_no_client_auth-2" class="method"><a class="src rightside" href="../src/rustls/server/builder.rs.html#33-35">source</a><h4 class="code-header">pub fn <a href="#method.with_no_client_auth-2" class="fn">with_no_client_auth</a>(self) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig">ServerConfig</a>, <a class="struct" href="server/struct.WantsServerCert.html" title="struct rustls::server::WantsServerCert">WantsServerCert</a>&gt;</h4></section></summary><div class="docblock"><p>Disable client authentication.</p>
</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-ConfigBuilder%3CServerConfig,+WantsServerCert%3E" class="impl"><a class="src rightside" href="../src/rustls/server/builder.rs.html#50-117">source</a><a href="#impl-ConfigBuilder%3CServerConfig,+WantsServerCert%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;<a class="struct" href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig">ServerConfig</a>, <a class="struct" href="server/struct.WantsServerCert.html" title="struct rustls::server::WantsServerCert">WantsServerCert</a>&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.with_single_cert-2" class="method"><a class="src rightside" href="../src/rustls/server/builder.rs.html#64-71">source</a><h4 class="code-header">pub fn <a href="#method.with_single_cert-2" class="fn">with_single_cert</a>(
self,
cert_chain: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Certificate.html" title="struct rustls::Certificate">Certificate</a>&gt;,
key_der: <a class="struct" href="struct.PrivateKey.html" title="struct rustls::PrivateKey">PrivateKey</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig">ServerConfig</a>, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Sets a single certificate chain and matching private key. This
certificate and key is used for all subsequent connections,
irrespective of things like SNI hostname.</p>
<p>Note that the end-entity certificate must have the
<a href="https://tools.ietf.org/html/rfc6125#section-4.1">Subject Alternative Name</a>
extension to describe, e.g., the valid DNS name. The <code>commonName</code> field is
disregarded.</p>
<p><code>cert_chain</code> is a vector of DER-encoded certificates.
<code>key_der</code> is a DER-encoded RSA, ECDSA, or Ed25519 private key.</p>
<p>This function fails if <code>key_der</code> is invalid.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_single_cert_with_ocsp_and_sct" class="method"><a class="src rightside" href="../src/rustls/server/builder.rs.html#84-94">source</a><h4 class="code-header">pub fn <a href="#method.with_single_cert_with_ocsp_and_sct" class="fn">with_single_cert_with_ocsp_and_sct</a>(
self,
cert_chain: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="struct.Certificate.html" title="struct rustls::Certificate">Certificate</a>&gt;,
key_der: <a class="struct" href="struct.PrivateKey.html" title="struct rustls::PrivateKey">PrivateKey</a>,
ocsp: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.u8.html">u8</a>&gt;,
scts: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.u8.html">u8</a>&gt;
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig">ServerConfig</a>, <a class="enum" href="enum.Error.html" title="enum rustls::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Sets a single certificate chain, matching private key, OCSP
response and SCTs. This certificate and key is used for all
subsequent connections, irrespective of things like SNI hostname.</p>
<p><code>cert_chain</code> is a vector of DER-encoded certificates.
<code>key_der</code> is a DER-encoded RSA, ECDSA, or Ed25519 private key.
<code>ocsp</code> is a DER-encoded OCSP response. Ignored if zero length.
<code>scts</code> is an <code>SignedCertificateTimestampList</code> encoding (see RFC6962)
and is ignored if empty.</p>
<p>This function fails if <code>key_der</code> is invalid.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.with_cert_resolver" class="method"><a class="src rightside" href="../src/rustls/server/builder.rs.html#97-116">source</a><h4 class="code-header">pub fn <a href="#method.with_cert_resolver" class="fn">with_cert_resolver</a>(
self,
cert_resolver: <a class="struct" href="https://doc.rust-lang.org/1.76.0/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;dyn <a class="trait" href="server/trait.ResolvesServerCert.html" title="trait rustls::server::ResolvesServerCert">ResolvesServerCert</a>&gt;
) -&gt; <a class="struct" href="server/struct.ServerConfig.html" title="struct rustls::server::ServerConfig">ServerConfig</a></h4></section></summary><div class="docblock"><p>Sets a custom <a href="server/trait.ResolvesServerCert.html" title="trait rustls::server::ResolvesServerCert"><code>ResolvesServerCert</code></a>.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Clone-for-ConfigBuilder%3CSide,+State%3E" class="impl"><a class="src rightside" href="../src/rustls/builder.rs.html#96">source</a><a href="#impl-Clone-for-ConfigBuilder%3CSide,+State%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Side: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> + <a class="trait" href="trait.ConfigSide.html" title="trait rustls::ConfigSide">ConfigSide</a>, State: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a> for <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.clone" class="method trait-impl"><a class="src rightside" href="../src/rustls/builder.rs.html#96">source</a><a href="#method.clone" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html#tymethod.clone" class="fn">clone</a>(&amp;self) -&gt; <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;</h4></section></summary><div class='docblock'>Returns a copy of the value. <a href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html#tymethod.clone">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_from" class="method trait-impl"><span class="rightside"><span class="since" title="Stable since Rust version 1.0.0">1.0.0</span> · <a class="src" href="https://doc.rust-lang.org/1.76.0/src/core/clone.rs.html#169">source</a></span><a href="#method.clone_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html#method.clone_from" class="fn">clone_from</a>(&amp;mut self, source: <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&amp;Self</a>)</h4></section></summary><div class='docblock'>Performs copy-assignment from <code>source</code>. <a href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html#method.clone_from">Read more</a></div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-Debug-for-ConfigBuilder%3CSide,+State%3E" class="impl"><a class="src rightside" href="../src/rustls/builder.rs.html#102-113">source</a><a href="#impl-Debug-for-ConfigBuilder%3CSide,+State%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Side: <a class="trait" href="trait.ConfigSide.html" title="trait rustls::ConfigSide">ConfigSide</a>, State: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a>&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> for <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.fmt" class="method trait-impl"><a class="src rightside" href="../src/rustls/builder.rs.html#103-112">source</a><a href="#method.fmt" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/fmt/trait.Debug.html#tymethod.fmt" class="fn">fmt</a>(&amp;self, f: &amp;mut <a class="struct" href="https://doc.rust-lang.org/1.76.0/core/fmt/struct.Formatter.html" title="struct core::fmt::Formatter">Formatter</a>&lt;'_&gt;) -&gt; <a class="type" href="https://doc.rust-lang.org/1.76.0/core/fmt/type.Result.html" title="type core::fmt::Result">Result</a></h4></section></summary><div class='docblock'>Formats the value using the given formatter. <a href="https://doc.rust-lang.org/1.76.0/core/fmt/trait.Debug.html#tymethod.fmt">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-ConfigBuilder%3CSide,+State%3E" class="impl"><a href="#impl-RefUnwindSafe-for-ConfigBuilder%3CSide,+State%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Side, State&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;<div class="where">where
Side: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,
State: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a>,</div></h3></section><section id="impl-Send-for-ConfigBuilder%3CSide,+State%3E" class="impl"><a href="#impl-Send-for-ConfigBuilder%3CSide,+State%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Side, State&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;<div class="where">where
Side: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,
State: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</div></h3></section><section id="impl-Sync-for-ConfigBuilder%3CSide,+State%3E" class="impl"><a href="#impl-Sync-for-ConfigBuilder%3CSide,+State%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Side, State&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;<div class="where">where
Side: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,
State: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>,</div></h3></section><section id="impl-Unpin-for-ConfigBuilder%3CSide,+State%3E" class="impl"><a href="#impl-Unpin-for-ConfigBuilder%3CSide,+State%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Side, State&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;<div class="where">where
Side: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,
State: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a>,</div></h3></section><section id="impl-UnwindSafe-for-ConfigBuilder%3CSide,+State%3E" class="impl"><a href="#impl-UnwindSafe-for-ConfigBuilder%3CSide,+State%3E" class="anchor">§</a><h3 class="code-header">impl&lt;Side, State&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.ConfigBuilder.html" title="struct rustls::ConfigBuilder">ConfigBuilder</a>&lt;Side, State&gt;<div class="where">where
Side: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,
State: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a>,</div></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/any.rs.html#140">source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/any.rs.html#141">source</a><a href="#method.type_id" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html#tymethod.type_id" class="fn">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/1.76.0/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></h4></section></summary><div class='docblock'>Gets the <code>TypeId</code> of <code>self</code>. <a href="https://doc.rust-lang.org/1.76.0/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/borrow.rs.html#208">source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/borrow.rs.html#210">source</a><a href="#method.borrow" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.76.0/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/borrow.rs.html#216">source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/borrow.rs.html#217">source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.76.0/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#763">source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#766">source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#747-749">source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#756">source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.76.0/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-ToOwned-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/alloc/borrow.rs.html#83-85">source</a><a href="#impl-ToOwned-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/alloc/borrow/trait.ToOwned.html" title="trait alloc::borrow::ToOwned">ToOwned</a> for T<div class="where">where
T: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/clone/trait.Clone.html" title="trait core::clone::Clone">Clone</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Owned" class="associatedtype trait-impl"><a href="#associatedtype.Owned" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.76.0/alloc/borrow/trait.ToOwned.html#associatedtype.Owned" class="associatedtype">Owned</a> = T</h4></section></summary><div class='docblock'>The resulting type after obtaining ownership.</div></details><details class="toggle method-toggle" open><summary><section id="method.to_owned" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/alloc/borrow.rs.html#88">source</a><a href="#method.to_owned" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned" class="fn">to_owned</a>(&amp;self) -&gt; T</h4></section></summary><div class='docblock'>Creates owned data from borrowed data, usually by cloning. <a href="https://doc.rust-lang.org/1.76.0/alloc/borrow/trait.ToOwned.html#tymethod.to_owned">Read more</a></div></details><details class="toggle method-toggle" open><summary><section id="method.clone_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/alloc/borrow.rs.html#92">source</a><a href="#method.clone_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/alloc/borrow/trait.ToOwned.html#method.clone_into" class="fn">clone_into</a>(&amp;self, target: <a class="primitive" href="https://doc.rust-lang.org/1.76.0/std/primitive.reference.html">&amp;mut T</a>)</h4></section></summary><div class='docblock'>Uses borrowed data to replace owned data, usually by cloning. <a href="https://doc.rust-lang.org/1.76.0/alloc/borrow/trait.ToOwned.html#method.clone_into">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#803-805">source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#810">source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#788-790">source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.76.0/src/core/convert/mod.rs.html#795">source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.76.0/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div></section></div></main></body></html>