Files
google-apis-rs/rustls/client/trait.ClientSessionStore.html
2024-03-05 21:06:01 +01:00

65 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="A trait for the ability to store client session data, so that sessions can be resumed in future connections."><title>ClientSessionStore in rustls::client - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceSerif4-Regular-46f98efaafac5295.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Regular-018c141bf0843ffd.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/FiraSans-Medium-8f9a781e4970d388.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../static.files/SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2"><link rel="stylesheet" href="../../static.files/normalize-76eba96aa4d2e634.css"><link rel="stylesheet" href="../../static.files/rustdoc-ac92e1bbe349e143.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="rustls" data-themes="" data-resource-suffix="" data-rustdoc-version="1.76.0 (07dca489a 2024-02-04)" data-channel="1.76.0" data-search-js="search-2b6ce74ff89ae146.js" data-settings-js="settings-4313503d2e1961c2.js" ><script src="../../static.files/storage-f2adc0d6ca4d09fb.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-305769736d49e732.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-feafe1bb7466e4bd.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-16x16-8b506e7a72182f1c.png"><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-422f7d1d52889060.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-2c020d218678b618.svg"></head><body class="rustdoc trait"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button></nav><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../rustls/index.html">rustls</a><span class="version">0.21.7</span></h2></div><h2 class="location"><a href="#">ClientSessionStore</a></h2><div class="sidebar-elems"><section><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.insert_tls13_ticket">insert_tls13_ticket</a></li><li><a href="#tymethod.kx_hint">kx_hint</a></li><li><a href="#tymethod.remove_tls12_session">remove_tls12_session</a></li><li><a href="#tymethod.set_kx_hint">set_kx_hint</a></li><li><a href="#tymethod.set_tls12_session">set_tls12_session</a></li><li><a href="#tymethod.take_tls13_ticket">take_tls13_ticket</a></li><li><a href="#tymethod.tls12_session">tls12_session</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><h2><a href="index.html">In rustls::client</a></h2></div></nav><div class="sidebar-resizer"></div>
<main><div class="width-limiter"><nav class="sub"><form class="search-form"><span></span><div id="sidebar-button" tabindex="-1"><a href="../../rustls/all.html" title="show sidebar"></a></div><input class="search-input" name="search" aria-label="Run search in the documentation" autocomplete="off" spellcheck="false" placeholder="Click or press S to search, ? for more options…" type="search"><div id="help-button" tabindex="-1"><a href="../../help.html" title="help">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../static.files/wheel-7b819b6101059cd0.svg"></a></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1>Trait <a href="../index.html">rustls</a>::<wbr><a href="index.html">client</a>::<wbr><a class="trait" href="#">ClientSessionStore</a><button id="copy-path" title="Copy item path to clipboard"><img src="../../static.files/clipboard-7571035ce49a181d.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="src" href="../../src/rustls/client/client_conn.rs.html#40-83">source</a> · <button id="toggle-all-docs" title="collapse all docs">[<span>&#x2212;</span>]</button></span></div><pre class="rust item-decl"><code>pub trait ClientSessionStore: <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/1.76.0/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.set_kx_hint" class="fn">set_kx_hint</a>(&amp;self, server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>, group: <a class="enum" href="../internal/msgs/enums/enum.NamedGroup.html" title="enum rustls::internal::msgs::enums::NamedGroup">NamedGroup</a>);
<span class="item-spacer"></span> fn <a href="#tymethod.kx_hint" class="fn">kx_hint</a>(&amp;self, server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../internal/msgs/enums/enum.NamedGroup.html" title="enum rustls::internal::msgs::enums::NamedGroup">NamedGroup</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.set_tls12_session" class="fn">set_tls12_session</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>,
value: <a class="struct" href="../internal/msgs/persist/struct.Tls12ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls12ClientSessionValue">Tls12ClientSessionValue</a>
);
<span class="item-spacer"></span> fn <a href="#tymethod.tls12_session" class="fn">tls12_session</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../internal/msgs/persist/struct.Tls12ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls12ClientSessionValue">Tls12ClientSessionValue</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.remove_tls12_session" class="fn">remove_tls12_session</a>(&amp;self, server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>);
<span class="item-spacer"></span> fn <a href="#tymethod.insert_tls13_ticket" class="fn">insert_tls13_ticket</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>,
value: <a class="struct" href="../internal/msgs/persist/struct.Tls13ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls13ClientSessionValue">Tls13ClientSessionValue</a>
);
<span class="item-spacer"></span> fn <a href="#tymethod.take_tls13_ticket" class="fn">take_tls13_ticket</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../internal/msgs/persist/struct.Tls13ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls13ClientSessionValue">Tls13ClientSessionValue</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A trait for the ability to store client session data, so that sessions
can be resumed in future connections.</p>
<p>Generally all data in this interface should be treated as
<strong>highly sensitive</strong>, containing enough key material to break all security
of the corresponding session.</p>
<p><code>set_</code>, <code>insert_</code>, <code>remove_</code> and <code>take_</code> operations are mutating; this isnt
expressed in the type system to allow implementations freedom in
how to achieve interior mutability. <code>Mutex</code> is a common choice.</p>
</div></details><h2 id="required-methods" class="section-header">Required Methods<a href="#required-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="tymethod.set_kx_hint" class="method"><a class="src rightside" href="../../src/rustls/client/client_conn.rs.html#42">source</a><h4 class="code-header">fn <a href="#tymethod.set_kx_hint" class="fn">set_kx_hint</a>(&amp;self, server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>, group: <a class="enum" href="../internal/msgs/enums/enum.NamedGroup.html" title="enum rustls::internal::msgs::enums::NamedGroup">NamedGroup</a>)</h4></section></summary><div class="docblock"><p>Remember what <code>NamedGroup</code> the given server chose.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.kx_hint" class="method"><a class="src rightside" href="../../src/rustls/client/client_conn.rs.html#50">source</a><h4 class="code-header">fn <a href="#tymethod.kx_hint" class="fn">kx_hint</a>(&amp;self, server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="enum" href="../internal/msgs/enums/enum.NamedGroup.html" title="enum rustls::internal::msgs::enums::NamedGroup">NamedGroup</a>&gt;</h4></section></summary><div class="docblock"><p>This should return the value most recently passed to <code>set_kx_hint</code>
for the given <code>server_name</code>.</p>
<p>If <code>None</code> is returned, the caller chooses the first configured group,
and an extra round trip might happen if that choice is unsatisfactory
to the server.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.set_tls12_session" class="method"><a class="src rightside" href="../../src/rustls/client/client_conn.rs.html#55">source</a><h4 class="code-header">fn <a href="#tymethod.set_tls12_session" class="fn">set_tls12_session</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>,
value: <a class="struct" href="../internal/msgs/persist/struct.Tls12ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls12ClientSessionValue">Tls12ClientSessionValue</a>
)</h4></section></summary><div class="docblock"><p>Remember a TLS1.2 session.</p>
<p>At most one of these can be remembered at a time, per <code>server_name</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.tls12_session" class="method"><a class="src rightside" href="../../src/rustls/client/client_conn.rs.html#58">source</a><h4 class="code-header">fn <a href="#tymethod.tls12_session" class="fn">tls12_session</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../internal/msgs/persist/struct.Tls12ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls12ClientSessionValue">Tls12ClientSessionValue</a>&gt;</h4></section></summary><div class="docblock"><p>Get the most recently saved TLS1.2 session for <code>server_name</code> provided to <code>set_tls12_session</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.remove_tls12_session" class="method"><a class="src rightside" href="../../src/rustls/client/client_conn.rs.html#61">source</a><h4 class="code-header">fn <a href="#tymethod.remove_tls12_session" class="fn">remove_tls12_session</a>(&amp;self, server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>)</h4></section></summary><div class="docblock"><p>Remove and forget any saved TLS1.2 session for <code>server_name</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.insert_tls13_ticket" class="method"><a class="src rightside" href="../../src/rustls/client/client_conn.rs.html#70-74">source</a><h4 class="code-header">fn <a href="#tymethod.insert_tls13_ticket" class="fn">insert_tls13_ticket</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>,
value: <a class="struct" href="../internal/msgs/persist/struct.Tls13ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls13ClientSessionValue">Tls13ClientSessionValue</a>
)</h4></section></summary><div class="docblock"><p>Remember a TLS1.3 ticket that might be retrieved later from <code>take_tls13_ticket</code>, allowing
resumption of this session.</p>
<p>This can be called multiple times for a given session, allowing multiple independent tickets
to be valid at once. The number of times this is called is controlled by the server, so
implementations of this trait should apply a reasonable bound of how many items are stored
simultaneously.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.take_tls13_ticket" class="method"><a class="src rightside" href="../../src/rustls/client/client_conn.rs.html#79-82">source</a><h4 class="code-header">fn <a href="#tymethod.take_tls13_ticket" class="fn">take_tls13_ticket</a>(
&amp;self,
server_name: &amp;<a class="enum" href="enum.ServerName.html" title="enum rustls::client::ServerName">ServerName</a>
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.76.0/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="../internal/msgs/persist/struct.Tls13ClientSessionValue.html" title="struct rustls::internal::msgs::persist::Tls13ClientSessionValue">Tls13ClientSessionValue</a>&gt;</h4></section></summary><div class="docblock"><p>Return a TLS1.3 ticket previously provided to <code>add_tls13_ticket</code>.</p>
<p>Implementations of this trait must return each value provided to <code>add_tls13_ticket</code> <em>at most once</em>.</p>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-ClientSessionStore-for-ClientSessionMemoryCache" class="impl"><a class="src rightside" href="../../src/rustls/client/handy.rs.html#83-158">source</a><a href="#impl-ClientSessionStore-for-ClientSessionMemoryCache" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ClientSessionStore.html" title="trait rustls::client::ClientSessionStore">ClientSessionStore</a> for <a class="struct" href="struct.ClientSessionMemoryCache.html" title="struct rustls::client::ClientSessionMemoryCache">ClientSessionMemoryCache</a></h3></section></div><script src="../../trait.impl/rustls/client/client_conn/trait.ClientSessionStore.js" async></script></section></div></main></body></html>