deploy: 38de73606895ba2c088b840d20a561ca225e4900

This commit is contained in:
Frando
2026-02-03 13:24:51 +00:00
parent 2dbc726bf1
commit 01c9382248
528 changed files with 1488 additions and 1464 deletions
+1 -1
View File
@@ -1,2 +1,2 @@
<!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="Logic for controlling the rate at which data is sent"><title>iroh_quinn::congestion - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module congestion</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module congestion</a></h2><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#traits" title="Traits">Traits</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a></div><h1>Module <span>congestion</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Logic for controlling the rate at which data is sent</p>
<!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="Logic for controlling the rate at which data is sent"><title>iroh_quinn::congestion - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module congestion</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module congestion</a></h2><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#traits" title="Traits">Traits</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a></div><h1>Module <span>congestion</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/lib.rs.html#97">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Logic for controlling the rate at which data is sent</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.Bbr.html" title="struct iroh_quinn::congestion::Bbr">Bbr</a></dt><dd>Experimental! Use at your own risk.</dd><dt><a class="struct" href="struct.BbrConfig.html" title="struct iroh_quinn::congestion::BbrConfig">BbrConfig</a></dt><dd>Configuration for the <a href="struct.Bbr.html" title="struct iroh_quinn::congestion::Bbr"><code>Bbr</code></a> congestion controller</dd><dt><a class="struct" href="struct.ControllerMetrics.html" title="struct iroh_quinn::congestion::ControllerMetrics">Controller<wbr>Metrics</a></dt><dd>Common congestion controller metrics</dd><dt><a class="struct" href="struct.Cubic.html" title="struct iroh_quinn::congestion::Cubic">Cubic</a></dt><dd>The RFC8312 congestion controller, as widely used for TCP</dd><dt><a class="struct" href="struct.CubicConfig.html" title="struct iroh_quinn::congestion::CubicConfig">Cubic<wbr>Config</a></dt><dd>Configuration for the <code>Cubic</code> congestion controller</dd><dt><a class="struct" href="struct.NewReno.html" title="struct iroh_quinn::congestion::NewReno">NewReno</a></dt><dd>A simple, standard congestion controller</dd><dt><a class="struct" href="struct.NewRenoConfig.html" title="struct iroh_quinn::congestion::NewRenoConfig">NewReno<wbr>Config</a></dt><dd>Configuration for the <code>NewReno</code> congestion controller</dd></dl><h2 id="traits" class="section-header">Traits<a href="#traits" class="anchor">§</a></h2><dl class="item-table"><dt><a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a></dt><dd>Common interface for different congestion controllers</dd><dt><a class="trait" href="trait.ControllerFactory.html" title="trait iroh_quinn::congestion::ControllerFactory">Controller<wbr>Factory</a></dt><dd>Constructs controllers on demand</dd></dl></section></div></main></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
<!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="Common interface for different congestion controllers"><title>Controller in iroh_quinn::congestion - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">Controller</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Controller</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.clone_box" title="clone_box">clone_box</a></li><li><a href="#tymethod.initial_window" title="initial_window">initial_window</a></li><li><a href="#tymethod.into_any" title="into_any">into_any</a></li><li><a href="#tymethod.on_congestion_event" title="on_congestion_event">on_congestion_event</a></li><li><a href="#tymethod.on_mtu_update" title="on_mtu_update">on_mtu_update</a></li><li><a href="#tymethod.window" title="window">window</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.metrics" title="metrics">metrics</a></li><li><a href="#method.on_ack" title="on_ack">on_ack</a></li><li><a href="#method.on_end_acks" title="on_end_acks">on_end_acks</a></li><li><a href="#method.on_sent" title="on_sent">on_sent</a></li><li><a href="#method.on_spurious_congestion_event" title="on_spurious_congestion_event">on_spurious_congestion_event</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>congestion</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">congestion</a></div><h1>Trait <span class="trait">Controller</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait Controller:
<!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="Common interface for different congestion controllers"><title>Controller in iroh_quinn::congestion - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">Controller</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Controller</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.clone_box" title="clone_box">clone_box</a></li><li><a href="#tymethod.initial_window" title="initial_window">initial_window</a></li><li><a href="#tymethod.into_any" title="into_any">into_any</a></li><li><a href="#tymethod.on_congestion_event" title="on_congestion_event">on_congestion_event</a></li><li><a href="#tymethod.on_mtu_update" title="on_mtu_update">on_mtu_update</a></li><li><a href="#tymethod.window" title="window">window</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.metrics" title="metrics">metrics</a></li><li><a href="#method.on_ack" title="on_ack">on_ack</a></li><li><a href="#method.on_end_acks" title="on_end_acks">on_end_acks</a></li><li><a href="#method.on_sent" title="on_sent">on_sent</a></li><li><a href="#method.on_spurious_congestion_event" title="on_spurious_congestion_event">on_spurious_congestion_event</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>congestion</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">congestion</a></div><h1>Trait <span class="trait">Controller</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/congestion.rs.html#17">Source</a> </span></div><pre class="rust item-decl"><code>pub trait Controller:
<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>
+ <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/fmt/trait.Debug.html" title="trait core::fmt::Debug">Debug</a> {
@@ -25,7 +25,7 @@
sent: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
app_limited: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
rtt: &amp;RttEstimator,
rtt: &amp;<a class="struct" href="../../iroh_quinn_proto/connection/paths/struct.RttEstimator.html" title="struct iroh_quinn_proto::connection::paths::RttEstimator">RttEstimator</a>,
) { ... }
<span class="item-spacer"></span> fn <a href="#method.on_end_acks" class="fn">on_end_acks</a>(
&amp;mut self,
@@ -37,7 +37,7 @@
<span class="item-spacer"></span> fn <a href="#method.on_spurious_congestion_event" class="fn">on_spurious_congestion_event</a>(&amp;mut self) { ... }
<span class="item-spacer"></span> fn <a href="#method.metrics" class="fn">metrics</a>(&amp;self) -&gt; <a class="struct" href="struct.ControllerMetrics.html" title="struct iroh_quinn::congestion::ControllerMetrics">ControllerMetrics</a> { ... }
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Common interface for different congestion controllers</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.on_congestion_event" class="method"><h4 class="code-header">fn <a href="#tymethod.on_congestion_event" class="fn">on_congestion_event</a>(
</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.on_congestion_event" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#54-61">Source</a><h4 class="code-header">fn <a href="#tymethod.on_congestion_event" class="fn">on_congestion_event</a>(
&amp;mut self,
now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
sent: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
@@ -49,31 +49,31 @@
congestion threshold period ending when the most recent packet in this batch was sent were
lost.
<code>lost_bytes</code> indicates how many bytes were lost. This value will be 0 for ECN triggers.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.on_mtu_update" class="method"><h4 class="code-header">fn <a href="#tymethod.on_mtu_update" class="fn">on_mtu_update</a>(&amp;mut self, new_mtu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>)</h4></section></summary><div class="docblock"><p>The known MTU for the current network path has been updated</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.window" class="method"><h4 class="code-header">fn <a href="#tymethod.window" class="fn">window</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Number of ack-eliciting bytes that may be in flight</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.clone_box" class="method"><h4 class="code-header">fn <a href="#tymethod.clone_box" class="fn">clone_box</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a>&gt;</h4></section></summary><div class="docblock"><p>Duplicate the controllers state</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.initial_window" class="method"><h4 class="code-header">fn <a href="#tymethod.initial_window" class="fn">initial_window</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Initial congestion window</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.into_any" class="method"><h4 class="code-header">fn <a href="#tymethod.into_any" class="fn">into_any</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;Self&gt;) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>&gt;</h4></section></summary><div class="docblock"><p>Returns Self for use in down-casting to extract implementation details</p>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.on_sent" class="method"><h4 class="code-header">fn <a href="#method.on_sent" class="fn">on_sent</a>(&amp;mut self, now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>, bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, last_packet_number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>One or more packets were just sent</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.on_ack" class="method"><h4 class="code-header">fn <a href="#method.on_ack" class="fn">on_ack</a>(
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.on_mtu_update" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#70">Source</a><h4 class="code-header">fn <a href="#tymethod.on_mtu_update" class="fn">on_mtu_update</a>(&amp;mut self, new_mtu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>)</h4></section></summary><div class="docblock"><p>The known MTU for the current network path has been updated</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.window" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#73">Source</a><h4 class="code-header">fn <a href="#tymethod.window" class="fn">window</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Number of ack-eliciting bytes that may be in flight</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.clone_box" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#85">Source</a><h4 class="code-header">fn <a href="#tymethod.clone_box" class="fn">clone_box</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a>&gt;</h4></section></summary><div class="docblock"><p>Duplicate the controllers state</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.initial_window" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#88">Source</a><h4 class="code-header">fn <a href="#tymethod.initial_window" class="fn">initial_window</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Initial congestion window</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.into_any" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#91">Source</a><h4 class="code-header">fn <a href="#tymethod.into_any" class="fn">into_any</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;Self&gt;) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>&gt;</h4></section></summary><div class="docblock"><p>Returns Self for use in down-casting to extract implementation details</p>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.on_sent" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#20">Source</a><h4 class="code-header">fn <a href="#method.on_sent" class="fn">on_sent</a>(&amp;mut self, now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>, bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>, last_packet_number: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>)</h4></section></summary><div class="docblock"><p>One or more packets were just sent</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.on_ack" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#27-34">Source</a><h4 class="code-header">fn <a href="#method.on_ack" class="fn">on_ack</a>(
&amp;mut self,
now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
sent: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
bytes: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
app_limited: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
rtt: &amp;RttEstimator,
rtt: &amp;<a class="struct" href="../../iroh_quinn_proto/connection/paths/struct.RttEstimator.html" title="struct iroh_quinn_proto::connection::paths::RttEstimator">RttEstimator</a>,
)</h4></section></summary><div class="docblock"><p>Packet deliveries were confirmed</p>
<p><code>app_limited</code> indicates whether the connection was blocked on outgoing
application data prior to receiving these acknowledgements.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.on_end_acks" class="method"><h4 class="code-header">fn <a href="#method.on_end_acks" class="fn">on_end_acks</a>(
</div></details><details class="toggle method-toggle" open><summary><section id="method.on_end_acks" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#39-45">Source</a><h4 class="code-header">fn <a href="#method.on_end_acks" class="fn">on_end_acks</a>(
&amp;mut self,
now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>,
in_flight: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
app_limited: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>,
largest_packet_num_acked: <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.u64.html">u64</a>&gt;,
)</h4></section></summary><div class="docblock"><p>Packets are acked in batches, all with the same <code>now</code> argument. This indicates one of those batches has completed.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.on_spurious_congestion_event" class="method"><h4 class="code-header">fn <a href="#method.on_spurious_congestion_event" class="fn">on_spurious_congestion_event</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Packets were incorrectly deemed lost</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.on_spurious_congestion_event" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#67">Source</a><h4 class="code-header">fn <a href="#method.on_spurious_congestion_event" class="fn">on_spurious_congestion_event</a>(&amp;mut self)</h4></section></summary><div class="docblock"><p>Packets were incorrectly deemed lost</p>
<p>This function is called when all packets that were deemed lost (for instance because
of packet reordering) are acknowledged after the congestion event was raised.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.metrics" class="method"><h4 class="code-header">fn <a href="#method.metrics" class="fn">metrics</a>(&amp;self) -&gt; <a class="struct" href="struct.ControllerMetrics.html" title="struct iroh_quinn::congestion::ControllerMetrics">ControllerMetrics</a></h4></section></summary><div class="docblock"><p>Retrieve implementation-specific metrics used to populate <code>qlog</code> traces when they are enabled</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-Controller-for-Bbr" class="impl"><a href="#impl-Controller-for-Bbr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a> for <a class="struct" href="struct.Bbr.html" title="struct iroh_quinn::congestion::Bbr">Bbr</a></h3></section><section id="impl-Controller-for-Cubic" class="impl"><a href="#impl-Controller-for-Cubic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a> for <a class="struct" href="struct.Cubic.html" title="struct iroh_quinn::congestion::Cubic">Cubic</a></h3></section><section id="impl-Controller-for-NewReno" class="impl"><a href="#impl-Controller-for-NewReno" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a> for <a class="struct" href="struct.NewReno.html" title="struct iroh_quinn::congestion::NewReno">NewReno</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/congestion/trait.Controller.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details><details class="toggle method-toggle" open><summary><section id="method.metrics" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#76">Source</a><h4 class="code-header">fn <a href="#method.metrics" class="fn">metrics</a>(&amp;self) -&gt; <a class="struct" href="struct.ControllerMetrics.html" title="struct iroh_quinn::congestion::ControllerMetrics">ControllerMetrics</a></h4></section></summary><div class="docblock"><p>Retrieve implementation-specific metrics used to populate <code>qlog</code> traces when they are enabled</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-Controller-for-Bbr" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion/bbr/mod.rs.html#393">Source</a><a href="#impl-Controller-for-Bbr" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a> for <a class="struct" href="struct.Bbr.html" title="struct iroh_quinn::congestion::Bbr">Bbr</a></h3></section><section id="impl-Controller-for-Cubic" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion/cubic.rs.html#104">Source</a><a href="#impl-Controller-for-Cubic" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a> for <a class="struct" href="struct.Cubic.html" title="struct iroh_quinn::congestion::Cubic">Cubic</a></h3></section><section id="impl-Controller-for-NewReno" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion/new_reno.rs.html#43">Source</a><a href="#impl-Controller-for-NewReno" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a> for <a class="struct" href="struct.NewReno.html" title="struct iroh_quinn::congestion::NewReno">NewReno</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/congestion/trait.Controller.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
@@ -1,4 +1,4 @@
<!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="Constructs controllers on demand"><title>ControllerFactory in iroh_quinn::congestion - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ControllerFactory</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Controller<wbr>Factory</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.build" title="build">build</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>congestion</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">congestion</a></div><h1>Trait <span class="trait">Controller<wbr>Factory</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait ControllerFactory {
<!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="Constructs controllers on demand"><title>ControllerFactory in iroh_quinn::congestion - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ControllerFactory</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Controller<wbr>Factory</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.build" title="build">build</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>congestion</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">congestion</a></div><h1>Trait <span class="trait">Controller<wbr>Factory</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/congestion.rs.html#107">Source</a> </span></div><pre class="rust item-decl"><code>pub trait ControllerFactory {
// Required method
fn <a href="#tymethod.build" class="fn">build</a>(
self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Self&gt;,
@@ -6,5 +6,5 @@
current_mtu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Constructs controllers on demand</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.build" class="method"><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Self&gt;, now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>, current_mtu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a>&gt;</h4></section></summary><div class="docblock"><p>Construct a fresh <code>Controller</code></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-ControllerFactory-for-BbrConfig" class="impl"><a href="#impl-ControllerFactory-for-BbrConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ControllerFactory.html" title="trait iroh_quinn::congestion::ControllerFactory">ControllerFactory</a> for <a class="struct" href="struct.BbrConfig.html" title="struct iroh_quinn::congestion::BbrConfig">BbrConfig</a></h3></section><section id="impl-ControllerFactory-for-CubicConfig" class="impl"><a href="#impl-ControllerFactory-for-CubicConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ControllerFactory.html" title="trait iroh_quinn::congestion::ControllerFactory">ControllerFactory</a> for <a class="struct" href="struct.CubicConfig.html" title="struct iroh_quinn::congestion::CubicConfig">CubicConfig</a></h3></section><section id="impl-ControllerFactory-for-NewRenoConfig" class="impl"><a href="#impl-ControllerFactory-for-NewRenoConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ControllerFactory.html" title="trait iroh_quinn::congestion::ControllerFactory">ControllerFactory</a> for <a class="struct" href="struct.NewRenoConfig.html" title="struct iroh_quinn::congestion::NewRenoConfig">NewRenoConfig</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/congestion/trait.ControllerFactory.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</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.build" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion.rs.html#109">Source</a><h4 class="code-header">fn <a href="#tymethod.build" class="fn">build</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Self&gt;, now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</a>, current_mtu: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u16.html">u16</a>) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Controller.html" title="trait iroh_quinn::congestion::Controller">Controller</a>&gt;</h4></section></summary><div class="docblock"><p>Construct a fresh <code>Controller</code></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-ControllerFactory-for-BbrConfig" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion/bbr/mod.rs.html#539">Source</a><a href="#impl-ControllerFactory-for-BbrConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ControllerFactory.html" title="trait iroh_quinn::congestion::ControllerFactory">ControllerFactory</a> for <a class="struct" href="struct.BbrConfig.html" title="struct iroh_quinn::congestion::BbrConfig">BbrConfig</a></h3></section><section id="impl-ControllerFactory-for-CubicConfig" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion/cubic.rs.html#295">Source</a><a href="#impl-ControllerFactory-for-CubicConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ControllerFactory.html" title="trait iroh_quinn::congestion::ControllerFactory">ControllerFactory</a> for <a class="struct" href="struct.CubicConfig.html" title="struct iroh_quinn::congestion::CubicConfig">CubicConfig</a></h3></section><section id="impl-ControllerFactory-for-NewRenoConfig" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/congestion/new_reno.rs.html#169">Source</a><a href="#impl-ControllerFactory-for-NewRenoConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ControllerFactory.html" title="trait iroh_quinn::congestion::ControllerFactory">ControllerFactory</a> for <a class="struct" href="struct.NewRenoConfig.html" title="struct iroh_quinn::congestion::NewRenoConfig">NewRenoConfig</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/congestion/trait.ControllerFactory.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
+1 -1
View File
@@ -1,4 +1,4 @@
<!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="Traits and implementations for the QUIC cryptography protocol"><title>iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module crypto</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module crypto</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#traits" title="Traits">Traits</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a></div><h1>Module <span>crypto</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Traits and implementations for the QUIC cryptography protocol</p>
<!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="Traits and implementations for the QUIC cryptography protocol"><title>iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module crypto</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module crypto</a></h2><h3><a href="#modules">Module Items</a></h3><ul class="block"><li><a href="#modules" title="Modules">Modules</a></li><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#traits" title="Traits">Traits</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="../index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a></div><h1>Module <span>crypto</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/lib.rs.html#68">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Traits and implementations for the QUIC cryptography protocol</p>
<p>The protocol logic in Quinn is contained in types that abstract over the actual
cryptographic protocol used. This module contains the traits used for this
abstraction layer as well as a single implementation of these traits that uses
@@ -1,2 +1,2 @@
<!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="TLS interface based on rustls"><title>iroh_quinn::crypto::rustls - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module rustls</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module rustls</a></h2><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../../index.html">iroh_quinn</a>::<wbr><a href="../index.html">crypto</a></div><h1>Module <span>rustls</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>TLS interface based on rustls</p>
<!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="TLS interface based on rustls"><title>iroh_quinn::crypto::rustls - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../../" data-static-root-path="../../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../../static.files/storage-e2aeef58.js"></script><script defer src="../sidebar-items.js"></script><script defer src="../../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../../static.files/favicon-044be391.svg"></head><body class="rustdoc mod"><!--[if lte IE 11]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><rustdoc-topbar><h2><a href="#">Module rustls</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Module rustls</a></h2><h3><a href="#structs">Module Items</a></h3><ul class="block"><li><a href="#structs" title="Structs">Structs</a></li><li><a href="#enums" title="Enums">Enums</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="../index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../../index.html">iroh_quinn</a>::<wbr><a href="../index.html">crypto</a></div><h1>Module <span>rustls</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../../src/iroh_quinn_proto/crypto.rs.html#25">Source</a> </span></div><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>TLS interface based on rustls</p>
</div></details><h2 id="structs" class="section-header">Structs<a href="#structs" class="anchor">§</a></h2><dl class="item-table"><dt><a class="struct" href="struct.HandshakeData.html" title="struct iroh_quinn::crypto::rustls::HandshakeData">Handshake<wbr>Data</a></dt><dd>Authentication data for (rustls) TLS session</dd><dt><a class="struct" href="struct.NoInitialCipherSuite.html" title="struct iroh_quinn::crypto::rustls::NoInitialCipherSuite">NoInitial<wbr>Cipher<wbr>Suite</a></dt><dd>The initial cipher suite (AES-128-GCM-SHA256) is not available</dd><dt><a class="struct" href="struct.QuicClientConfig.html" title="struct iroh_quinn::crypto::rustls::QuicClientConfig">Quic<wbr>Client<wbr>Config</a></dt><dd>A QUIC-compatible TLS client configuration</dd><dt><a class="struct" href="struct.QuicServerConfig.html" title="struct iroh_quinn::crypto::rustls::QuicServerConfig">Quic<wbr>Server<wbr>Config</a></dt><dd>A QUIC-compatible TLS server configuration</dd><dt><a class="struct" href="struct.TlsSession.html" title="struct iroh_quinn::crypto::rustls::TlsSession">TlsSession</a></dt><dd>A rustls TLS session</dd></dl><h2 id="enums" class="section-header">Enums<a href="#enums" class="anchor">§</a></h2><dl class="item-table"><dt><a class="enum" href="enum.Error.html" title="enum iroh_quinn::crypto::rustls::Error">Error</a></dt><dd>rustls reports protocol errors using this type.</dd></dl></section></div></main></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
<!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 pair of keys for bidirectional communication"><title>KeyPair in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">KeyPair</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">KeyPair</a></h2><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.local" title="local">local</a></li><li><a href="#structfield.remote" title="remote">remote</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-KeyPair%3CT%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-KeyPair%3CT%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeyPair%3CT%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-KeyPair%3CT%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-KeyPair%3CT%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeyPair%3CT%3E" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-IntoEither-for-T" title="IntoEither">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Struct <span class="struct">KeyPair</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub struct KeyPair&lt;T&gt; {
<!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 pair of keys for bidirectional communication"><title>KeyPair in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">KeyPair</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">KeyPair</a></h2><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.local" title="local">local</a></li><li><a href="#structfield.remote" title="remote">remote</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-KeyPair%3CT%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-KeyPair%3CT%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-KeyPair%3CT%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-KeyPair%3CT%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-KeyPair%3CT%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-KeyPair%3CT%3E" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-IntoEither-for-T" title="IntoEither">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Struct <span class="struct">KeyPair</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#97">Source</a> </span></div><pre class="rust item-decl"><code>pub struct KeyPair&lt;T&gt; {
pub local: T,
pub remote: T,
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A pair of keys for bidirectional communication</p>
@@ -1,4 +1,4 @@
<!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 complete set of keys for a certain packet space"><title>Keys in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">Keys</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Keys</a></h2><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.header" title="header">header</a></li><li><a href="#structfield.packet" title="packet">packet</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Keys" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-Keys" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Keys" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-Keys" title="Send">Send</a></li><li><a href="#impl-Sync-for-Keys" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Keys" title="Unpin">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-IntoEither-for-T" title="IntoEither">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Struct <span class="struct">Keys</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub struct Keys {
<!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 complete set of keys for a certain packet space"><title>Keys in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">Keys</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Keys</a></h2><h3><a href="#fields">Fields</a></h3><ul class="block structfield"><li><a href="#structfield.header" title="header">header</a></li><li><a href="#structfield.packet" title="packet">packet</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-RefUnwindSafe-for-Keys" title="!RefUnwindSafe">!RefUnwindSafe</a></li><li><a href="#impl-UnwindSafe-for-Keys" title="!UnwindSafe">!UnwindSafe</a></li><li><a href="#impl-Freeze-for-Keys" title="Freeze">Freeze</a></li><li><a href="#impl-Send-for-Keys" title="Send">Send</a></li><li><a href="#impl-Sync-for-Keys" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Keys" title="Unpin">Unpin</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-IntoEither-for-T" title="IntoEither">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Struct <span class="struct">Keys</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#105">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Keys {
pub header: <a class="struct" href="struct.KeyPair.html" title="struct iroh_quinn::crypto::KeyPair">KeyPair</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HeaderKey.html" title="trait iroh_quinn::crypto::HeaderKey">HeaderKey</a>&gt;&gt;,
pub packet: <a class="struct" href="struct.KeyPair.html" title="struct iroh_quinn::crypto::KeyPair">KeyPair</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a>&gt;&gt;,
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A complete set of keys for a certain packet space</p>
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
<!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 key for sealing data with AEAD-based algorithms"><title>AeadKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">AeadKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">AeadKey</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.open" title="open">open</a></li><li><a href="#tymethod.seal" title="seal">seal</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-AeadKey-for-LessSafeKey" title="LessSafeKey">LessSafeKey</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">AeadKey</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait AeadKey {
<!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 key for sealing data with AEAD-based algorithms"><title>AeadKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">AeadKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">AeadKey</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.open" title="open">open</a></li><li><a href="#tymethod.seal" title="seal">seal</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-AeadKey-for-LessSafeKey" title="LessSafeKey">LessSafeKey</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">AeadKey</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#198">Source</a> </span></div><pre class="rust item-decl"><code>pub trait AeadKey {
// Required methods
fn <a href="#tymethod.seal" class="fn">seal</a>(
&amp;self,
@@ -11,21 +11,21 @@
additional_data: &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;&amp;'a mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], <a class="struct" href="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A key for sealing data with AEAD-based algorithms</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.seal" class="method"><h4 class="code-header">fn <a href="#tymethod.seal" class="fn">seal</a>(
</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.seal" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#200">Source</a><h4 class="code-header">fn <a href="#tymethod.seal" class="fn">seal</a>(
&amp;self,
data: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
additional_data: &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="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section></summary><div class="docblock"><p>Method for sealing message <code>data</code></p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.open" class="method"><h4 class="code-header">fn <a href="#tymethod.open" class="fn">open</a>&lt;'a&gt;(
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.open" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#202-206">Source</a><h4 class="code-header">fn <a href="#tymethod.open" class="fn">open</a>&lt;'a&gt;(
&amp;self,
data: &amp;'a mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
additional_data: &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;&amp;'a mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], <a class="struct" href="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section></summary><div class="docblock"><p>Method for opening a sealed message <code>data</code></p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-AeadKey-for-LessSafeKey" class="impl"><a href="#impl-AeadKey-for-LessSafeKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.AeadKey.html" title="trait iroh_quinn::crypto::AeadKey">AeadKey</a> for LessSafeKey</h3></section></summary><div class="impl-items"><section id="method.seal" class="method trait-impl"><a href="#method.seal" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.seal" class="fn">seal</a>(
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-AeadKey-for-LessSafeKey" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#35">Source</a><a href="#impl-AeadKey-for-LessSafeKey" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.AeadKey.html" title="trait iroh_quinn::crypto::AeadKey">AeadKey</a> for LessSafeKey</h3></section></summary><div class="impl-items"><section id="method.seal" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#36">Source</a><a href="#method.seal" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.seal" class="fn">seal</a>(
&amp;self,
data: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;,
additional_data: &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="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section><section id="method.open" class="method trait-impl"><a href="#method.open" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.open" class="fn">open</a>&lt;'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.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section><section id="method.open" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#42-46">Source</a><a href="#method.open" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.open" class="fn">open</a>&lt;'a&gt;(
&amp;self,
data: &amp;'a mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
additional_data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
@@ -1,16 +1,16 @@
<!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="Client-side configuration for the crypto protocol"><title>ClientConfig in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ClientConfig</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Client<wbr>Config</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.start_session" title="start_session">start_session</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Client<wbr>Config</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait ClientConfig: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Client-side configuration for the crypto protocol"><title>ClientConfig in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ClientConfig</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Client<wbr>Config</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.start_session" title="start_session">start_session</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Client<wbr>Config</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#113">Source</a> </span></div><pre class="rust item-decl"><code>pub trait ClientConfig: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required method
fn <a href="#tymethod.start_session" class="fn">start_session</a>(
self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Self&gt;,
version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
server_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
params: &amp;TransportParameters,
params: &amp;<a class="struct" href="../../iroh_quinn_proto/transport_parameters/struct.TransportParameters.html" title="struct iroh_quinn_proto::transport_parameters::TransportParameters">TransportParameters</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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Session.html" title="trait iroh_quinn::crypto::Session">Session</a>&gt;, <a class="enum" href="../enum.ConnectError.html" title="enum iroh_quinn::ConnectError">ConnectError</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Client-side configuration for the crypto protocol</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.start_session" class="method"><h4 class="code-header">fn <a href="#tymethod.start_session" class="fn">start_session</a>(
</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.start_session" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#115-120">Source</a><h4 class="code-header">fn <a href="#tymethod.start_session" class="fn">start_session</a>(
self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Self&gt;,
version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
server_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>,
params: &amp;TransportParameters,
params: &amp;<a class="struct" href="../../iroh_quinn_proto/transport_parameters/struct.TransportParameters.html" title="struct iroh_quinn_proto::transport_parameters::TransportParameters">TransportParameters</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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Session.html" title="trait iroh_quinn::crypto::Session">Session</a>&gt;, <a class="enum" href="../enum.ConnectError.html" title="enum iroh_quinn::ConnectError">ConnectError</a>&gt;</h4></section></summary><div class="docblock"><p>Start a client session with this configuration</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-ClientConfig-for-QuicClientConfig" class="impl"><a href="#impl-ClientConfig-for-QuicClientConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ClientConfig.html" title="trait iroh_quinn::crypto::ClientConfig">ClientConfig</a> for <a class="struct" href="rustls/struct.QuicClientConfig.html" title="struct iroh_quinn::crypto::rustls::QuicClientConfig">QuicClientConfig</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.ClientConfig.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-ClientConfig-for-QuicClientConfig" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#357">Source</a><a href="#impl-ClientConfig-for-QuicClientConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ClientConfig.html" title="trait iroh_quinn::crypto::ClientConfig">ClientConfig</a> for <a class="struct" href="rustls/struct.QuicClientConfig.html" title="struct iroh_quinn::crypto::rustls::QuicClientConfig">QuicClientConfig</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.ClientConfig.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
@@ -1,6 +1,6 @@
<!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 pseudo random key for HKDF"><title>HandshakeTokenKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">HandshakeTokenKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Handshake<wbr>Token<wbr>Key</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.aead_from_hkdf" title="aead_from_hkdf">aead_from_hkdf</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-HandshakeTokenKey-for-Prk" title="Prk">Prk</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Handshake<wbr>Token<wbr>Key</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait HandshakeTokenKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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 pseudo random key for HKDF"><title>HandshakeTokenKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">HandshakeTokenKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Handshake<wbr>Token<wbr>Key</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.aead_from_hkdf" title="aead_from_hkdf">aead_from_hkdf</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-HandshakeTokenKey-for-Prk" title="Prk">Prk</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Handshake<wbr>Token<wbr>Key</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#192">Source</a> </span></div><pre class="rust item-decl"><code>pub trait HandshakeTokenKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required method
fn <a href="#tymethod.aead_from_hkdf" class="fn">aead_from_hkdf</a>(&amp;self, random_bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.AeadKey.html" title="trait iroh_quinn::crypto::AeadKey">AeadKey</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A pseudo random key for HKDF</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.aead_from_hkdf" class="method"><h4 class="code-header">fn <a href="#tymethod.aead_from_hkdf" class="fn">aead_from_hkdf</a>(&amp;self, random_bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.AeadKey.html" title="trait iroh_quinn::crypto::AeadKey">AeadKey</a>&gt;</h4></section></summary><div class="docblock"><p>Derive AEAD using hkdf</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-HandshakeTokenKey-for-Prk" class="impl"><a href="#impl-HandshakeTokenKey-for-Prk" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HandshakeTokenKey.html" title="trait iroh_quinn::crypto::HandshakeTokenKey">HandshakeTokenKey</a> for Prk</h3></section></summary><div class="impl-items"><section id="method.aead_from_hkdf" class="method trait-impl"><a href="#method.aead_from_hkdf" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.aead_from_hkdf" class="fn">aead_from_hkdf</a>(&amp;self, random_bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.AeadKey.html" title="trait iroh_quinn::crypto::AeadKey">AeadKey</a>&gt;</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.HandshakeTokenKey.js" data-ignore-extern-crates="ring" async></script></section></div></main></body></html>
</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.aead_from_hkdf" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#194">Source</a><h4 class="code-header">fn <a href="#tymethod.aead_from_hkdf" class="fn">aead_from_hkdf</a>(&amp;self, random_bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.AeadKey.html" title="trait iroh_quinn::crypto::AeadKey">AeadKey</a>&gt;</h4></section></summary><div class="docblock"><p>Derive AEAD using hkdf</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-HandshakeTokenKey-for-Prk" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#22">Source</a><a href="#impl-HandshakeTokenKey-for-Prk" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HandshakeTokenKey.html" title="trait iroh_quinn::crypto::HandshakeTokenKey">HandshakeTokenKey</a> for Prk</h3></section></summary><div class="impl-items"><section id="method.aead_from_hkdf" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#23">Source</a><a href="#method.aead_from_hkdf" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.aead_from_hkdf" class="fn">aead_from_hkdf</a>(&amp;self, random_bytes: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.AeadKey.html" title="trait iroh_quinn::crypto::AeadKey">AeadKey</a>&gt;</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.HandshakeTokenKey.js" data-ignore-extern-crates="ring" async></script></section></div></main></body></html>
@@ -1,10 +1,10 @@
<!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="Keys used to protect packet headers"><title>HeaderKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">HeaderKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Header<wbr>Key</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.decrypt" title="decrypt">decrypt</a></li><li><a href="#tymethod.encrypt" title="encrypt">encrypt</a></li><li><a href="#tymethod.sample_size" title="sample_size">sample_size</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-HeaderKey-for-Box%3Cdyn+HeaderProtectionKey%3E" title="Box&#60;dyn HeaderProtectionKey&#62;">Box&#60;dyn HeaderProtectionKey&#62;</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Header<wbr>Key</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait HeaderKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Keys used to protect packet headers"><title>HeaderKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">HeaderKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Header<wbr>Key</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.decrypt" title="decrypt">decrypt</a></li><li><a href="#tymethod.encrypt" title="encrypt">encrypt</a></li><li><a href="#tymethod.sample_size" title="sample_size">sample_size</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-HeaderKey-for-Box%3Cdyn+HeaderProtectionKey%3E" title="Box&#60;dyn HeaderProtectionKey&#62;">Box&#60;dyn HeaderProtectionKey&#62;</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Header<wbr>Key</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#166">Source</a> </span></div><pre class="rust item-decl"><code>pub trait HeaderKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]);
<span class="item-spacer"></span> fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]);
<span class="item-spacer"></span> fn <a href="#tymethod.sample_size" class="fn">sample_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Keys used to protect packet headers</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.decrypt" class="method"><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section></summary><div class="docblock"><p>Decrypt the given packets header</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.encrypt" class="method"><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section></summary><div class="docblock"><p>Encrypt the given packets header</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.sample_size" class="method"><h4 class="code-header">fn <a href="#tymethod.sample_size" class="fn">sample_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>The sample size used for this keys algorithm</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-HeaderKey-for-Box%3Cdyn+HeaderProtectionKey%3E" class="impl"><a href="#impl-HeaderKey-for-Box%3Cdyn+HeaderProtectionKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HeaderKey.html" title="trait iroh_quinn::crypto::HeaderKey">HeaderKey</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn HeaderProtectionKey&gt;</h3></section></summary><div class="impl-items"><section id="method.decrypt" class="method trait-impl"><a href="#method.decrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section><section id="method.encrypt" class="method trait-impl"><a href="#method.encrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section><section id="method.sample_size" class="method trait-impl"><a href="#method.sample_size" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.sample_size" class="fn">sample_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.HeaderKey.js" data-ignore-extern-crates="alloc" async></script></section></div></main></body></html>
</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.decrypt" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#168">Source</a><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section></summary><div class="docblock"><p>Decrypt the given packets header</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.encrypt" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#170">Source</a><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section></summary><div class="docblock"><p>Encrypt the given packets header</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.sample_size" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#172">Source</a><h4 class="code-header">fn <a href="#tymethod.sample_size" class="fn">sample_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>The sample size used for this keys algorithm</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-HeaderKey-for-Box%3Cdyn+HeaderProtectionKey%3E" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#229">Source</a><a href="#impl-HeaderKey-for-Box%3Cdyn+HeaderProtectionKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HeaderKey.html" title="trait iroh_quinn::crypto::HeaderKey">HeaderKey</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn HeaderProtectionKey&gt;</h3></section></summary><div class="impl-items"><section id="method.decrypt" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#230">Source</a><a href="#method.decrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section><section id="method.encrypt" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#242">Source</a><a href="#method.encrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(&amp;self, pn_offset: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, packet: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section><section id="method.sample_size" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#254">Source</a><a href="#method.sample_size" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.sample_size" class="fn">sample_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.HeaderKey.js" data-ignore-extern-crates="alloc" async></script></section></div></main></body></html>
@@ -1,10 +1,10 @@
<!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 key for signing with HMAC-based algorithms"><title>HmacKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">HmacKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">HmacKey</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.sign" title="sign">sign</a></li><li><a href="#tymethod.signature_len" title="signature_len">signature_len</a></li><li><a href="#tymethod.verify" title="verify">verify</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-HmacKey-for-Key" title="Key">Key</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">HmacKey</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait HmacKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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 key for signing with HMAC-based algorithms"><title>HmacKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">HmacKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">HmacKey</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.sign" title="sign">sign</a></li><li><a href="#tymethod.signature_len" title="signature_len">signature_len</a></li><li><a href="#tymethod.verify" title="verify">verify</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-HmacKey-for-Key" title="Key">Key</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">HmacKey</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#176">Source</a> </span></div><pre class="rust item-decl"><code>pub trait HmacKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.sign" class="fn">sign</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature_out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]);
<span class="item-spacer"></span> fn <a href="#tymethod.signature_len" class="fn">signature_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.verify" class="fn">verify</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature: &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="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A key for signing with HMAC-based algorithms</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.sign" class="method"><h4 class="code-header">fn <a href="#tymethod.sign" class="fn">sign</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature_out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section></summary><div class="docblock"><p>Method for signing a message</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.signature_len" class="method"><h4 class="code-header">fn <a href="#tymethod.signature_len" class="fn">signature_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Length of <code>sign</code>s output</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.verify" class="method"><h4 class="code-header">fn <a href="#tymethod.verify" class="fn">verify</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature: &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="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section></summary><div class="docblock"><p>Method for verifying a message</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-HmacKey-for-Key" class="impl"><a href="#impl-HmacKey-for-Key" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HmacKey.html" title="trait iroh_quinn::crypto::HmacKey">HmacKey</a> for Key</h3></section></summary><div class="impl-items"><section id="method.sign" class="method trait-impl"><a href="#method.sign" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.sign" class="fn">sign</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section><section id="method.signature_len" class="method trait-impl"><a href="#method.signature_len" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.signature_len" class="fn">signature_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section><section id="method.verify" class="method trait-impl"><a href="#method.verify" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.verify" class="fn">verify</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature: &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="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.HmacKey.js" data-ignore-extern-crates="ring" async></script></section></div></main></body></html>
</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.sign" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#178">Source</a><h4 class="code-header">fn <a href="#tymethod.sign" class="fn">sign</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature_out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section></summary><div class="docblock"><p>Method for signing a message</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.signature_len" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#180">Source</a><h4 class="code-header">fn <a href="#tymethod.signature_len" class="fn">signature_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Length of <code>sign</code>s output</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.verify" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#182">Source</a><h4 class="code-header">fn <a href="#tymethod.verify" class="fn">verify</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature: &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="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section></summary><div class="docblock"><p>Method for verifying a message</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-HmacKey-for-Key" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#8">Source</a><a href="#impl-HmacKey-for-Key" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.HmacKey.html" title="trait iroh_quinn::crypto::HmacKey">HmacKey</a> for Key</h3></section></summary><div class="impl-items"><section id="method.sign" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#9">Source</a><a href="#method.sign" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.sign" class="fn">sign</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], out: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>])</h4></section><section id="method.signature_len" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#13">Source</a><a href="#method.signature_len" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.signature_len" class="fn">signature_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section><section id="method.verify" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/ring_like.rs.html#17">Source</a><a href="#method.verify" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.verify" class="fn">verify</a>(&amp;self, data: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>], signature: &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="struct.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.HmacKey.js" data-ignore-extern-crates="ring" async></script></section></div></main></body></html>
@@ -1,4 +1,4 @@
<!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="Keys used to protect packet payloads"><title>PacketKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">PacketKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Packet<wbr>Key</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.confidentiality_limit" title="confidentiality_limit">confidentiality_limit</a></li><li><a href="#tymethod.decrypt" title="decrypt">decrypt</a></li><li><a href="#tymethod.encrypt" title="encrypt">encrypt</a></li><li><a href="#tymethod.integrity_limit" title="integrity_limit">integrity_limit</a></li><li><a href="#tymethod.tag_len" title="tag_len">tag_len</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-PacketKey-for-Box%3Cdyn+PacketKey%3E" title="Box&#60;dyn PacketKey&#62;">Box&#60;dyn PacketKey&#62;</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Packet<wbr>Key</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait PacketKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Keys used to protect packet payloads"><title>PacketKey in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">PacketKey</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Packet<wbr>Key</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.confidentiality_limit" title="confidentiality_limit">confidentiality_limit</a></li><li><a href="#tymethod.decrypt" title="decrypt">decrypt</a></li><li><a href="#tymethod.encrypt" title="encrypt">encrypt</a></li><li><a href="#tymethod.integrity_limit" title="integrity_limit">integrity_limit</a></li><li><a href="#tymethod.tag_len" title="tag_len">tag_len</a></li></ul><h3><a href="#foreign-impls">Implementations on Foreign Types</a></h3><ul class="block"><li><a href="#impl-PacketKey-for-Box%3Cdyn+PacketKey%3E" title="Box&#60;dyn PacketKey&#62;">Box&#60;dyn PacketKey&#62;</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Packet<wbr>Key</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#145">Source</a> </span></div><pre class="rust item-decl"><code>pub trait PacketKey: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(
&amp;self,
@@ -18,34 +18,34 @@
<span class="item-spacer"></span> fn <a href="#tymethod.confidentiality_limit" class="fn">confidentiality_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.integrity_limit" class="fn">integrity_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Keys used to protect packet payloads</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.encrypt" class="method"><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(
</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.encrypt" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#147">Source</a><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(
&amp;self,
path_id: <a class="struct" href="../struct.PathId.html" title="struct iroh_quinn::PathId">PathId</a>,
packet: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
header_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
)</h4></section></summary><div class="docblock"><p>Encrypt the packet payload with the given packet number</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.decrypt" class="method"><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.decrypt" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#149-155">Source</a><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(
&amp;self,
path_id: <a class="struct" href="../struct.PathId.html" title="struct iroh_quinn::PathId">PathId</a>,
packet: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
header: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
payload: &amp;mut BytesMut,
) -&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.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section></summary><div class="docblock"><p>Decrypt the packet payload with the given packet number</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.tag_len" class="method"><h4 class="code-header">fn <a href="#tymethod.tag_len" class="fn">tag_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>The length of the AEAD tag appended to packets on encryption</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.confidentiality_limit" class="method"><h4 class="code-header">fn <a href="#tymethod.confidentiality_limit" class="fn">confidentiality_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Maximum number of packets that may be sent using a single key</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.integrity_limit" class="method"><h4 class="code-header">fn <a href="#tymethod.integrity_limit" class="fn">integrity_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Maximum number of incoming packets that may fail decryption before the connection must be
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.tag_len" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#157">Source</a><h4 class="code-header">fn <a href="#tymethod.tag_len" class="fn">tag_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>The length of the AEAD tag appended to packets on encryption</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.confidentiality_limit" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#159">Source</a><h4 class="code-header">fn <a href="#tymethod.confidentiality_limit" class="fn">confidentiality_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Maximum number of packets that may be sent using a single key</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.integrity_limit" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#162">Source</a><h4 class="code-header">fn <a href="#tymethod.integrity_limit" class="fn">integrity_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></summary><div class="docblock"><p>Maximum number of incoming packets that may fail decryption before the connection must be
abandoned</p>
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-PacketKey-for-Box%3Cdyn+PacketKey%3E" class="impl"><a href="#impl-PacketKey-for-Box%3Cdyn+PacketKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn PacketKey&gt;</h3></section></summary><div class="impl-items"><section id="method.encrypt" class="method trait-impl"><a href="#method.encrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(
</div></details></div><h2 id="foreign-impls" class="section-header">Implementations on Foreign Types<a href="#foreign-impls" class="anchor">§</a></h2><details class="toggle implementors-toggle"><summary><section id="impl-PacketKey-for-Box%3Cdyn+PacketKey%3E" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#616">Source</a><a href="#impl-PacketKey-for-Box%3Cdyn+PacketKey%3E" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a> for <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn PacketKey&gt;</h3></section></summary><div class="impl-items"><section id="method.encrypt" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#617">Source</a><a href="#method.encrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.encrypt" class="fn">encrypt</a>(
&amp;self,
path_id: <a class="struct" href="../struct.PathId.html" title="struct iroh_quinn::PathId">PathId</a>,
packet: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
header_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>,
)</h4></section><section id="method.decrypt" class="method trait-impl"><a href="#method.decrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(
)</h4></section><section id="method.decrypt" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#626-632">Source</a><a href="#method.decrypt" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.decrypt" class="fn">decrypt</a>(
&amp;self,
path_id: <a class="struct" href="../struct.PathId.html" title="struct iroh_quinn::PathId">PathId</a>,
packet: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a>,
header: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
payload: &amp;mut BytesMut,
) -&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.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section><section id="method.tag_len" class="method trait-impl"><a href="#method.tag_len" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.tag_len" class="fn">tag_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section><section id="method.confidentiality_limit" class="method trait-impl"><a href="#method.confidentiality_limit" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.confidentiality_limit" class="fn">confidentiality_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section><section id="method.integrity_limit" class="method trait-impl"><a href="#method.integrity_limit" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.integrity_limit" class="fn">integrity_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.PacketKey.js" data-ignore-extern-crates="alloc" async></script></section></div></main></body></html>
) -&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.CryptoError.html" title="struct iroh_quinn::crypto::CryptoError">CryptoError</a>&gt;</h4></section><section id="method.tag_len" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#641">Source</a><a href="#method.tag_len" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.tag_len" class="fn">tag_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section><section id="method.confidentiality_limit" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#645">Source</a><a href="#method.confidentiality_limit" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.confidentiality_limit" class="fn">confidentiality_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section><section id="method.integrity_limit" class="method trait-impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#649">Source</a><a href="#method.integrity_limit" class="anchor">§</a><h4 class="code-header">fn <a href="#tymethod.integrity_limit" class="fn">integrity_limit</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u64.html">u64</a></h4></section></div></details><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.PacketKey.js" data-ignore-extern-crates="alloc" async></script></section></div></main></body></html>
@@ -1,4 +1,4 @@
<!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="Server-side configuration for the crypto protocol"><title>ServerConfig in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ServerConfig</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Server<wbr>Config</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.initial_keys" title="initial_keys">initial_keys</a></li><li><a href="#tymethod.retry_tag" title="retry_tag">retry_tag</a></li><li><a href="#tymethod.start_session" title="start_session">start_session</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Server<wbr>Config</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait ServerConfig: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Server-side configuration for the crypto protocol"><title>ServerConfig in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ServerConfig</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Server<wbr>Config</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.initial_keys" title="initial_keys">initial_keys</a></li><li><a href="#tymethod.retry_tag" title="retry_tag">retry_tag</a></li><li><a href="#tymethod.start_session" title="start_session">start_session</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Server<wbr>Config</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#124">Source</a> </span></div><pre class="rust item-decl"><code>pub trait ServerConfig: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.initial_keys" class="fn">initial_keys</a>(
&amp;self,
@@ -14,25 +14,25 @@
<span class="item-spacer"></span> fn <a href="#tymethod.start_session" class="fn">start_session</a>(
self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Self&gt;,
version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
params: &amp;TransportParameters,
params: &amp;<a class="struct" href="../../iroh_quinn_proto/transport_parameters/struct.TransportParameters.html" title="struct iroh_quinn_proto::transport_parameters::TransportParameters">TransportParameters</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Session.html" title="trait iroh_quinn::crypto::Session">Session</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Server-side configuration for the crypto protocol</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.initial_keys" class="method"><h4 class="code-header">fn <a href="#tymethod.initial_keys" class="fn">initial_keys</a>(
</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.initial_keys" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#126-127">Source</a><h4 class="code-header">fn <a href="#tymethod.initial_keys" class="fn">initial_keys</a>(
&amp;self,
version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
dst_cid: <a class="struct" href="../struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</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.Keys.html" title="struct iroh_quinn::crypto::Keys">Keys</a>, <a class="struct" href="struct.UnsupportedVersion.html" title="struct iroh_quinn::crypto::UnsupportedVersion">UnsupportedVersion</a>&gt;</h4></section></summary><div class="docblock"><p>Create the initial set of keys given the clients initial destination ConnectionId</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.retry_tag" class="method"><h4 class="code-header">fn <a href="#tymethod.retry_tag" class="fn">retry_tag</a>(
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.retry_tag" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#132">Source</a><h4 class="code-header">fn <a href="#tymethod.retry_tag" class="fn">retry_tag</a>(
&amp;self,
version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
orig_dst_cid: <a class="struct" href="../struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</a>,
packet: &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.u8.html">u8</a>; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.array.html">16</a>]</h4></section></summary><div class="docblock"><p>Generate the integrity tag for a retry packet</p>
<p>Never called if <code>initial_keys</code> rejected <code>version</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.start_session" class="method"><h4 class="code-header">fn <a href="#tymethod.start_session" class="fn">start_session</a>(
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.start_session" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#137-141">Source</a><h4 class="code-header">fn <a href="#tymethod.start_session" class="fn">start_session</a>(
self: <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/sync/struct.Arc.html" title="struct alloc::sync::Arc">Arc</a>&lt;Self&gt;,
version: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u32.html">u32</a>,
params: &amp;TransportParameters,
params: &amp;<a class="struct" href="../../iroh_quinn_proto/transport_parameters/struct.TransportParameters.html" title="struct iroh_quinn_proto::transport_parameters::TransportParameters">TransportParameters</a>,
) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.Session.html" title="trait iroh_quinn::crypto::Session">Session</a>&gt;</h4></section></summary><div class="docblock"><p>Start a server session with this configuration</p>
<p>Never called if <code>initial_keys</code> rejected <code>version</code>.</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-ServerConfig-for-QuicServerConfig" class="impl"><a href="#impl-ServerConfig-for-QuicServerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ServerConfig.html" title="trait iroh_quinn::crypto::ServerConfig">ServerConfig</a> for <a class="struct" href="rustls/struct.QuicServerConfig.html" title="struct iroh_quinn::crypto::rustls::QuicServerConfig">QuicServerConfig</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.ServerConfig.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-ServerConfig-for-QuicServerConfig" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#513">Source</a><a href="#impl-ServerConfig-for-QuicServerConfig" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ServerConfig.html" title="trait iroh_quinn::crypto::ServerConfig">ServerConfig</a> for <a class="struct" href="rustls/struct.QuicServerConfig.html" title="struct iroh_quinn::crypto::rustls::QuicServerConfig">QuicServerConfig</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.ServerConfig.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
@@ -1,4 +1,4 @@
<!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 cryptographic session (commonly TLS)"><title>Session in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">Session</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Session</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.early_crypto" title="early_crypto">early_crypto</a></li><li><a href="#tymethod.early_data_accepted" title="early_data_accepted">early_data_accepted</a></li><li><a href="#tymethod.export_keying_material" title="export_keying_material">export_keying_material</a></li><li><a href="#tymethod.handshake_data" title="handshake_data">handshake_data</a></li><li><a href="#tymethod.initial_keys" title="initial_keys">initial_keys</a></li><li><a href="#tymethod.is_handshaking" title="is_handshaking">is_handshaking</a></li><li><a href="#tymethod.is_valid_retry" title="is_valid_retry">is_valid_retry</a></li><li><a href="#tymethod.next_1rtt_keys" title="next_1rtt_keys">next_1rtt_keys</a></li><li><a href="#tymethod.peer_identity" title="peer_identity">peer_identity</a></li><li><a href="#tymethod.read_handshake" title="read_handshake">read_handshake</a></li><li><a href="#tymethod.transport_parameters" title="transport_parameters">transport_parameters</a></li><li><a href="#tymethod.write_handshake" title="write_handshake">write_handshake</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Session</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait Session:
<!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 cryptographic session (commonly TLS)"><title>Session in iroh_quinn::crypto - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../../" data-static-root-path="../../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">Session</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Session</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.early_crypto" title="early_crypto">early_crypto</a></li><li><a href="#tymethod.early_data_accepted" title="early_data_accepted">early_data_accepted</a></li><li><a href="#tymethod.export_keying_material" title="export_keying_material">export_keying_material</a></li><li><a href="#tymethod.handshake_data" title="handshake_data">handshake_data</a></li><li><a href="#tymethod.initial_keys" title="initial_keys">initial_keys</a></li><li><a href="#tymethod.is_handshaking" title="is_handshaking">is_handshaking</a></li><li><a href="#tymethod.is_valid_retry" title="is_valid_retry">is_valid_retry</a></li><li><a href="#tymethod.next_1rtt_keys" title="next_1rtt_keys">next_1rtt_keys</a></li><li><a href="#tymethod.peer_identity" title="peer_identity">peer_identity</a></li><li><a href="#tymethod.read_handshake" title="read_handshake">read_handshake</a></li><li><a href="#tymethod.transport_parameters" title="transport_parameters">transport_parameters</a></li><li><a href="#tymethod.write_handshake" title="write_handshake">write_handshake</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2><a href="index.html">In iroh_<wbr>quinn::<wbr>crypto</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="../index.html">iroh_quinn</a>::<wbr><a href="index.html">crypto</a></div><h1>Trait <span class="trait">Session</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../../src/iroh_quinn_proto/crypto.rs.html#28">Source</a> </span></div><pre class="rust item-decl"><code>pub trait Session:
<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>
+ <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>
+ 'static {
@@ -9,8 +9,8 @@
<span class="item-spacer"></span> fn <a href="#tymethod.early_crypto" class="fn">early_crypto</a>(&amp;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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HeaderKey.html" title="trait iroh_quinn::crypto::HeaderKey">HeaderKey</a>&gt;, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a>&gt;)&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.early_data_accepted" class="fn">early_data_accepted</a>(&amp;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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.is_handshaking" class="fn">is_handshaking</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.read_handshake" class="fn">read_handshake</a>(&amp;mut self, buf: &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.bool.html">bool</a>, Error&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.transport_parameters" class="fn">transport_parameters</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="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;TransportParameters&gt;, Error&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.read_handshake" class="fn">read_handshake</a>(&amp;mut self, buf: &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.bool.html">bool</a>, <a class="struct" href="../../iroh_quinn_proto/transport_error/struct.Error.html" title="struct iroh_quinn_proto::transport_error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.transport_parameters" class="fn">transport_parameters</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="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="../../iroh_quinn_proto/transport_parameters/struct.TransportParameters.html" title="struct iroh_quinn_proto::transport_parameters::TransportParameters">TransportParameters</a>&gt;, <a class="struct" href="../../iroh_quinn_proto/transport_error/struct.Error.html" title="struct iroh_quinn_proto::transport_error::Error">Error</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.write_handshake" class="fn">write_handshake</a>(&amp;mut self, buf: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;) -&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.Keys.html" title="struct iroh_quinn::crypto::Keys">Keys</a>&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.next_1rtt_keys" class="fn">next_1rtt_keys</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.KeyPair.html" title="struct iroh_quinn::crypto::KeyPair">KeyPair</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a>&gt;&gt;&gt;;
<span class="item-spacer"></span> fn <a href="#tymethod.is_valid_retry" class="fn">is_valid_retry</a>(
@@ -26,36 +26,36 @@
context: &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="struct.ExportKeyingMaterialError.html" title="struct iroh_quinn::crypto::ExportKeyingMaterialError">ExportKeyingMaterialError</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A cryptographic session (commonly TLS)</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.initial_keys" class="method"><h4 class="code-header">fn <a href="#tymethod.initial_keys" class="fn">initial_keys</a>(&amp;self, dst_cid: <a class="struct" href="../struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</a>, side: <a class="enum" href="../enum.Side.html" title="enum iroh_quinn::Side">Side</a>) -&gt; <a class="struct" href="struct.Keys.html" title="struct iroh_quinn::crypto::Keys">Keys</a></h4></section></summary><div class="docblock"><p>Create the initial set of keys given the clients initial destination ConnectionId</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.handshake_data" class="method"><h4 class="code-header">fn <a href="#tymethod.handshake_data" class="fn">handshake_data</a>(&amp;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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Get data negotiated during the handshake, if available</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.initial_keys" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#30">Source</a><h4 class="code-header">fn <a href="#tymethod.initial_keys" class="fn">initial_keys</a>(&amp;self, dst_cid: <a class="struct" href="../struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</a>, side: <a class="enum" href="../enum.Side.html" title="enum iroh_quinn::Side">Side</a>) -&gt; <a class="struct" href="struct.Keys.html" title="struct iroh_quinn::crypto::Keys">Keys</a></h4></section></summary><div class="docblock"><p>Create the initial set of keys given the clients initial destination ConnectionId</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.handshake_data" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#35">Source</a><h4 class="code-header">fn <a href="#tymethod.handshake_data" class="fn">handshake_data</a>(&amp;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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Get data negotiated during the handshake, if available</p>
<p>Returns <code>None</code> until the connection emits <code>HandshakeDataReady</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.peer_identity" class="method"><h4 class="code-header">fn <a href="#tymethod.peer_identity" class="fn">peer_identity</a>(&amp;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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Get the peers identity, if available</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.early_crypto" class="method"><h4 class="code-header">fn <a href="#tymethod.early_crypto" class="fn">early_crypto</a>(&amp;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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HeaderKey.html" title="trait iroh_quinn::crypto::HeaderKey">HeaderKey</a>&gt;, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a>&gt;)&gt;</h4></section></summary><div class="docblock"><p>Get the 0-RTT keys if available (clients only)</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.peer_identity" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#38">Source</a><h4 class="code-header">fn <a href="#tymethod.peer_identity" class="fn">peer_identity</a>(&amp;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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a>&gt;&gt;</h4></section></summary><div class="docblock"><p>Get the peers identity, if available</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.early_crypto" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#47">Source</a><h4 class="code-header">fn <a href="#tymethod.early_crypto" class="fn">early_crypto</a>(&amp;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="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.HeaderKey.html" title="trait iroh_quinn::crypto::HeaderKey">HeaderKey</a>&gt;, <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a>&gt;)&gt;</h4></section></summary><div class="docblock"><p>Get the 0-RTT keys if available (clients only)</p>
<p>On the client side, this method can be used to see if 0-RTT key material is available
to start sending data before the protocol handshake has completed.</p>
<p>Returns <code>None</code> if the key material is not available. This might happen if you have
not connected to this server before.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.early_data_accepted" class="method"><h4 class="code-header">fn <a href="#tymethod.early_data_accepted" class="fn">early_data_accepted</a>(&amp;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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</h4></section></summary><div class="docblock"><p>If the 0-RTT-encrypted data has been accepted by the peer</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.is_handshaking" class="method"><h4 class="code-header">fn <a href="#tymethod.is_handshaking" class="fn">is_handshaking</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> until the connection is fully established.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.read_handshake" class="method"><h4 class="code-header">fn <a href="#tymethod.read_handshake" class="fn">read_handshake</a>(&amp;mut self, buf: &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.bool.html">bool</a>, Error&gt;</h4></section></summary><div class="docblock"><p>Read bytes of handshake data</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.early_data_accepted" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#50">Source</a><h4 class="code-header">fn <a href="#tymethod.early_data_accepted" class="fn">early_data_accepted</a>(&amp;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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>&gt;</h4></section></summary><div class="docblock"><p>If the 0-RTT-encrypted data has been accepted by the peer</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.is_handshaking" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#53">Source</a><h4 class="code-header">fn <a href="#tymethod.is_handshaking" class="fn">is_handshaking</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a></h4></section></summary><div class="docblock"><p>Returns <code>true</code> until the connection is fully established.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.read_handshake" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#63">Source</a><h4 class="code-header">fn <a href="#tymethod.read_handshake" class="fn">read_handshake</a>(&amp;mut self, buf: &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.bool.html">bool</a>, <a class="struct" href="../../iroh_quinn_proto/transport_error/struct.Error.html" title="struct iroh_quinn_proto::transport_error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Read bytes of handshake data</p>
<p>This should be called with the contents of <code>CRYPTO</code> frames. If it returns <code>Ok</code>, the
caller should call <code>write_handshake()</code> to check if the crypto protocol has anything
to send to the peer. This method will only return <code>true</code> the first time that
handshake data is available. Future calls will always return false.</p>
<p>On success, returns <code>true</code> iff <code>self.handshake_data()</code> has been populated.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.transport_parameters" class="method"><h4 class="code-header">fn <a href="#tymethod.transport_parameters" class="fn">transport_parameters</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="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;TransportParameters&gt;, Error&gt;</h4></section></summary><div class="docblock"><p>The peers QUIC transport parameters</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.transport_parameters" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#68">Source</a><h4 class="code-header">fn <a href="#tymethod.transport_parameters" class="fn">transport_parameters</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="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="../../iroh_quinn_proto/transport_parameters/struct.TransportParameters.html" title="struct iroh_quinn_proto::transport_parameters::TransportParameters">TransportParameters</a>&gt;, <a class="struct" href="../../iroh_quinn_proto/transport_error/struct.Error.html" title="struct iroh_quinn_proto::transport_error::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>The peers QUIC transport parameters</p>
<p>These are only available after the first flight from the peer has been received.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.write_handshake" class="method"><h4 class="code-header">fn <a href="#tymethod.write_handshake" class="fn">write_handshake</a>(&amp;mut self, buf: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;) -&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.Keys.html" title="struct iroh_quinn::crypto::Keys">Keys</a>&gt;</h4></section></summary><div class="docblock"><p>Writes handshake bytes into the given buffer and optionally returns the negotiated keys</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.write_handshake" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#74">Source</a><h4 class="code-header">fn <a href="#tymethod.write_handshake" class="fn">write_handshake</a>(&amp;mut self, buf: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;) -&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.Keys.html" title="struct iroh_quinn::crypto::Keys">Keys</a>&gt;</h4></section></summary><div class="docblock"><p>Writes handshake bytes into the given buffer and optionally returns the negotiated keys</p>
<p>When the handshake proceeds to the next phase, this method will return a new set of
keys to encrypt data with.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.next_1rtt_keys" class="method"><h4 class="code-header">fn <a href="#tymethod.next_1rtt_keys" class="fn">next_1rtt_keys</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.KeyPair.html" title="struct iroh_quinn::crypto::KeyPair">KeyPair</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a>&gt;&gt;&gt;</h4></section></summary><div class="docblock"><p>Compute keys for the next key update</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.is_valid_retry" class="method"><h4 class="code-header">fn <a href="#tymethod.is_valid_retry" class="fn">is_valid_retry</a>(
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.next_1rtt_keys" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#77">Source</a><h4 class="code-header">fn <a href="#tymethod.next_1rtt_keys" class="fn">next_1rtt_keys</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.KeyPair.html" title="struct iroh_quinn::crypto::KeyPair">KeyPair</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/boxed/struct.Box.html" title="struct alloc::boxed::Box">Box</a>&lt;dyn <a class="trait" href="trait.PacketKey.html" title="trait iroh_quinn::crypto::PacketKey">PacketKey</a>&gt;&gt;&gt;</h4></section></summary><div class="docblock"><p>Compute keys for the next key update</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.is_valid_retry" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#80">Source</a><h4 class="code-header">fn <a href="#tymethod.is_valid_retry" class="fn">is_valid_retry</a>(
&amp;self,
orig_dst_cid: <a class="struct" href="../struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</a>,
header: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
payload: &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></h4></section></summary><div class="docblock"><p>Verify the integrity of a retry packet</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.export_keying_material" class="method"><h4 class="code-header">fn <a href="#tymethod.export_keying_material" class="fn">export_keying_material</a>(
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.export_keying_material" class="method"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto.rs.html#88-93">Source</a><h4 class="code-header">fn <a href="#tymethod.export_keying_material" class="fn">export_keying_material</a>(
&amp;self,
output: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
label: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],
@@ -65,4 +65,4 @@ from the <a href="trait.Session.html" title="trait iroh_quinn::crypto::Session">
separation.</p>
<p>This function will fail, returning <a href="struct.ExportKeyingMaterialError.html" title="struct iroh_quinn::crypto::ExportKeyingMaterialError">ExportKeyingMaterialError</a>,
if the requested output length is too large.</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-Session-for-TlsSession" class="impl"><a href="#impl-Session-for-TlsSession" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Session.html" title="trait iroh_quinn::crypto::Session">Session</a> for <a class="struct" href="rustls/struct.TlsSession.html" title="struct iroh_quinn::crypto::rustls::TlsSession">TlsSession</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.Session.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-Session-for-TlsSession" class="impl"><a class="src rightside" href="../../src/iroh_quinn_proto/crypto/rustls.rs.html#55">Source</a><a href="#impl-Session-for-TlsSession" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.Session.html" title="trait iroh_quinn::crypto::Session">Session</a> for <a class="struct" href="rustls/struct.TlsSession.html" title="struct iroh_quinn::crypto::rustls::TlsSession">TlsSession</a></h3></section></div><script src="../../trait.impl/iroh_quinn_proto/crypto/trait.Session.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -3,7 +3,7 @@
<p>If an error occurred before a path ID was allocated, <code>None</code> is returned. In this
case the future is ready and polling it will immediately yield the error.</p>
<p>The returned value remains the same for the entire lifetime of this future.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-OpenPath" class="impl"><a class="src rightside" href="../src/iroh_quinn/path.rs.html#78-104">Source</a><a href="#impl-Future-for-OpenPath" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a> for <a class="struct" href="struct.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="../src/iroh_quinn/path.rs.html#79">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html#associatedtype.Output" class="associatedtype">Output</a> = <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.Path.html" title="struct iroh_quinn::Path">Path</a>, PathError&gt;</h4></section></summary><div class='docblock'>The type of value produced on completion.</div></details><details class="toggle method-toggle" open><summary><section id="method.poll" class="method trait-impl"><a class="src rightside" href="../src/iroh_quinn/path.rs.html#80-103">Source</a><a href="#method.poll" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html#tymethod.poll" class="fn">poll</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;&amp;mut Self&gt;, ctx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html#associatedtype.Output" title="type core::future::future::Future::Output">Output</a>&gt;</h4></section></summary><div class='docblock'>Attempts to resolve the future to a final value, registering
</div></details></div></details></div><h2 id="trait-implementations" class="section-header">Trait Implementations<a href="#trait-implementations" class="anchor">§</a></h2><div id="trait-implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-Future-for-OpenPath" class="impl"><a class="src rightside" href="../src/iroh_quinn/path.rs.html#78-104">Source</a><a href="#impl-Future-for-OpenPath" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html" title="trait core::future::future::Future">Future</a> for <a class="struct" href="struct.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Output" class="associatedtype trait-impl"><a class="src rightside" href="../src/iroh_quinn/path.rs.html#79">Source</a><a href="#associatedtype.Output" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html#associatedtype.Output" class="associatedtype">Output</a> = <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.Path.html" title="struct iroh_quinn::Path">Path</a>, <a class="enum" href="../iroh_quinn_proto/connection/enum.PathError.html" title="enum iroh_quinn_proto::connection::PathError">PathError</a>&gt;</h4></section></summary><div class='docblock'>The type of value produced on completion.</div></details><details class="toggle method-toggle" open><summary><section id="method.poll" class="method trait-impl"><a class="src rightside" href="../src/iroh_quinn/path.rs.html#80-103">Source</a><a href="#method.poll" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html#tymethod.poll" class="fn">poll</a>(self: <a class="struct" href="https://doc.rust-lang.org/nightly/core/pin/struct.Pin.html" title="struct core::pin::Pin">Pin</a>&lt;&amp;mut Self&gt;, ctx: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/core/task/wake/struct.Context.html" title="struct core::task::wake::Context">Context</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/task/poll/enum.Poll.html" title="enum core::task::poll::Poll">Poll</a>&lt;Self::<a class="associatedtype" href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html#associatedtype.Output" title="type core::future::future::Future::Output">Output</a>&gt;</h4></section></summary><div class='docblock'>Attempts to resolve the future to a final value, registering
the current task for wakeup if the value is not yet available. <a href="https://doc.rust-lang.org/nightly/core/future/future/trait.Future.html#tymethod.poll">Read more</a></div></details></div></details></div><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-OpenPath" class="impl"><a href="#impl-Freeze-for-OpenPath" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section><section id="impl-RefUnwindSafe-for-OpenPath" class="impl"><a href="#impl-RefUnwindSafe-for-OpenPath" 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.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section><section id="impl-Send-for-OpenPath" class="impl"><a href="#impl-Send-for-OpenPath" 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.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section><section id="impl-Sync-for-OpenPath" class="impl"><a href="#impl-Sync-for-OpenPath" 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.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section><section id="impl-Unpin-for-OpenPath" class="impl"><a href="#impl-Unpin-for-OpenPath" 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.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section><section id="impl-UnwindSafe-for-OpenPath" class="impl"><a href="#impl-UnwindSafe-for-OpenPath" 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.OpenPath.html" title="struct iroh_quinn::OpenPath">OpenPath</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">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="fn">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="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214">Source</a><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="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
<!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="Error for when a validation token may have been reused"><title>TokenReuseError in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TokenReuseError</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Token<wbr>Reuse<wbr>Error</a></h2><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TokenReuseError" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TokenReuseError" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TokenReuseError" title="Send">Send</a></li><li><a href="#impl-Sync-for-TokenReuseError" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-TokenReuseError" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TokenReuseError" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-IntoEither-for-T" title="IntoEither">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Struct <span class="struct">Token<wbr>Reuse<wbr>Error</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub struct TokenReuseError;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Error for when a validation token may have been reused</p>
<!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="Error for when a validation token may have been reused"><title>TokenReuseError in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TokenReuseError</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Token<wbr>Reuse<wbr>Error</a></h2><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-TokenReuseError" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-TokenReuseError" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-TokenReuseError" title="Send">Send</a></li><li><a href="#impl-Sync-for-TokenReuseError" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-TokenReuseError" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-TokenReuseError" title="UnwindSafe">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block blanket-implementation"><li><a href="#impl-Any-for-T" title="Any">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-T" title="Borrow&#60;T&#62;">Borrow&#60;T&#62;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-T" title="BorrowMut&#60;T&#62;">BorrowMut&#60;T&#62;</a></li><li><a href="#impl-From%3CT%3E-for-T" title="From&#60;T&#62;">From&#60;T&#62;</a></li><li><a href="#impl-Instrument-for-T" title="Instrument">Instrument</a></li><li><a href="#impl-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-IntoEither-for-T" title="IntoEither">IntoEither</a></li><li><a href="#impl-TryFrom%3CU%3E-for-T" title="TryFrom&#60;U&#62;">TryFrom&#60;U&#62;</a></li><li><a href="#impl-TryInto%3CU%3E-for-T" title="TryInto&#60;U&#62;">TryInto&#60;U&#62;</a></li><li><a href="#impl-VZip%3CV%3E-for-T" title="VZip&#60;V&#62;">VZip&#60;V&#62;</a></li><li><a href="#impl-WithSubscriber-for-T" title="WithSubscriber">WithSubscriber</a></li></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Struct <span class="struct">Token<wbr>Reuse<wbr>Error</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/iroh_quinn_proto/token.rs.html#67">Source</a> </span></div><pre class="rust item-decl"><code>pub struct TokenReuseError;</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Error for when a validation token may have been reused</p>
</div></details><h2 id="synthetic-implementations" class="section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor">§</a></h2><div id="synthetic-implementations-list"><section id="impl-Freeze-for-TokenReuseError" class="impl"><a href="#impl-Freeze-for-TokenReuseError" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.TokenReuseError.html" title="struct iroh_quinn::TokenReuseError">TokenReuseError</a></h3></section><section id="impl-RefUnwindSafe-for-TokenReuseError" class="impl"><a href="#impl-RefUnwindSafe-for-TokenReuseError" 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.TokenReuseError.html" title="struct iroh_quinn::TokenReuseError">TokenReuseError</a></h3></section><section id="impl-Send-for-TokenReuseError" class="impl"><a href="#impl-Send-for-TokenReuseError" 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.TokenReuseError.html" title="struct iroh_quinn::TokenReuseError">TokenReuseError</a></h3></section><section id="impl-Sync-for-TokenReuseError" class="impl"><a href="#impl-Sync-for-TokenReuseError" 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.TokenReuseError.html" title="struct iroh_quinn::TokenReuseError">TokenReuseError</a></h3></section><section id="impl-Unpin-for-TokenReuseError" class="impl"><a href="#impl-Unpin-for-TokenReuseError" 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.TokenReuseError.html" title="struct iroh_quinn::TokenReuseError">TokenReuseError</a></h3></section><section id="impl-UnwindSafe-for-TokenReuseError" class="impl"><a href="#impl-UnwindSafe-for-TokenReuseError" 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.TokenReuseError.html" title="struct iroh_quinn::TokenReuseError">TokenReuseError</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#138">Source</a><a href="#impl-Any-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T<div class="where">where
T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#139">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="fn">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="toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#212">Source</a><a href="#impl-Borrow%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214">Source</a><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="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;T</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">Source</a><a href="#impl-BorrowMut%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -1,4 +1,4 @@
<!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="Generates connection IDs for incoming connections"><title>ConnectionIdGenerator in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ConnectionIdGenerator</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Connection<wbr>IdGenerator</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.cid_len" title="cid_len">cid_len</a></li><li><a href="#tymethod.cid_lifetime" title="cid_lifetime">cid_lifetime</a></li><li><a href="#tymethod.generate_cid" title="generate_cid">generate_cid</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.validate" title="validate">validate</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Connection<wbr>IdGenerator</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait ConnectionIdGenerator: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Generates connection IDs for incoming connections"><title>ConnectionIdGenerator in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">ConnectionIdGenerator</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Connection<wbr>IdGenerator</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.cid_len" title="cid_len">cid_len</a></li><li><a href="#tymethod.cid_lifetime" title="cid_lifetime">cid_lifetime</a></li><li><a href="#tymethod.generate_cid" title="generate_cid">generate_cid</a></li></ul><h3><a href="#provided-methods">Provided Methods</a></h3><ul class="block"><li><a href="#method.validate" title="validate">validate</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Connection<wbr>IdGenerator</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/iroh_quinn_proto/cid_generator.rs.html#10">Source</a> </span></div><pre class="rust item-decl"><code>pub trait ConnectionIdGenerator: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.generate_cid" class="fn">generate_cid</a>(&amp;mut self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</a>;
<span class="item-spacer"></span> fn <a href="#tymethod.cid_len" class="fn">cid_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>;
@@ -7,15 +7,15 @@
// Provided method
fn <a href="#method.validate" class="fn">validate</a>(&amp;self, _cid: <a class="struct" href="struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</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.InvalidCid.html" title="struct iroh_quinn::InvalidCid">InvalidCid</a>&gt; { ... }
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Generates connection IDs for incoming connections</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.generate_cid" class="method"><h4 class="code-header">fn <a href="#tymethod.generate_cid" class="fn">generate_cid</a>(&amp;mut self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</a></h4></section></summary><div class="docblock"><p>Generates a new CID</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.generate_cid" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/cid_generator.rs.html#18">Source</a><h4 class="code-header">fn <a href="#tymethod.generate_cid" class="fn">generate_cid</a>(&amp;mut self) -&gt; <a class="struct" href="struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</a></h4></section></summary><div class="docblock"><p>Generates a new CID</p>
<p>Connection IDs MUST NOT contain any information that can be used by
an external observer (that is, one that does not cooperate with the
issuer) to correlate them with other connection IDs for the same
connection. They MUST have high entropy, e.g. due to encrypted data
or cryptographic-grade random data.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.cid_len" class="method"><h4 class="code-header">fn <a href="#tymethod.cid_len" class="fn">cid_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the length of a CID for connections created by this generator</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.cid_lifetime" class="method"><h4 class="code-header">fn <a href="#tymethod.cid_lifetime" class="fn">cid_lifetime</a>(&amp;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="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the lifetime of generated Connection IDs</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.cid_len" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/cid_generator.rs.html#28">Source</a><h4 class="code-header">fn <a href="#tymethod.cid_len" class="fn">cid_len</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the length of a CID for connections created by this generator</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.cid_lifetime" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/cid_generator.rs.html#32">Source</a><h4 class="code-header">fn <a href="#tymethod.cid_lifetime" class="fn">cid_lifetime</a>(&amp;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="https://doc.rust-lang.org/nightly/core/time/struct.Duration.html" title="struct core::time::Duration">Duration</a>&gt;</h4></section></summary><div class="docblock"><p>Returns the lifetime of generated Connection IDs</p>
<p>Connection IDs will be retired after the returned <code>Duration</code>, if any. Assumed to be constant.</p>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.validate" class="method"><h4 class="code-header">fn <a href="#method.validate" class="fn">validate</a>(&amp;self, _cid: <a class="struct" href="struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</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.InvalidCid.html" title="struct iroh_quinn::InvalidCid">InvalidCid</a>&gt;</h4></section></summary><div class="docblock"><p>Quickly determine whether <code>cid</code> could have been generated by this generator</p>
</div></details></div><h2 id="provided-methods" class="section-header">Provided Methods<a href="#provided-methods" class="anchor">§</a></h2><div class="methods"><details class="toggle method-toggle" open><summary><section id="method.validate" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/cid_generator.rs.html#23">Source</a><h4 class="code-header">fn <a href="#method.validate" class="fn">validate</a>(&amp;self, _cid: <a class="struct" href="struct.ConnectionId.html" title="struct iroh_quinn::ConnectionId">ConnectionId</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.InvalidCid.html" title="struct iroh_quinn::InvalidCid">InvalidCid</a>&gt;</h4></section></summary><div class="docblock"><p>Quickly determine whether <code>cid</code> could have been generated by this generator</p>
<p>False positives are permitted, but increase the cost of handling invalid packets.</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-ConnectionIdGenerator-for-HashedConnectionIdGenerator" class="impl"><a href="#impl-ConnectionIdGenerator-for-HashedConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait iroh_quinn::ConnectionIdGenerator">ConnectionIdGenerator</a> for HashedConnectionIdGenerator</h3></section><section id="impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="impl"><a href="#impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait iroh_quinn::ConnectionIdGenerator">ConnectionIdGenerator</a> for RandomConnectionIdGenerator</h3></section></div><script src="../trait.impl/iroh_quinn_proto/cid_generator/trait.ConnectionIdGenerator.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-ConnectionIdGenerator-for-HashedConnectionIdGenerator" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/cid_generator.rs.html#135">Source</a><a href="#impl-ConnectionIdGenerator-for-HashedConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait iroh_quinn::ConnectionIdGenerator">ConnectionIdGenerator</a> for <a class="struct" href="../iroh_quinn_proto/cid_generator/struct.HashedConnectionIdGenerator.html" title="struct iroh_quinn_proto::cid_generator::HashedConnectionIdGenerator">HashedConnectionIdGenerator</a></h3></section><section id="impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/cid_generator.rs.html#77">Source</a><a href="#impl-ConnectionIdGenerator-for-RandomConnectionIdGenerator" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.ConnectionIdGenerator.html" title="trait iroh_quinn::ConnectionIdGenerator">ConnectionIdGenerator</a> for <a class="struct" href="../iroh_quinn_proto/cid_generator/struct.RandomConnectionIdGenerator.html" title="struct iroh_quinn_proto::cid_generator::RandomConnectionIdGenerator">RandomConnectionIdGenerator</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/cid_generator/trait.ConnectionIdGenerator.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
@@ -1,4 +1,4 @@
<!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="Constructs a `QlogConfig` for individual connections."><title>QlogFactory in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">QlogFactory</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Qlog<wbr>Factory</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.for_connection" title="for_connection">for_connection</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Qlog<wbr>Factory</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait QlogFactory:
<!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="Constructs a `QlogConfig` for individual connections."><title>QlogFactory in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">QlogFactory</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Qlog<wbr>Factory</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.for_connection" title="for_connection">for_connection</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Qlog<wbr>Factory</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/iroh_quinn_proto/config/qlog.rs.html#14">Source</a> </span></div><pre class="rust item-decl"><code>pub trait QlogFactory:
<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a>
+ <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a>
+ 'static {
@@ -12,7 +12,7 @@
) -&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.QlogConfig.html" title="struct iroh_quinn::QlogConfig">QlogConfig</a>&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Constructs a <a href="struct.QlogConfig.html" title="struct iroh_quinn::QlogConfig"><code>QlogConfig</code></a> for individual connections.</p>
<p>This is set via <a href="struct.TransportConfig.html#method.qlog_factory" title="method iroh_quinn::TransportConfig::qlog_factory"><code>TransportConfig::qlog_factory</code></a>.</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.for_connection" class="method"><h4 class="code-header">fn <a href="#tymethod.for_connection" class="fn">for_connection</a>(
</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.for_connection" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/config/qlog.rs.html#18-24">Source</a><h4 class="code-header">fn <a href="#tymethod.for_connection" class="fn">for_connection</a>(
&amp;self,
side: <a class="enum" href="enum.Side.html" title="enum iroh_quinn::Side">Side</a>,
remote: <a class="enum" href="https://doc.rust-lang.org/nightly/core/net/socket_addr/enum.SocketAddr.html" title="enum core::net::socket_addr::SocketAddr">SocketAddr</a>,
@@ -20,4 +20,4 @@
now: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.Instant.html" title="struct std::time::Instant">Instant</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.QlogConfig.html" title="struct iroh_quinn::QlogConfig">QlogConfig</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a <a href="struct.QlogConfig.html" title="struct iroh_quinn::QlogConfig"><code>QlogConfig</code></a> for a connection, if logging should be enabled.</p>
<p>If <code>None</code> is returned, qlog capture is disabled for the connection.</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-QlogFactory-for-QlogFileFactory" class="impl"><a href="#impl-QlogFactory-for-QlogFileFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.QlogFactory.html" title="trait iroh_quinn::QlogFactory">QlogFactory</a> for <a class="struct" href="struct.QlogFileFactory.html" title="struct iroh_quinn::QlogFileFactory">QlogFileFactory</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/config/qlog/trait.QlogFactory.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-QlogFactory-for-QlogFileFactory" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/config/qlog.rs.html#133">Source</a><a href="#impl-QlogFactory-for-QlogFileFactory" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.QlogFactory.html" title="trait iroh_quinn::QlogFactory">QlogFactory</a> for <a class="struct" href="struct.QlogFileFactory.html" title="struct iroh_quinn::QlogFileFactory">QlogFileFactory</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/config/qlog/trait.QlogFactory.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
+3 -3
View File
@@ -1,7 +1,7 @@
<!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="Object to get current `SystemTime`"><title>TimeSource in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TimeSource</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Time<wbr>Source</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.now" title="now">now</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Time<wbr>Source</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait TimeSource: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Object to get current `SystemTime`"><title>TimeSource in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TimeSource</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Time<wbr>Source</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.now" title="now">now</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Time<wbr>Source</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/iroh_quinn_proto/config/mod.rs.html#682">Source</a> </span></div><pre class="rust item-decl"><code>pub trait TimeSource: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required method
fn <a href="#tymethod.now" class="fn">now</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html" title="struct std::time::SystemTime">SystemTime</a>;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Object to get current <a href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html" title="struct std::time::SystemTime"><code>SystemTime</code></a></p>
<p>This exists to allow system time to be mocked in tests, or wherever else desired.</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.now" class="method"><h4 class="code-header">fn <a href="#tymethod.now" class="fn">now</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html" title="struct std::time::SystemTime">SystemTime</a></h4></section></summary><div class="docblock"><p>Get <a href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html#method.now" title="associated function std::time::SystemTime::now"><code>SystemTime::now()</code></a> or the mocked equivalent</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-TimeSource-for-StdSystemTime" class="impl"><a href="#impl-TimeSource-for-StdSystemTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TimeSource.html" title="trait iroh_quinn::TimeSource">TimeSource</a> for <a class="struct" href="struct.StdSystemTime.html" title="struct iroh_quinn::StdSystemTime">StdSystemTime</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/config/trait.TimeSource.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</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.now" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/config/mod.rs.html#684">Source</a><h4 class="code-header">fn <a href="#tymethod.now" class="fn">now</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html" title="struct std::time::SystemTime">SystemTime</a></h4></section></summary><div class="docblock"><p>Get <a href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html#method.now" title="associated function std::time::SystemTime::now"><code>SystemTime::now()</code></a> or the mocked equivalent</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-TimeSource-for-StdSystemTime" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/config/mod.rs.html#692">Source</a><a href="#impl-TimeSource-for-StdSystemTime" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TimeSource.html" title="trait iroh_quinn::TimeSource">TimeSource</a> for <a class="struct" href="struct.StdSystemTime.html" title="struct iroh_quinn::StdSystemTime">StdSystemTime</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/config/trait.TimeSource.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
+3 -3
View File
@@ -1,4 +1,4 @@
<!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="Responsible for limiting clients ability to reuse validation tokens"><title>TokenLog in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TokenLog</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Token<wbr>Log</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.check_and_insert" title="check_and_insert">check_and_insert</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Token<wbr>Log</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait TokenLog: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Responsible for limiting clients ability to reuse validation tokens"><title>TokenLog in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TokenLog</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Token<wbr>Log</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.check_and_insert" title="check_and_insert">check_and_insert</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Token<wbr>Log</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/iroh_quinn_proto/token.rs.html#31">Source</a> </span></div><pre class="rust item-decl"><code>pub trait TokenLog: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required method
fn <a href="#tymethod.check_and_insert" class="fn">check_and_insert</a>(
&amp;self,
@@ -18,7 +18,7 @@ Servers are encouraged to allow tokens to be used only once, if possible; tokens
additional information about clients to further narrow applicability or reuse.</p>
</blockquote>
<p><code>TokenLog</code> pertains only to tokens provided in NEW_TOKEN frames.</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.check_and_insert" class="method"><h4 class="code-header">fn <a href="#tymethod.check_and_insert" class="fn">check_and_insert</a>(
</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.check_and_insert" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/token.rs.html#58-63">Source</a><h4 class="code-header">fn <a href="#tymethod.check_and_insert" class="fn">check_and_insert</a>(
&amp;self,
nonce: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u128.html">u128</a>,
issued: <a class="struct" href="https://doc.rust-lang.org/nightly/std/time/struct.SystemTime.html" title="struct std::time::SystemTime">SystemTime</a>,
@@ -42,4 +42,4 @@ attacks</a>. The QUIC specification requires that this be limited, if not preven
vulnerability; it is permissible for a <code>TokenLog</code> to always return <code>Err</code>. A false positive
causes the token to be ignored, which may cause the transmission of some 0.5-RTT data to be
delayed until the handshake completes, if a sufficient amount of 0.5-RTT data it sent.</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-TokenLog-for-BloomTokenLog" class="impl"><a href="#impl-TokenLog-for-BloomTokenLog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenLog.html" title="trait iroh_quinn::TokenLog">TokenLog</a> for <a class="struct" href="struct.BloomTokenLog.html" title="struct iroh_quinn::BloomTokenLog">BloomTokenLog</a></h3></section><section id="impl-TokenLog-for-NoneTokenLog" class="impl"><a href="#impl-TokenLog-for-NoneTokenLog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenLog.html" title="trait iroh_quinn::TokenLog">TokenLog</a> for <a class="struct" href="struct.NoneTokenLog.html" title="struct iroh_quinn::NoneTokenLog">NoneTokenLog</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/token/trait.TokenLog.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-TokenLog-for-BloomTokenLog" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/bloom_token_log.rs.html#56">Source</a><a href="#impl-TokenLog-for-BloomTokenLog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenLog.html" title="trait iroh_quinn::TokenLog">TokenLog</a> for <a class="struct" href="struct.BloomTokenLog.html" title="struct iroh_quinn::BloomTokenLog">BloomTokenLog</a></h3></section><section id="impl-TokenLog-for-NoneTokenLog" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/token.rs.html#72">Source</a><a href="#impl-TokenLog-for-NoneTokenLog" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenLog.html" title="trait iroh_quinn::TokenLog">TokenLog</a> for <a class="struct" href="struct.NoneTokenLog.html" title="struct iroh_quinn::NoneTokenLog">NoneTokenLog</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/token/trait.TokenLog.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
+4 -4
View File
@@ -1,13 +1,13 @@
<!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="Responsible for storing validation tokens received from servers and retrieving them for use in subsequent connections"><title>TokenStore in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TokenStore</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Token<wbr>Store</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.insert" title="insert">insert</a></li><li><a href="#tymethod.take" title="take">take</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Token<wbr>Store</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"></span></div><pre class="rust item-decl"><code>pub trait TokenStore: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
<!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="Responsible for storing validation tokens received from servers and retrieving them for use in subsequent connections"><title>TokenStore in iroh_quinn - Rust</title><script>if(window.location.protocol!=="file:")document.head.insertAdjacentHTML("beforeend","SourceSerif4-Regular-6b053e98.ttf.woff2,FiraSans-Italic-81dc35de.woff2,FiraSans-Regular-0fe48ade.woff2,FiraSans-MediumItalic-ccf7e434.woff2,FiraSans-Medium-e1aa3f0a.woff2,SourceCodePro-Regular-8badfe75.ttf.woff2,SourceCodePro-Semibold-aa29a496.ttf.woff2".split(",").map(f=>`<link rel="preload" as="font" type="font/woff2"href="../static.files/${f}">`).join(""))</script><link rel="stylesheet" href="../static.files/normalize-9960930a.css"><link rel="stylesheet" href="../static.files/rustdoc-ca0dd0c4.css"><meta name="rustdoc-vars" data-root-path="../" data-static-root-path="../static.files/" data-current-crate="iroh_quinn" data-themes="" data-resource-suffix="" data-rustdoc-version="1.92.0-nightly (b6f0945e4 2025-10-08)" data-channel="nightly" data-search-js="search-8d3311b9.js" data-stringdex-js="stringdex-828709d0.js" data-settings-js="settings-c38705f0.js" ><script src="../static.files/storage-e2aeef58.js"></script><script defer src="sidebar-items.js"></script><script defer src="../static.files/main-ce535bd0.js"></script><noscript><link rel="stylesheet" href="../static.files/noscript-263c88ec.css"></noscript><link rel="alternate icon" type="image/png" href="../static.files/favicon-32x32-eab170b8.png"><link rel="icon" type="image/svg+xml" href="../static.files/favicon-044be391.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]--><rustdoc-topbar><h2><a href="#">TokenStore</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../iroh_quinn/index.html">iroh_<wbr>quinn</a><span class="version">0.16.1</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Token<wbr>Store</a></h2><h3><a href="#required-methods">Required Methods</a></h3><ul class="block"><li><a href="#tymethod.insert" title="insert">insert</a></li><li><a href="#tymethod.take" title="take">take</a></li></ul><h3><a href="#implementors">Implementors</a></h3></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate iroh_<wbr>quinn</a></h2></div></div></nav><div class="sidebar-resizer" title="Drag to resize sidebar"></div><main><div class="width-limiter"><section id="main-content" class="content"><div class="main-heading"><div class="rustdoc-breadcrumbs"><a href="index.html">iroh_quinn</a></div><h1>Trait <span class="trait">Token<wbr>Store</span>&nbsp;<button id="copy-path" title="Copy item path to clipboard">Copy item path</button></h1><rustdoc-toolbar></rustdoc-toolbar><span class="sub-heading"><a class="src" href="../src/iroh_quinn_proto/token.rs.html#80">Source</a> </span></div><pre class="rust item-decl"><code>pub trait TokenStore: <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> + <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> {
// Required methods
fn <a href="#tymethod.insert" class="fn">insert</a>(&amp;self, server_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, token: Bytes);
<span class="item-spacer"></span> fn <a href="#tymethod.take" class="fn">take</a>(&amp;self, server_name: &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/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Bytes&gt;;
}</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>Responsible for storing validation tokens received from servers and retrieving them for use in
subsequent connections</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.insert" class="method"><h4 class="code-header">fn <a href="#tymethod.insert" class="fn">insert</a>(&amp;self, server_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, token: Bytes)</h4></section></summary><div class="docblock"><p>Potentially store a token for later one-time use</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.insert" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/token.rs.html#84">Source</a><h4 class="code-header">fn <a href="#tymethod.insert" class="fn">insert</a>(&amp;self, server_name: &amp;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.str.html">str</a>, token: Bytes)</h4></section></summary><div class="docblock"><p>Potentially store a token for later one-time use</p>
<p>Called when a NEW_TOKEN frame is received from the server.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.take" class="method"><h4 class="code-header">fn <a href="#tymethod.take" class="fn">take</a>(&amp;self, server_name: &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/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Bytes&gt;</h4></section></summary><div class="docblock"><p>Try to find and take a token that was stored with the given server name</p>
</div></details><details class="toggle method-toggle" open><summary><section id="tymethod.take" class="method"><a class="src rightside" href="../src/iroh_quinn_proto/token.rs.html#92">Source</a><h4 class="code-header">fn <a href="#tymethod.take" class="fn">take</a>(&amp;self, server_name: &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/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;Bytes&gt;</h4></section></summary><div class="docblock"><p>Try to find and take a token that was stored with the given server name</p>
<p>The same token must never be returned from <code>take</code> twice, as doing so can be used to
de-anonymize a clients traffic.</p>
<p>Called when trying to connect to a server. It is always ok for this to return <code>None</code>.</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-TokenStore-for-NoneTokenStore" class="impl"><a href="#impl-TokenStore-for-NoneTokenStore" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenStore.html" title="trait iroh_quinn::TokenStore">TokenStore</a> for <a class="struct" href="struct.NoneTokenStore.html" title="struct iroh_quinn::NoneTokenStore">NoneTokenStore</a></h3></section><section id="impl-TokenStore-for-TokenMemoryCache" class="impl"><a href="#impl-TokenStore-for-TokenMemoryCache" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenStore.html" title="trait iroh_quinn::TokenStore">TokenStore</a> for <a class="struct" href="struct.TokenMemoryCache.html" title="struct iroh_quinn::TokenMemoryCache">TokenMemoryCache</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/token/trait.TokenStore.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
</div></details></div><h2 id="implementors" class="section-header">Implementors<a href="#implementors" class="anchor">§</a></h2><div id="implementors-list"><section id="impl-TokenStore-for-NoneTokenStore" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/token.rs.html#98">Source</a><a href="#impl-TokenStore-for-NoneTokenStore" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenStore.html" title="trait iroh_quinn::TokenStore">TokenStore</a> for <a class="struct" href="struct.NoneTokenStore.html" title="struct iroh_quinn::NoneTokenStore">NoneTokenStore</a></h3></section><section id="impl-TokenStore-for-TokenMemoryCache" class="impl"><a class="src rightside" href="../src/iroh_quinn_proto/token_memory_cache.rs.html#29">Source</a><a href="#impl-TokenStore-for-TokenMemoryCache" class="anchor">§</a><h3 class="code-header">impl <a class="trait" href="trait.TokenStore.html" title="trait iroh_quinn::TokenStore">TokenStore</a> for <a class="struct" href="struct.TokenMemoryCache.html" title="struct iroh_quinn::TokenMemoryCache">TokenMemoryCache</a></h3></section></div><script src="../trait.impl/iroh_quinn_proto/token/trait.TokenStore.js" data-ignore-extern-crates="iroh_quinn_proto" async></script></section></div></main></body></html>
+1
View File
@@ -0,0 +1 @@
rn_("AQEAOjAAAAEAAAAAAAkAEAAAALUPtg+gEFsRnhKfEoYTBRQ1FDYUAYACsOATgAABsDATmAABZHDDgISxQBRFAAGgkAAAE0cCgAk=")
-1
View File
@@ -1 +0,0 @@
rn_("AYECoBAAABLmoHAAABMmYWMBhwKwABN4AAGwABN6AAE0NlMAhKCQAAATDbCwE54AAYEACfWYBwAANwCVCAwBGQA=")
+1
View File
@@ -0,0 +1 @@
rn_("AQEBsFAPsAABY/Q3BQAAAQABALcAAQABoIAAABQ9ZgEyEwAA8wYBc/IiDQAAQgQzAAOgYAAAFCFjaXPynhEAAAEA")
-1
View File
@@ -1 +0,0 @@
rn_("AQQBsAASygABczswAAABAAALAAIAOxMHACMUAwBHAAABhqCAAAATH7EAFDAAAbBAEo0AAbCAFD4AAbBQEswAARUAFvOMDgAAAQABAAEFAPPRDwAAAQABAGOAhLBAEFcAAaAAAAAHVgDwAA==")
-1
View File
@@ -1 +0,0 @@
rn_("AYMCsQAUQAABsNAUMgABa20BBAGgoAAAFEt38jsUAAABAAELAPOwEwAAAQABACOAAqCAAAAT1mVvYwQDoGAAABNvZW5wAVEMAAABCgDzkxMAAAEAbQATgAKiEAAAFEtsb3cAAACFoGAAABJEoQAAABQDBIEDOzAAAAEAADsABAA+BgUAxAcAABQIMwBJEQAAQ4ADsIARSAENoAAAAAHyZGt0")
+1
View File
@@ -0,0 +1 @@
rn_("AQEA9W0IAAABAAEAAQABAAEAAqAwAAAQ5KCQAAATLTBo9cMRAAByAQEAAQABABOAAqAwAAAPpmRyIwKEsBAJYQMDsCAMNwD2oDAAAA/KEgAY9SAGAAAvAAEAAQABADOAhLCgEn8AAbBAD7AAARBJAA==")
-1
View File
@@ -1 +0,0 @@
rn_("AQQA9iYNAAABAPQCAQAhAQEAAQoA84ASAAABAJoAAQEA94cJAAABAMQGAQBpAAEADgEjgAKwYBOBAAFpbwECAPToDAAAAQDTBQEAAQUA9JcTAAABAEYAAQD3CAAAiLCQE1EAAaAgAAAM6rCQEbgAAQTcAzowAAABAAAAAAAIABAAAAAZBncJeAmNDI4MxhDHEK8SsBI=")
-1
View File
@@ -1 +0,0 @@
rn_("AQIA9HcRAAABAAEAAQABAQDzjREAAAEAAQATgAJKXvv5BghlcwEKAPNXEwAAAQABAAGAArAgE8wAAaBgAAATJm92AYACoDAAABJyoAAAABLmY2TzgIUFEAY=")
+1
View File
@@ -0,0 +1 @@
rn_("AQEBoEAAABFQc/ViDAAAxAQ1AQEAAQATggKgIAAADSplcgECAPTDDwAAAQDpAAEAI4ECoBAAAAxhZWkTgAKg8AAAE7lucjMAA7AwCZAAAWVvdAGgEQAA")
-1
View File
@@ -1 +0,0 @@
rn_("AQAA9AkQAADBAgEArADzAAFzOzAAAAEAABkACABIBQIAVgwCAMIPAQCBEAEAvRABAKgRAQA7EwcAIxQDACOAArEQFCgAAWF0")
+1
View File
@@ -0,0 +1 @@
rn_("AQIA9MkSAAABAIYAAQABAgD0xhAAAAEAmwABAAEDAPT9EgAAAQCLAAEAAQIBoEAAABLocjswAAABAAAHAAIAxBABAFwRBQDzAIQDQAg6MAAAAQAAAAAAFQAQAAAAwQfCB8MHsg+zD1UQVhB0EHUQBREGEbMRtBHHEsgS1BLVEuQSDhMPE04TTxM=")
+1
View File
@@ -0,0 +1 @@
rn_("AQQA9goUAAABAA0AAQAjAAQAAQMA83ASAAABAAEAI4ECsSAUQQABY2sTgAKgMAAAE8tuclMAA6BAAAAMT2VvcvTwEAAAagGbAQEA")
-1
View File
@@ -1 +0,0 @@
rn_("AQIAOzAAAAEAAAUAAQAXFAUA8w0BbTswAAABAAAFAAEA2BMFACMDhLBAEnAAAaEAAAAUHaAAAAATojAIAjswAAABAAAUAAUA+BAHAJESAQAEEwQA0BMEADoUAAA=")
+1
View File
@@ -0,0 +1 @@
rn_("AQUA9C4TAAABAAEAAQABAAD1ogwAAAEAAQABAAEA84ACZ2sTgAKwsBOEAAFhbwGFArBwE6wAAbAwEwwAAWVzEwADsEAPrgABoGAAABFVYmVzOzAAAAEAABIABAAvBgEAPwcKACUQAQB3EAMAAQMA9EEQAAABAAQAAQABCwGgQAAAE/Jl8hEUAAABAPOAAmRy8wACZW87MAAAAQAABwACABIIAwBTCAMAAQIAOzAAAAEAAAkAAQAmDAkA84ACb3QBAwA7MAAAAQAA3wACAOwHAABHC94AAQIBoHAAABHAaTswAAABAADxAAIA6wcAAFYK8AATgAKgQAAADGBydQEEAPTsEgAAAQCLAAEAAQMA84MSAAABAJoA84ACYW/XBQAAiLBADRoAAaAwAAAMMLEwFA4AATSBFjswAAABAAAeAA0AUwUBAAcGAQA4DAAAZQwHAIgMAQC8DwEAoRABACoRAAB6EQMAtxEBAGISAAC7EgEAMxQBAA==")
+1
View File
@@ -0,0 +1 @@
rn_("AYMCoFAAABDcoKAAABLya3ABAAGwQBJKAAFs9M4JAAABANwGAQABCAD0XhIAAAEAAQABAAEEAbAAELUAAXMBKRAAAAECAaBQAAAStmMB8QwAALcAAACFsEANKwABoDAAAAxElQABOzAAAAEAAAgABABbBQAAHQYCAPQMAQCZDwIAJwEAgIWwMAmTAAGgEAAAEyKwIAfuAAGRAEQBEAD0JhQAAAEAAQABAAEDAPTOCQAAAQDcBgEAY4ADoAAAAAxEbnJ1AQACsNATYQABoDAAAA+cYmr2AQYAAAEAAQBKAAEAZgEBAAGwgBOAAAF0OzAAAAEAAEAABABLBgAAfQkAAIgJAACsDD0AAQkA83wSAAABAAEA84ADY2d0AYMCoJAAABPHoJAAABPIMjMBgAKgUAAAE++ggAAAEx9jZfMAAnN08rUHAAABAAEAAaCwAAATY2Lz+hIAABQBAQAjgAKgAAAAEvlkciOAAqBQAAATuWNl84ACaXkBBAD1BxEAAAEAAQABAAEA8wEBbgGrBwAAAQEAOzAAAAEAAAkAAgBbCAcAvRIBAAEGAPRWEwAAAQABAAEAAQ8A9C8UAAABAAEAAQDzgQJobQEAAbBAE/MAAWX1uxMAAAEAAQABAAEAU4ADoCAAABGkbG50120AgMugIAAAFCGwYBCcAAGwQA/SAAHAGzgK")
-1
View File
@@ -1 +0,0 @@
rn_("AQAAOzAAAAEAAAYAAgAlEwAAiBMFACOIArBAE/YAAWVzAQQBsDAS/AABY/NKEQAAAQABAAEFADswAAABAAAIAAMAuhECAKoSBAC3EwAA8wEDY2Vw8+sMAAABAAEAAQIA9oEJAABQAH8GAQCvAAEA84ACbnI=")
+1
View File
@@ -0,0 +1 @@
rn_("AQUA9MwQAAABAAEAAQATgAKgsAAAE5NjcwEEAPOZDwAAAQABAAGAAqBQAAAQoKBgAAARDmlyAYACoCAAAAycoGAAABENZWgBAQGgIAAAEQxi85gMAAABAAEAE4ECoBAAAAybYWMBgAKgEAAAE1+wMA0uAAFlcyMAAqBAAAAT8mV38hEUAAABAAEGAPS7EgAAAQB3AQEAEwACsGASvQABZm3yAA0AAAEAAQEA9NkQAAABAKoAAQAjgAKgsAAAE3pkZwGCAqCgAAAS6aBAAAAQSG9284ADZ25yAYACoEAAABK2oDAAAA+WaGw3PwAAirBAD5cAAaAwAAAMlzRgVzswAAABAAAaAAQA5AEAACYEDgAmDAkA8QwAAA==")
-1
View File
@@ -1 +0,0 @@
rn_("AQYA9FMTAAABAAEAAQABDwD0LBQAAAEAAQABAAEAAbDwFDQAAWv1qxMAAAUAAQABACQAAQIA9EYQAAABAKcAAQD3AAAAhbEAFCEAAYkwAPKEEgAAAQATgAKwEAx+AAFlbwEFADswAAABAAANAAEAYhENAAECAPPYDwAAAQABAAECAPTUDwAAAQABAAEAAQMAOzAAAAEAAAgAAQCDEAgAAYACoAAAAAxUsDAT8AABcXIBgAKgQAAAENWwwBPmAAFlcwEBADswAAABAAATAAEA9Q8TACOAArCQE1oAAWltdzYAAIqgUAAAE7WwcBOZAAGgIAAADQ2cVRE7MAAAAQAACQADAMsHAACuEAMAuBMEAAECAbAwETsAAXABUBIAALOAhKAgAAARoQIoBA==")

Some files were not shown because too many files have changed in this diff Show More