blob: 9736abdaba6fab266ed87645fa771e2f540dda60 [file] [log] [blame]
<!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="A builder for `SslContext`s."><meta name="keywords" content="rust, rustlang, rust-lang, SslContextBuilder"><title>SslContextBuilder in openssl::ssl - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.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><a class="sidebar-logo" href="../../openssl/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../openssl/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">SslContextBuilder</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.add_client_ca">add_client_ca</a></li><li><a href="#method.add_custom_ext">add_custom_ext</a></li><li><a href="#method.add_extra_chain_cert">add_extra_chain_cert</a></li><li><a href="#method.as_ptr">as_ptr</a></li><li><a href="#method.build">build</a></li><li><a href="#method.cert_store">cert_store</a></li><li><a href="#method.cert_store_mut">cert_store_mut</a></li><li><a href="#method.check_private_key">check_private_key</a></li><li><a href="#method.clear_options">clear_options</a></li><li><a href="#method.from_ptr">from_ptr</a></li><li><a href="#method.max_proto_version">max_proto_version</a></li><li><a href="#method.min_proto_version">min_proto_version</a></li><li><a href="#method.new">new</a></li><li><a href="#method.options">options</a></li><li><a href="#method.set_alpn_protos">set_alpn_protos</a></li><li><a href="#method.set_alpn_select_callback">set_alpn_select_callback</a></li><li><a href="#method.set_ca_file">set_ca_file</a></li><li><a href="#method.set_cert_store">set_cert_store</a></li><li><a href="#method.set_certificate">set_certificate</a></li><li><a href="#method.set_certificate_chain_file">set_certificate_chain_file</a></li><li><a href="#method.set_certificate_file">set_certificate_file</a></li><li><a href="#method.set_cipher_list">set_cipher_list</a></li><li><a href="#method.set_ciphersuites">set_ciphersuites</a></li><li><a href="#method.set_client_ca_list">set_client_ca_list</a></li><li><a href="#method.set_client_hello_callback">set_client_hello_callback</a></li><li><a href="#method.set_cookie_generate_cb">set_cookie_generate_cb</a></li><li><a href="#method.set_cookie_verify_cb">set_cookie_verify_cb</a></li><li><a href="#method.set_default_verify_paths">set_default_verify_paths</a></li><li><a href="#method.set_ex_data">set_ex_data</a></li><li><a href="#method.set_get_session_callback">set_get_session_callback</a></li><li><a href="#method.set_groups_list">set_groups_list</a></li><li><a href="#method.set_keylog_callback">set_keylog_callback</a></li><li><a href="#method.set_max_early_data">set_max_early_data</a></li><li><a href="#method.set_max_proto_version">set_max_proto_version</a></li><li><a href="#method.set_min_proto_version">set_min_proto_version</a></li><li><a href="#method.set_mode">set_mode</a></li><li><a href="#method.set_new_session_callback">set_new_session_callback</a></li><li><a href="#method.set_num_tickets">set_num_tickets</a></li><li><a href="#method.set_options">set_options</a></li><li><a href="#method.set_private_key">set_private_key</a></li><li><a href="#method.set_private_key_file">set_private_key_file</a></li><li><a href="#method.set_psk_callback">set_psk_callback</a></li><li><a href="#method.set_psk_client_callback">set_psk_client_callback</a></li><li><a href="#method.set_psk_server_callback">set_psk_server_callback</a></li><li><a href="#method.set_read_ahead">set_read_ahead</a></li><li><a href="#method.set_remove_session_callback">set_remove_session_callback</a></li><li><a href="#method.set_servername_callback">set_servername_callback</a></li><li><a href="#method.set_session_cache_mode">set_session_cache_mode</a></li><li><a href="#method.set_session_cache_size">set_session_cache_size</a></li><li><a href="#method.set_session_id_context">set_session_id_context</a></li><li><a href="#method.set_sigalgs_list">set_sigalgs_list</a></li><li><a href="#method.set_stateless_cookie_generate_cb">set_stateless_cookie_generate_cb</a></li><li><a href="#method.set_stateless_cookie_verify_cb">set_stateless_cookie_verify_cb</a></li><li><a href="#method.set_status_callback">set_status_callback</a></li><li><a href="#method.set_tlsext_use_srtp">set_tlsext_use_srtp</a></li><li><a href="#method.set_tmp_dh">set_tmp_dh</a></li><li><a href="#method.set_tmp_dh_callback">set_tmp_dh_callback</a></li><li><a href="#method.set_tmp_ecdh">set_tmp_ecdh</a></li><li><a href="#method.set_verify">set_verify</a></li><li><a href="#method.set_verify_callback">set_verify_callback</a></li><li><a href="#method.set_verify_cert_store">set_verify_cert_store</a></li><li><a href="#method.set_verify_depth">set_verify_depth</a></li><li><a href="#method.verify_param">verify_param</a></li><li><a href="#method.verify_param_mut">verify_param_mut</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-SslContextBuilder">RefUnwindSafe</a></li><li><a href="#impl-Send-for-SslContextBuilder">Send</a></li><li><a href="#impl-Sync-for-SslContextBuilder">Sync</a></li><li><a href="#impl-Unpin-for-SslContextBuilder">Unpin</a></li><li><a href="#impl-UnwindSafe-for-SslContextBuilder">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-SslContextBuilder">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-SslContextBuilder">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-SslContextBuilder">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-SslContextBuilder">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-SslContextBuilder">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-SslContextBuilder">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-SslContextBuilder">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In openssl::ssl</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">openssl</a>::<wbr><a href="index.html">ssl</a>::<wbr><a class="struct" href="#">SslContextBuilder</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/openssl/ssl/mod.rs.html#706">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct SslContextBuilder(_);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A builder for <code>SslContext</code>s.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#708-1715">source</a><a href="#impl-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.new" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#711-718">source</a><h4 class="code-header">pub fn <a href="#method.new" class="fnname">new</a>(method: <a class="struct" href="struct.SslMethod.html" title="struct openssl::ssl::SslMethod">SslMethod</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new <code>SslContextBuilder</code>.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_new.html"><code>SSL_CTX_new</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_ptr" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#725-727">source</a><h4 class="code-header">pub unsafe fn <a href="#method.from_ptr" class="fnname">from_ptr</a>(ctx: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut </a><a class="enum" href="../../openssl_sys/openssl/handwritten/types/enum.SSL_CTX.html" title="enum openssl_sys::openssl::handwritten::types::SSL_CTX">SSL_CTX</a>) -&gt; <a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a></h4></section></summary><div class="docblock"><p>Creates an <code>SslContextBuilder</code> from a pointer to a raw OpenSSL value.</p>
<h5 id="safety"><a href="#safety">Safety</a></h5>
<p>The caller must ensure that the pointer is valid and uniquely owned by the builder.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_ptr" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#730-732">source</a><h4 class="code-header">pub fn <a href="#method.as_ptr" class="fnname">as_ptr</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut </a><a class="enum" href="../../openssl_sys/openssl/handwritten/types/enum.SSL_CTX.html" title="enum openssl_sys::openssl::handwritten::types::SSL_CTX">SSL_CTX</a></h4></section></summary><div class="docblock"><p>Returns a pointer to the raw OpenSSL value.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_verify" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#736-740">source</a><h4 class="code-header">pub fn <a href="#method.set_verify" class="fnname">set_verify</a>(&amp;mut self, mode: <a class="struct" href="struct.SslVerifyMode.html" title="struct openssl::ssl::SslVerifyMode">SslVerifyMode</a>)</h4></section></summary><div class="docblock"><p>Configures the certificate verification method for new connections.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_verify.html"><code>SSL_CTX_set_verify</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_verify_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#749-757">source</a><h4 class="code-header">pub fn <a href="#method.set_verify_callback" class="fnname">set_verify_callback</a>&lt;F&gt;(&amp;mut self, mode: <a class="struct" href="struct.SslVerifyMode.html" title="struct openssl::ssl::SslVerifyMode">SslVerifyMode</a>, verify: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, &amp;mut <a class="struct" href="../x509/struct.X509StoreContextRef.html" title="struct openssl::x509::X509StoreContextRef">X509StoreContextRef</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Configures the certificate verification method for new connections and
registers a verification callback.</p>
<p>The callback is passed a boolean indicating if OpenSSL’s internal verification succeeded as
well as a reference to the <code>X509StoreContext</code> which can be used to examine the certificate
chain. It should return a boolean indicating if verification succeeded.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_verify.html"><code>SSL_CTX_set_verify</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_servername_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#768-788">source</a><h4 class="code-header">pub fn <a href="#method.set_servername_callback" class="fnname">set_servername_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;mut <a class="struct" href="struct.SslAlert.html" title="struct openssl::ssl::SslAlert">SslAlert</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="struct.SniError.html" title="struct openssl::ssl::SniError">SniError</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Configures the server name indication (SNI) callback for new connections.</p>
<p>SNI is used to allow a single server to handle requests for multiple domains, each of which
has its own certificate chain and configuration.</p>
<p>Obtain the server name with the <code>servername</code> method and then set the corresponding context
with <code>set_ssl_context</code></p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_tlsext_servername_callback.html"><code>SSL_CTX_set_tlsext_servername_callback</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_verify_depth" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#794-798">source</a><h4 class="code-header">pub fn <a href="#method.set_verify_depth" class="fnname">set_verify_depth</a>(&amp;mut self, depth: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>)</h4></section></summary><div class="docblock"><p>Sets the certificate verification depth.</p>
<p>If the peer’s certificate chain is longer than this value, verification will fail.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_verify_depth.html"><code>SSL_CTX_set_verify_depth</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_verify_cert_store" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#805-813">source</a><h4 class="code-header">pub fn <a href="#method.set_verify_cert_store" class="fnname">set_verify_cert_store</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;cert_store: <a class="struct" href="../x509/store/struct.X509Store.html" title="struct openssl::x509::store::X509Store">X509Store</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets a custom certificate store for verifying peer certificates.</p>
<p>Requires OpenSSL 1.0.2 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set0_verify_cert_store.html"><code>SSL_CTX_set0_verify_cert_store</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_cert_store" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#817-822">source</a><h4 class="code-header">pub fn <a href="#method.set_cert_store" class="fnname">set_cert_store</a>(&amp;mut self, cert_store: <a class="struct" href="../x509/store/struct.X509Store.html" title="struct openssl::x509::store::X509Store">X509Store</a>)</h4></section></summary><div class="docblock"><p>Replaces the context’s certificate store.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_cert_store.html"><code>SSL_CTX_set_cert_store</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_read_ahead" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#831-835">source</a><h4 class="code-header">pub fn <a href="#method.set_read_ahead" class="fnname">set_read_ahead</a>(&amp;mut self, read_ahead: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Controls read ahead behavior.</p>
<p>If enabled, OpenSSL will read as much data as is available from the underlying stream,
instead of a single record at a time.</p>
<p>It has no effect when used with DTLS.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_read_ahead.html"><code>SSL_CTX_set_read_ahead</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_mode" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#839-844">source</a><h4 class="code-header">pub fn <a href="#method.set_mode" class="fnname">set_mode</a>(&amp;mut self, mode: <a class="struct" href="struct.SslMode.html" title="struct openssl::ssl::SslMode">SslMode</a>) -&gt; <a class="struct" href="struct.SslMode.html" title="struct openssl::ssl::SslMode">SslMode</a></h4></section></summary><div class="docblock"><p>Sets the mode used by the context, returning the previous mode.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_mode.html"><code>SSL_CTX_set_mode</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tmp_dh" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#848-850">source</a><h4 class="code-header">pub fn <a href="#method.set_tmp_dh" class="fnname">set_tmp_dh</a>(&amp;mut self, dh: &amp;<a class="struct" href="../dh/struct.DhRef.html" title="struct openssl::dh::DhRef">DhRef</a>&lt;<a class="enum" href="../pkey/enum.Params.html" title="enum openssl::pkey::Params">Params</a>&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the parameters to be used during ephemeral Diffie-Hellman key exchange.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_tmp_dh.html"><code>SSL_CTX_set_tmp_dh</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tmp_dh_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#859-871">source</a><h4 class="code-header">pub fn <a href="#method.set_tmp_dh_callback" class="fnname">set_tmp_dh_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="../dh/struct.Dh.html" title="struct openssl::dh::Dh">Dh</a>&lt;<a class="enum" href="../pkey/enum.Params.html" title="enum openssl::pkey::Params">Params</a>&gt;, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback which will generate parameters to be used during ephemeral Diffie-Hellman
key exchange.</p>
<p>The callback is provided with a reference to the <code>Ssl</code> for the session, as well as a boolean
indicating if the selected cipher is export-grade, and the key length. The export and key
length options are archaic and should be ignored in almost all cases.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_tmp_dh_callback.html"><code>SSL_CTX_set_tmp_dh_callback</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tmp_ecdh" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#875-877">source</a><h4 class="code-header">pub fn <a href="#method.set_tmp_ecdh" class="fnname">set_tmp_ecdh</a>(&amp;mut self, key: &amp;<a class="struct" href="../ec/struct.EcKeyRef.html" title="struct openssl::ec::EcKeyRef">EcKeyRef</a>&lt;<a class="enum" href="../pkey/enum.Params.html" title="enum openssl::pkey::Params">Params</a>&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the parameters to be used during ephemeral elliptic curve Diffie-Hellman key exchange.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_tmp_ecdh.html"><code>SSL_CTX_set_tmp_ecdh</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_default_verify_paths" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#905-907">source</a><h4 class="code-header">pub fn <a href="#method.set_default_verify_paths" class="fnname">set_default_verify_paths</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Use the default locations of trusted certificates for verification.</p>
<p>These locations are read from the <code>SSL_CERT_FILE</code> and <code>SSL_CERT_DIR</code> environment variables
if present, or defaults specified at OpenSSL build time otherwise.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_default_verify_paths.html"><code>SSL_CTX_set_default_verify_paths</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_ca_file" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#913-923">source</a><h4 class="code-header">pub fn <a href="#method.set_ca_file" class="fnname">set_ca_file</a>&lt;P:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>&gt;&gt;(&amp;mut self, file: P) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Loads trusted root certificates from a file.</p>
<p>The file should contain a sequence of PEM-formatted CA certificates.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_load_verify_locations.html"><code>SSL_CTX_load_verify_locations</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_client_ca_list" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#930-935">source</a><h4 class="code-header">pub fn <a href="#method.set_client_ca_list" class="fnname">set_client_ca_list</a>(&amp;mut self, list: <a class="struct" href="../stack/struct.Stack.html" title="struct openssl::stack::Stack">Stack</a>&lt;<a class="struct" href="../x509/struct.X509Name.html" title="struct openssl::x509::X509Name">X509Name</a>&gt;)</h4></section></summary><div class="docblock"><p>Sets the list of CA names sent to the client.</p>
<p>The CA certificates must still be added to the trust root - they are not automatically set
as trusted by this method.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_client_CA_list.html"><code>SSL_CTX_set_client_CA_list</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_client_ca" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#940-942">source</a><h4 class="code-header">pub fn <a href="#method.add_client_ca" class="fnname">add_client_ca</a>(&amp;mut self, cacert: &amp;<a class="struct" href="../x509/struct.X509Ref.html" title="struct openssl::x509::X509Ref">X509Ref</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Add the provided CA certificate to the list sent by the server to the client when
requesting client-side TLS authentication.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_add_client_CA.html"><code>SSL_CTX_add_client_CA</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_session_id_context" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#953-963">source</a><h4 class="code-header">pub fn <a href="#method.set_session_id_context" class="fnname">set_session_id_context</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;sid_ctx: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Set the context identifier for sessions.</p>
<p>This value identifies the server’s session cache to clients, telling them when they’re
able to reuse sessions. It should be set to a unique value per server, unless multiple
servers share a session cache.</p>
<p>This value should be set when using client certificates, or each request will fail its
handshake and need to be restarted.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_session_id_context.html"><code>SSL_CTX_set_session_id_context</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_certificate_file" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#971-985">source</a><h4 class="code-header">pub fn <a href="#method.set_certificate_file" class="fnname">set_certificate_file</a>&lt;P:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>&gt;&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;file: P,<br>&nbsp;&nbsp;&nbsp;&nbsp;file_type: <a class="struct" href="struct.SslFiletype.html" title="struct openssl::ssl::SslFiletype">SslFiletype</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Loads a leaf certificate from a file.</p>
<p>Only a single certificate will be loaded - use <code>add_extra_chain_cert</code> to add the remainder
of the certificate chain, or <code>set_certificate_chain_file</code> to load the entire chain from a
single file.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_use_certificate_file.html"><code>SSL_CTX_use_certificate_file</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_certificate_chain_file" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#993-1005">source</a><h4 class="code-header">pub fn <a href="#method.set_certificate_chain_file" class="fnname">set_certificate_chain_file</a>&lt;P:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>&gt;&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;file: P<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Loads a certificate chain from a file.</p>
<p>The file should contain a sequence of PEM-formatted certificates, the first being the leaf
certificate, and the remainder forming the chain of certificates up to and including the
trusted root certificate.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_use_certificate_chain_file.html"><code>SSL_CTX_use_certificate_chain_file</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_certificate" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1011-1013">source</a><h4 class="code-header">pub fn <a href="#method.set_certificate" class="fnname">set_certificate</a>(&amp;mut self, cert: &amp;<a class="struct" href="../x509/struct.X509Ref.html" title="struct openssl::x509::X509Ref">X509Ref</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the leaf certificate.</p>
<p>Use <code>add_extra_chain_cert</code> to add the remainder of the certificate chain.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_use_certificate.html"><code>SSL_CTX_use_certificate</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_extra_chain_cert" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1020-1026">source</a><h4 class="code-header">pub fn <a href="#method.add_extra_chain_cert" class="fnname">add_extra_chain_cert</a>(&amp;mut self, cert: <a class="struct" href="../x509/struct.X509.html" title="struct openssl::x509::X509">X509</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Appends a certificate to the certificate chain.</p>
<p>This chain should contain all certificates necessary to go from the certificate specified by
<code>set_certificate</code> to a trusted root.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_add_extra_chain_cert.html"><code>SSL_CTX_add_extra_chain_cert</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_private_key_file" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1030-1044">source</a><h4 class="code-header">pub fn <a href="#method.set_private_key_file" class="fnname">set_private_key_file</a>&lt;P:&nbsp;<a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/std/path/struct.Path.html" title="struct std::path::Path">Path</a>&gt;&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;file: P,<br>&nbsp;&nbsp;&nbsp;&nbsp;file_type: <a class="struct" href="struct.SslFiletype.html" title="struct openssl::ssl::SslFiletype">SslFiletype</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Loads the private key from a file.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_use_PrivateKey_file.html"><code>SSL_CTX_use_PrivateKey_file</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_private_key" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1048-1053">source</a><h4 class="code-header">pub fn <a href="#method.set_private_key" class="fnname">set_private_key</a>&lt;T&gt;(&amp;mut self, key: &amp;<a class="struct" href="../pkey/struct.PKeyRef.html" title="struct openssl::pkey::PKeyRef">PKeyRef</a>&lt;T&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../pkey/trait.HasPrivate.html" title="trait openssl::pkey::HasPrivate">HasPrivate</a>,</span></h4></section></summary><div class="docblock"><p>Sets the private key.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_use_PrivateKey.html"><code>SSL_CTX_use_PrivateKey</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_cipher_list" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1063-1072">source</a><h4 class="code-header">pub fn <a href="#method.set_cipher_list" class="fnname">set_cipher_list</a>(&amp;mut self, cipher_list: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the list of supported ciphers for protocols before TLSv1.3.</p>
<p>The <code>set_ciphersuites</code> method controls the cipher suites for TLSv1.3.</p>
<p>See <a href="https://www.openssl.org/docs/manmaster/apps/ciphers.html"><code>ciphers</code></a> for details on the format.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_cipher_list.html"><code>SSL_CTX_set_cipher_list</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_ciphersuites" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1084-1093">source</a><h4 class="code-header">pub fn <a href="#method.set_ciphersuites" class="fnname">set_ciphersuites</a>(&amp;mut self, cipher_list: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the list of supported ciphers for the TLSv1.3 protocol.</p>
<p>The <code>set_cipher_list</code> method controls the cipher suites for protocols before TLSv1.3.</p>
<p>The format consists of TLSv1.3 cipher suite names separated by <code>:</code> characters in order of
preference.</p>
<p>Requires OpenSSL 1.1.1 or LibreSSL 3.4.0 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_ciphersuites.html"><code>SSL_CTX_set_ciphersuites</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_options" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1111-1115">source</a><h4 class="code-header">pub fn <a href="#method.set_options" class="fnname">set_options</a>(&amp;mut self, option: <a class="struct" href="struct.SslOptions.html" title="struct openssl::ssl::SslOptions">SslOptions</a>) -&gt; <a class="struct" href="struct.SslOptions.html" title="struct openssl::ssl::SslOptions">SslOptions</a></h4></section></summary><div class="docblock"><p>Sets the options used by the context, returning the old set.</p>
<h5 id="note"><a href="#note">Note</a></h5>
<p>This <em>enables</em> the specified options, but does not disable unspecified options. Use
<code>clear_options</code> for that.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_options.html"><code>SSL_CTX_set_options</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.options" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1119-1122">source</a><h4 class="code-header">pub fn <a href="#method.options" class="fnname">options</a>(&amp;self) -&gt; <a class="struct" href="struct.SslOptions.html" title="struct openssl::ssl::SslOptions">SslOptions</a></h4></section></summary><div class="docblock"><p>Returns the options used by the context.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_get_options.html"><code>SSL_CTX_get_options</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.clear_options" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1126-1130">source</a><h4 class="code-header">pub fn <a href="#method.clear_options" class="fnname">clear_options</a>(&amp;mut self, option: <a class="struct" href="struct.SslOptions.html" title="struct openssl::ssl::SslOptions">SslOptions</a>) -&gt; <a class="struct" href="struct.SslOptions.html" title="struct openssl::ssl::SslOptions">SslOptions</a></h4></section></summary><div class="docblock"><p>Clears the options used by the context, returning the old set.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_clear_options.html"><code>SSL_CTX_clear_options</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_min_proto_version" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1140-1148">source</a><h4 class="code-header">pub fn <a href="#method.set_min_proto_version" class="fnname">set_min_proto_version</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.SslVersion.html" title="struct openssl::ssl::SslVersion">SslVersion</a>&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the minimum supported protocol version.</p>
<p>A value of <code>None</code> will enable protocol versions down to the lowest version supported by
OpenSSL.</p>
<p>Requires OpenSSL 1.1.0 or LibreSSL 2.6.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_min_proto_version.html"><code>SSL_CTX_set_min_proto_version</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_max_proto_version" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1158-1166">source</a><h4 class="code-header">pub fn <a href="#method.set_max_proto_version" class="fnname">set_max_proto_version</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;version: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.SslVersion.html" title="struct openssl::ssl::SslVersion">SslVersion</a>&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the maximum supported protocol version.</p>
<p>A value of <code>None</code> will enable protocol versions up to the highest version supported by
OpenSSL.</p>
<p>Requires OpenSSL 1.1.0 or or LibreSSL 2.6.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_max_proto_version.html"><code>SSL_CTX_set_max_proto_version</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.min_proto_version" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1176-1185">source</a><h4 class="code-header">pub fn <a href="#method.min_proto_version" class="fnname">min_proto_version</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.SslVersion.html" title="struct openssl::ssl::SslVersion">SslVersion</a>&gt;</h4></section></summary><div class="docblock"><p>Gets the minimum supported protocol version.</p>
<p>A value of <code>None</code> indicates that all versions down to the lowest version supported by
OpenSSL are enabled.</p>
<p>Requires OpenSSL 1.1.0g or LibreSSL 2.7.0 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_get_min_proto_version.html"><code>SSL_CTX_get_min_proto_version</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.max_proto_version" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1195-1204">source</a><h4 class="code-header">pub fn <a href="#method.max_proto_version" class="fnname">max_proto_version</a>(&amp;mut self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.SslVersion.html" title="struct openssl::ssl::SslVersion">SslVersion</a>&gt;</h4></section></summary><div class="docblock"><p>Gets the maximum supported protocol version.</p>
<p>A value of <code>None</code> indicates that all versions up to the highest version supported by
OpenSSL are enabled.</p>
<p>Requires OpenSSL 1.1.0g or LibreSSL 2.7.0 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_get_max_proto_version.html"><code>SSL_CTX_get_max_proto_version</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_alpn_protos" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1216-1231">source</a><h4 class="code-header">pub fn <a href="#method.set_alpn_protos" class="fnname">set_alpn_protos</a>(&amp;mut self, protocols: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the protocols to sent to the server for Application Layer Protocol Negotiation (ALPN).</p>
<p>The input must be in ALPN “wire format”. It consists of a sequence of supported protocol
names prefixed by their byte length. For example, the protocol list consisting of <code>spdy/1</code>
and <code>http/1.1</code> is encoded as <code>b&quot;\x06spdy/1\x08http/1.1&quot;</code>. The protocols are ordered by
preference.</p>
<p>Requires OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_alpn_protos.html"><code>SSL_CTX_set_alpn_protos</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tlsext_use_srtp" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1235-1247">source</a><h4 class="code-header">pub fn <a href="#method.set_tlsext_use_srtp" class="fnname">set_tlsext_use_srtp</a>(&amp;mut self, protocols: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Enables the DTLS extension “use_srtp” as defined in RFC5764.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_tlsext_use_srtp.html"><code>SSL_CTX_set_tlsext_use_srtp</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_alpn_select_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1263-1275">source</a><h4 class="code-header">pub fn <a href="#method.set_alpn_select_callback" class="fnname">set_alpn_select_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: for&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;&amp;'a [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], <a class="struct" href="struct.AlpnError.html" title="struct openssl::ssl::AlpnError">AlpnError</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback used by a server to select a protocol for Application Layer Protocol
Negotiation (ALPN).</p>
<p>The callback is provided with the client’s protocol list in ALPN wire format. See the
documentation for <a href="struct.SslContextBuilder.html#method.set_alpn_protos"><code>SslContextBuilder::set_alpn_protos</code></a> for details. It should return one
of those protocols on success. The <a href="fn.select_next_proto.html"><code>select_next_proto</code></a> function implements the standard
protocol selection algorithm.</p>
<p>Requires OpenSSL 1.0.2 or LibreSSL 2.6.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_alpn_select_cb.html"><code>SSL_CTX_set_alpn_select_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.check_private_key" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1279-1281">source</a><h4 class="code-header">pub fn <a href="#method.check_private_key" class="fnname">check_private_key</a>(&amp;self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Checks for consistency between the private key and certificate.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_check_private_key.html"><code>SSL_CTX_check_private_key</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cert_store" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1285-1287">source</a><h4 class="code-header">pub fn <a href="#method.cert_store" class="fnname">cert_store</a>(&amp;self) -&gt; &amp;<a class="struct" href="../x509/store/struct.X509StoreBuilderRef.html" title="struct openssl::x509::store::X509StoreBuilderRef">X509StoreBuilderRef</a></h4></section></summary><div class="docblock"><p>Returns a shared reference to the context’s certificate store.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_get_cert_store.html"><code>SSL_CTX_get_cert_store</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cert_store_mut" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1291-1293">source</a><h4 class="code-header">pub fn <a href="#method.cert_store_mut" class="fnname">cert_store_mut</a>(&amp;mut self) -&gt; &amp;mut <a class="struct" href="../x509/store/struct.X509StoreBuilderRef.html" title="struct openssl::x509::store::X509StoreBuilderRef">X509StoreBuilderRef</a></h4></section></summary><div class="docblock"><p>Returns a mutable reference to the context’s certificate store.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_get_cert_store.html"><code>SSL_CTX_get_cert_store</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.verify_param" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1300-1302">source</a><h4 class="code-header">pub fn <a href="#method.verify_param" class="fnname">verify_param</a>(&amp;self) -&gt; &amp;<a class="struct" href="../x509/verify/struct.X509VerifyParamRef.html" title="struct openssl::x509::verify::X509VerifyParamRef">X509VerifyParamRef</a></h4></section></summary><div class="docblock"><p>Returns a reference to the X509 verification configuration.</p>
<p>Requires OpenSSL 1.0.2 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_get0_param.html"><code>SSL_CTX_get0_param</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.verify_param_mut" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1309-1311">source</a><h4 class="code-header">pub fn <a href="#method.verify_param_mut" class="fnname">verify_param_mut</a>(&amp;mut self) -&gt; &amp;mut <a class="struct" href="../x509/verify/struct.X509VerifyParamRef.html" title="struct openssl::x509::verify::X509VerifyParamRef">X509VerifyParamRef</a></h4></section></summary><div class="docblock"><p>Returns a mutable reference to the X509 verification configuration.</p>
<p>Requires OpenSSL 1.0.2 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_get0_param.html"><code>SSL_CTX_get0_param</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_status_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1326-1338">source</a><h4 class="code-header">pub fn <a href="#method.set_status_callback" class="fnname">set_status_callback</a>&lt;F&gt;(&amp;mut self, callback: F) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback dealing with OCSP stapling.</p>
<p>On the client side, this callback is responsible for validating the OCSP status response
returned by the server. The status may be retrieved with the <code>SslRef::ocsp_status</code> method.
A response of <code>Ok(true)</code> indicates that the OCSP status is valid, and a response of
<code>Ok(false)</code> indicates that the OCSP status is invalid and the handshake should be
terminated.</p>
<p>On the server side, this callback is responsible for setting the OCSP status response to be
returned to clients. The status may be set with the <code>SslRef::set_ocsp_status</code> method. A
response of <code>Ok(true)</code> indicates that the OCSP status should be returned to the client, and
<code>Ok(false)</code> indicates that the status should not be returned to the client.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_tlsext_status_cb.html"><code>SSL_CTX_set_tlsext_status_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_psk_client_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1347-1358">source</a><h4 class="code-header">pub fn <a href="#method.set_psk_client_callback" class="fnname">set_psk_client_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;, &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback for providing an identity and pre-shared key for a TLS-PSK client.</p>
<p>The callback will be called with the SSL context, an identity hint if one was provided
by the server, a mutable slice for each of the identity and pre-shared key bytes. The
identity must be written as a null-terminated C string.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_psk_client_callback.html"><code>SSL_CTX_set_psk_client_callback</code></a>.</p>
</div></details><section id="method.set_psk_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1362-1370">source</a><h4 class="code-header">pub fn <a href="#method.set_psk_callback" class="fnname">set_psk_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;, &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section><span class="item-info"><div class="stab deprecated"><span class="emoji">👎</span><span>Deprecated since 0.10.10: renamed to <code>set_psk_client_callback</code></span></div></span><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_psk_server_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1379-1390">source</a><h4 class="code-header">pub fn <a href="#method.set_psk_server_callback" class="fnname">set_psk_server_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;, &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback for providing an identity and pre-shared key for a TLS-PSK server.</p>
<p>The callback will be called with the SSL context, an identity provided by the client,
and, a mutable slice for the pre-shared key bytes. The callback returns the number of
bytes in the pre-shared key.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_psk_server_callback.html"><code>SSL_CTX_set_psk_server_callback</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_new_session_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1406-1414">source</a><h4 class="code-header">pub fn <a href="#method.set_new_session_callback" class="fnname">set_new_session_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, <a class="struct" href="struct.SslSession.html" title="struct openssl::ssl::SslSession">SslSession</a>) + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback which is called when new sessions are negotiated.</p>
<p>This can be used by clients to implement session caching. While in TLSv1.2 the session is
available to access via <a href="struct.SslRef.html#method.session"><code>SslRef::session</code></a> immediately after the handshake completes, this
is not the case for TLSv1.3. There, a session is not generally available immediately, and
the server may provide multiple session tokens to the client over a single session. The new
session callback is a portable way to deal with both cases.</p>
<p>Note that session caching must be enabled for the callback to be invoked, and it defaults
off for clients. <a href="#method.set_session_cache_mode"><code>set_session_cache_mode</code></a> controls that behavior.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_sess_set_new_cb.html"><code>SSL_CTX_sess_set_new_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_remove_session_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1420-1431">source</a><h4 class="code-header">pub fn <a href="#method.set_remove_session_callback" class="fnname">set_remove_session_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;<a class="struct" href="struct.SslContextRef.html" title="struct openssl::ssl::SslContextRef">SslContextRef</a>, &amp;<a class="struct" href="struct.SslSessionRef.html" title="struct openssl::ssl::SslSessionRef">SslSessionRef</a>) + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback which is called when sessions are removed from the context.</p>
<p>Sessions can be removed because they have timed out or because they are considered faulty.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_sess_set_remove_cb.html"><code>SSL_CTX_sess_set_remove_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_get_session_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1444-1450">source</a><h4 class="code-header">pub unsafe fn <a href="#method.set_get_session_callback" class="fnname">set_get_session_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.SslSession.html" title="struct openssl::ssl::SslSession">SslSession</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback which is called when a client proposed to resume a session but it was not
found in the internal cache.</p>
<p>The callback is passed a reference to the session ID provided by the client. It should
return the session corresponding to that ID if available. This is only used for servers, not
clients.</p>
<h5 id="safety-1"><a href="#safety-1">Safety</a></h5>
<p>The returned <code>SslSession</code> must not be associated with a different <code>SslContext</code>.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_sess_set_get_cb.html"><code>SSL_CTX_sess_set_get_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_keylog_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1461-1469">source</a><h4 class="code-header">pub fn <a href="#method.set_keylog_callback" class="fnname">set_keylog_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;<a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the TLS key logging callback.</p>
<p>The callback is invoked whenever TLS key material is generated, and is passed a line of NSS
SSLKEYLOGFILE-formatted text. This can be used by tools like Wireshark to decrypt message
traffic. The line does not contain a trailing newline.</p>
<p>Requires OpenSSL 1.1.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_keylog_callback.html"><code>SSL_CTX_set_keylog_callback</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_session_cache_mode" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1475-1480">source</a><h4 class="code-header">pub fn <a href="#method.set_session_cache_mode" class="fnname">set_session_cache_mode</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;mode: <a class="struct" href="struct.SslSessionCacheMode.html" title="struct openssl::ssl::SslSessionCacheMode">SslSessionCacheMode</a><br>) -&gt; <a class="struct" href="struct.SslSessionCacheMode.html" title="struct openssl::ssl::SslSessionCacheMode">SslSessionCacheMode</a></h4></section></summary><div class="docblock"><p>Sets the session caching mode use for connections made with the context.</p>
<p>Returns the previous session caching mode.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_session_cache_mode.html"><code>SSL_CTX_set_session_cache_mode</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_stateless_cookie_generate_cb" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1489-1500">source</a><h4 class="code-header">pub fn <a href="#method.set_stateless_cookie_generate_cb" class="fnname">set_stateless_cookie_generate_cb</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback for generating an application cookie for TLS1.3
stateless handshakes.</p>
<p>The callback will be called with the SSL context and a slice into which the cookie
should be written. The callback should return the number of bytes written.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_stateless_cookie_generate_cb.html"><code>SSL_CTX_set_stateless_cookie_generate_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_stateless_cookie_verify_cb" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1512-1523">source</a><h4 class="code-header">pub fn <a href="#method.set_stateless_cookie_verify_cb" class="fnname">set_stateless_cookie_verify_cb</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback for verifying an application cookie for TLS1.3
stateless handshakes.</p>
<p>The callback will be called with the SSL context and the cookie supplied by the
client. It should return true if and only if the cookie is valid.</p>
<p>Note that the OpenSSL implementation independently verifies the integrity of
application cookies using an HMAC before invoking the supplied callback.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_stateless_cookie_verify_cb.html"><code>SSL_CTX_set_stateless_cookie_verify_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_cookie_generate_cb" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1531-1539">source</a><h4 class="code-header">pub fn <a href="#method.set_cookie_generate_cb" class="fnname">set_cookie_generate_cb</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback for generating a DTLSv1 cookie</p>
<p>The callback will be called with the SSL context and a slice into which the cookie
should be written. The callback should return the number of bytes written.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_cookie_generate_cb.html"><code>SSL_CTX_set_cookie_generate_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_cookie_verify_cb" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1547-1555">source</a><h4 class="code-header">pub fn <a href="#method.set_cookie_verify_cb" class="fnname">set_cookie_verify_cb</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a> + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets the callback for verifying a DTLSv1 cookie</p>
<p>The callback will be called with the SSL context and the cookie supplied by the
client. It should return true if and only if the cookie is valid.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_cookie_verify_cb.html"><code>SSL_CTX_set_cookie_verify_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_ex_data" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1562-1564">source</a><h4 class="code-header">pub fn <a href="#method.set_ex_data" class="fnname">set_ex_data</a>&lt;T&gt;(&amp;mut self, index: <a class="struct" href="../ex_data/struct.Index.html" title="struct openssl::ex_data::Index">Index</a>&lt;<a class="struct" href="struct.SslContext.html" title="struct openssl::ssl::SslContext">SslContext</a>, T&gt;, data: T)</h4></section></summary><div class="docblock"><p>Sets the extra data at the specified index.</p>
<p>This can be used to provide data to callbacks registered with the context. Use the
<code>SslContext::new_ex_index</code> method to create an <code>Index</code>.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_ex_data.html"><code>SSL_CTX_set_ex_data</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.add_custom_ext" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1579-1626">source</a><h4 class="code-header">pub fn <a href="#method.add_custom_ext" class="fnname">add_custom_ext</a>&lt;AddFn, ParseFn, T&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;ext_type: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;context: <a class="struct" href="struct.ExtensionContext.html" title="struct openssl::ssl::ExtensionContext">ExtensionContext</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;add_cb: AddFn,<br>&nbsp;&nbsp;&nbsp;&nbsp;parse_cb: ParseFn<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;AddFn: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, <a class="struct" href="struct.ExtensionContext.html" title="struct openssl::ssl::ExtensionContext">ExtensionContext</a>, <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, &amp;<a class="struct" href="../x509/struct.X509Ref.html" title="struct openssl::x509::X509Ref">X509Ref</a>)&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;T&gt;, <a class="struct" href="struct.SslAlert.html" title="struct openssl::ssl::SslAlert">SslAlert</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,<br>&nbsp;&nbsp;&nbsp;&nbsp;ParseFn: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, <a class="struct" href="struct.ExtensionContext.html" title="struct openssl::ssl::ExtensionContext">ExtensionContext</a>, &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;(<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, &amp;<a class="struct" href="../x509/struct.X509Ref.html" title="struct openssl::x509::X509Ref">X509Ref</a>)&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="struct.SslAlert.html" title="struct openssl::ssl::SslAlert">SslAlert</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Adds a custom extension for a TLS/DTLS client or server for all supported protocol versions.</p>
<p>Requires OpenSSL 1.1.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_add_custom_ext.html"><code>SSL_CTX_add_custom_ext</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_max_early_data" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1635-1641">source</a><h4 class="code-header">pub fn <a href="#method.set_max_early_data" class="fnname">set_max_early_data</a>(&amp;mut self, bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the maximum amount of early data that will be accepted on incoming connections.</p>
<p>Defaults to 0.</p>
<p>Requires OpenSSL 1.1.1 or LibreSSL 3.4.0 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_max_early_data.html"><code>SSL_CTX_set_max_early_data</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_client_hello_callback" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1648-1663">source</a><h4 class="code-header">pub fn <a href="#method.set_client_hello_callback" class="fnname">set_client_hello_callback</a>&lt;F&gt;(&amp;mut self, callback: F)<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;F: <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;mut <a class="struct" href="struct.SslRef.html" title="struct openssl::ssl::SslRef">SslRef</a>, &amp;mut <a class="struct" href="struct.SslAlert.html" title="struct openssl::ssl::SslAlert">SslAlert</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.ClientHelloResponse.html" title="struct openssl::ssl::ClientHelloResponse">ClientHelloResponse</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt; + 'static + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>,</span></h4></section></summary><div class="docblock"><p>Sets a callback which will be invoked just after the client’s hello message is received.</p>
<p>Requires OpenSSL 1.1.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_client_hello_cb.html"><code>SSL_CTX_set_client_hello_cb</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_session_cache_size" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1670-1674">source</a><h4 class="code-header">pub fn <a href="#method.set_session_cache_size" class="fnname">set_session_cache_size</a>(&amp;mut self, size: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i32.html">i32</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.i64.html">i64</a></h4></section></summary><div class="docblock"><p>Sets the context’s session cache size limit, returning the previous limit.</p>
<p>A value of 0 means that the cache size is unbounded.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_sess_set_cache_size.html"><code>SSL_CTX_sess_set_cache_size</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_sigalgs_list" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1681-1687">source</a><h4 class="code-header">pub fn <a href="#method.set_sigalgs_list" class="fnname">set_sigalgs_list</a>(&amp;mut self, sigalgs: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the context’s supported signature algorithms.</p>
<p>Requires OpenSSL 1.0.2 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_sigalgs_list.html"><code>SSL_CTX_set1_sigalgs_list</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_groups_list" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1694-1699">source</a><h4 class="code-header">pub fn <a href="#method.set_groups_list" class="fnname">set_groups_list</a>(&amp;mut self, groups: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the context’s supported elliptic curve groups.</p>
<p>Requires OpenSSL 1.1.1 or LibreSSL 2.5.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set1_groups_list.html"><code>SSL_CTX_set1_groups_list</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_num_tickets" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1707-1709">source</a><h4 class="code-header">pub fn <a href="#method.set_num_tickets" class="fnname">set_num_tickets</a>(&amp;mut self, num_tickets: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the number of TLS 1.3 session tickets that will be sent to a client after a full
handshake.</p>
<p>Requires OpenSSL 1.1.1 or newer.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/SSL_CTX_set_num_tickets.html"><code>SSL_CTX_set_num_tickets</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.build" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/ssl/mod.rs.html#1712-1714">source</a><h4 class="code-header">pub fn <a href="#method.build" class="fnname">build</a>(self) -&gt; <a class="struct" href="struct.SslContext.html" title="struct openssl::ssl::SslContext">SslContext</a></h4></section></summary><div class="docblock"><p>Consumes the builder, returning a new <code>SslContext</code>.</p>
</div></details></div></details></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><section id="impl-RefUnwindSafe-for-SslContextBuilder" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a></h3></section><section id="impl-Send-for-SslContextBuilder" class="impl has-srclink"><a href="#impl-Send-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a></h3></section><section id="impl-Sync-for-SslContextBuilder" class="impl has-srclink"><a href="#impl-Sync-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a></h3></section><section id="impl-Unpin-for-SslContextBuilder" class="impl has-srclink"><a href="#impl-Unpin-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a></h3></section><section id="impl-UnwindSafe-for-SslContextBuilder" class="impl has-srclink"><a href="#impl-UnwindSafe-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.SslContextBuilder.html" title="struct openssl::ssl::SslContextBuilder">SslContextBuilder</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/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/nightly/core/any/trait.Any.html#tymethod.type_id">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">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/nightly/core/convert/trait.From.html" title="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/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="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-SslContextBuilder" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-SslContextBuilder" class="anchor"></a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/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/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/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/nightly/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/nightly/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><div id="rustdoc-vars" data-root-path="../../" data-current-crate="openssl" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>