mirror of
https://github.com/OMGeeky/google-apis-rs.git
synced 2026-01-27 04:10:02 +01:00
245 lines
26 KiB
HTML
245 lines
26 KiB
HTML
<!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="API documentation for the Rust `rustls` crate."><meta name="keywords" content="rust, rustlang, rust-lang, rustls"><title>rustls - Rust</title><link rel="stylesheet" type="text/css" href="../normalize.css"><link rel="stylesheet" type="text/css" href="../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" type="text/css" href="../light.css" id="themeStyle"><link rel="stylesheet" type="text/css" href="../dark.css" disabled ><link rel="stylesheet" type="text/css" href="../ayu.css" disabled ><script id="default-settings"></script><script src="../storage.js"></script><noscript><link rel="stylesheet" href="../noscript.css"></noscript><link rel="icon" type="image/svg+xml" href="../favicon.svg">
|
||
<link rel="alternate icon" type="image/png" href="../favicon-16x16.png">
|
||
<link rel="alternate icon" type="image/png" href="../favicon-32x32.png"><style type="text/css">#crate-search{background-image:url("../down-arrow.svg");}</style></head><body class="rustdoc mod"><!--[if lte IE 8]><div class="warning">This old browser is unsupported and will most likely display funky things.</div><![endif]--><nav class="sidebar"><div class="sidebar-menu">☰</div><a href='../rustls/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Crate rustls</p><div class="block version"><p>Version 0.19.0</p></div><div class="sidebar-elems"><a id="all-types" href="all.html"><p>See all rustls's items</p></a><div class="block items"><ul><li><a href="#modules">Modules</a></li><li><a href="#structs">Structs</a></li><li><a href="#enums">Enums</a></li><li><a href="#statics">Statics</a></li><li><a href="#traits">Traits</a></li><li><a href="#types">Type Definitions</a></li></ul></div><p class="location"></p><div id="sidebar-vars" data-name="rustls" data-ty="mod" data-relpath="../"></div></div></nav><div class="theme-picker"><button id="theme-picker" aria-label="Pick another theme!" aria-haspopup="menu"><img src="../brush.svg" width="18" alt="Pick another theme!"></button><div id="theme-choices" role="menu"></div></div><script src="../theme.js"></script><nav class="sub"><form class="search-form"><div class="search-container"><div><select id="crate-search"><option value="All crates">All crates</option></select><input class="search-input" name="search" disabled autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"></div><button type="button" class="help-button">?</button>
|
||
<a id="settings-menu" href="../settings.html"><img src="../wheel.svg" width="18" alt="Change settings"></a></div></form></nav><section id="main" class="content"><h1 class="fqn"><span class="in-band">Crate <a class="mod" href="">rustls</a></span><span class="out-of-band"><span id="render-detail"><a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">−</span>]</a></span><a class="srclink" href="../src/rustls/lib.rs.html#1-334" title="goto source code">[src]</a></span></h1><div class="docblock"><h1 id="rustls---a-modern-tls-library" class="section-header"><a href="#rustls---a-modern-tls-library">Rustls - a modern TLS library</a></h1>
|
||
<p>Rustls is a TLS library that aims to provide a good level of cryptographic security,
|
||
requires no configuration to achieve that security, and provides no unsafe features or
|
||
obsolete cryptography.</p>
|
||
<h2 id="current-features" class="section-header"><a href="#current-features">Current features</a></h2>
|
||
<ul>
|
||
<li>TLS1.2 and TLS1.3.</li>
|
||
<li>ECDSA, Ed25519 or RSA server authentication by clients.</li>
|
||
<li>ECDSA, Ed25519 or RSA server authentication by servers.</li>
|
||
<li>Forward secrecy using ECDHE; with curve25519, nistp256 or nistp384 curves.</li>
|
||
<li>AES128-GCM and AES256-GCM bulk encryption, with safe nonces.</li>
|
||
<li>ChaCha20-Poly1305 bulk encryption (<a href="https://tools.ietf.org/html/rfc7905">RFC7905</a>).</li>
|
||
<li>ALPN support.</li>
|
||
<li>SNI support.</li>
|
||
<li>Tunable MTU to make TLS messages match size of underlying transport.</li>
|
||
<li>Optional use of vectored IO to minimise system calls.</li>
|
||
<li>TLS1.2 session resumption.</li>
|
||
<li>TLS1.2 resumption via tickets (RFC5077).</li>
|
||
<li>TLS1.3 resumption via tickets or session storage.</li>
|
||
<li>TLS1.3 0-RTT data for clients.</li>
|
||
<li>Client authentication by clients.</li>
|
||
<li>Client authentication by servers.</li>
|
||
<li>Extended master secret support (RFC7627).</li>
|
||
<li>Exporters (RFC5705).</li>
|
||
<li>OCSP stapling by servers.</li>
|
||
<li>SCT stapling by servers.</li>
|
||
<li>SCT verification by clients.</li>
|
||
</ul>
|
||
<h2 id="possible-future-features" class="section-header"><a href="#possible-future-features">Possible future features</a></h2>
|
||
<ul>
|
||
<li>PSK support.</li>
|
||
<li>OCSP verification by clients.</li>
|
||
<li>Certificate pinning.</li>
|
||
</ul>
|
||
<h2 id="non-features" class="section-header"><a href="#non-features">Non-features</a></h2>
|
||
<p>The following things are broken, obsolete, badly designed, underspecified,
|
||
dangerous and/or insane. Rustls does not support:</p>
|
||
<ul>
|
||
<li>SSL1, SSL2, SSL3, TLS1 or TLS1.1.</li>
|
||
<li>RC4.</li>
|
||
<li>DES or triple DES.</li>
|
||
<li>EXPORT ciphersuites.</li>
|
||
<li>MAC-then-encrypt ciphersuites.</li>
|
||
<li>Ciphersuites without forward secrecy.</li>
|
||
<li>Renegotiation.</li>
|
||
<li>Kerberos.</li>
|
||
<li>Compression.</li>
|
||
<li>Discrete-log Diffie-Hellman.</li>
|
||
<li>Automatic protocol version downgrade.</li>
|
||
<li>AES-GCM with unsafe nonces.</li>
|
||
</ul>
|
||
<p>There are plenty of other libraries that provide these features should you
|
||
need them.</p>
|
||
<h3 id="platform-support" class="section-header"><a href="#platform-support">Platform support</a></h3>
|
||
<p>Rustls uses <a href="https://crates.io/crates/ring"><code>ring</code></a> for implementing the
|
||
cryptography in TLS. As a result, rustls only runs on platforms
|
||
<a href="https://github.com/briansmith/ring#online-automated-testing">supported by <code>ring</code></a>.
|
||
At the time of writing this means x86, x86-64, armv7, and aarch64.</p>
|
||
<h2 id="design-overview" class="section-header"><a href="#design-overview">Design Overview</a></h2><h3 id="rustls-does-not-take-care-of-network-io" class="section-header"><a href="#rustls-does-not-take-care-of-network-io">Rustls does not take care of network IO</a></h3>
|
||
<p>It doesn't make or accept TCP connections, or do DNS, or read or write files.</p>
|
||
<p>There's example client and server code which uses mio to do all needed network
|
||
IO.</p>
|
||
<h3 id="rustls-provides-encrypted-pipes" class="section-header"><a href="#rustls-provides-encrypted-pipes">Rustls provides encrypted pipes</a></h3>
|
||
<p>These are the <code>ServerSession</code> and <code>ClientSession</code> types. You supply raw TLS traffic
|
||
on the left (via the <code>read_tls()</code> and <code>write_tls()</code> methods) and then read/write the
|
||
plaintext on the right:</p>
|
||
<pre><code class="language-text"> TLS Plaintext
|
||
=== =========
|
||
read_tls() +-----------------------+ io::Read
|
||
| |
|
||
+---------> ClientSession +--------->
|
||
| or |
|
||
<---------+ ServerSession <---------+
|
||
| |
|
||
write_tls() +-----------------------+ io::Write
|
||
</code></pre>
|
||
<h3 id="rustls-takes-care-of-server-certificate-verification" class="section-header"><a href="#rustls-takes-care-of-server-certificate-verification">Rustls takes care of server certificate verification</a></h3>
|
||
<p>You do not need to provide anything other than a set of root certificates to trust.
|
||
Certificate verification cannot be turned off or disabled in the main API.</p>
|
||
<h2 id="getting-started" class="section-header"><a href="#getting-started">Getting started</a></h2>
|
||
<p>This is the minimum you need to do to make a TLS client connection.</p>
|
||
<p>First, we make a <code>ClientConfig</code>. You're likely to make one of these per process,
|
||
and use it for all connections made by that process.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">config</span> <span class="op">=</span> <span class="ident">rustls</span>::<span class="ident">ClientConfig</span>::<span class="ident">new</span>();</pre></div>
|
||
<p>Next we load some root certificates. These are used to authenticate the server.
|
||
The recommended way is to depend on the <code>webpki_roots</code> crate which contains
|
||
the Mozilla set of root certificates.</p>
|
||
|
||
<div class='information'><div class='tooltip ignore'>ⓘ</div></div><div class="example-wrap"><pre class="rust rust-example-rendered ignore">
|
||
<span class="ident">config</span>.<span class="ident">root_store</span>.<span class="ident">add_server_trust_anchors</span>(<span class="kw-2">&</span><span class="ident">webpki_roots</span>::<span class="ident">TLS_SERVER_ROOTS</span>);</pre></div>
|
||
<p>Now we can make a session. You need to provide the server's hostname so we
|
||
know what to expect to find in the server's certificate.</p>
|
||
|
||
<div class="example-wrap"><pre class="rust rust-example-rendered">
|
||
<span class="kw">let</span> <span class="ident">rc_config</span> <span class="op">=</span> <span class="ident">Arc</span>::<span class="ident">new</span>(<span class="ident">config</span>);
|
||
<span class="kw">let</span> <span class="ident">example_com</span> <span class="op">=</span> <span class="ident">webpki</span>::<span class="ident">DNSNameRef</span>::<span class="ident">try_from_ascii_str</span>(<span class="string">"example.com"</span>).<span class="ident">unwrap</span>();
|
||
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">client</span> <span class="op">=</span> <span class="ident">rustls</span>::<span class="ident">ClientSession</span>::<span class="ident">new</span>(<span class="kw-2">&</span><span class="ident">rc_config</span>, <span class="ident">example_com</span>);</pre></div>
|
||
<p>Now you should do appropriate IO for the <code>client</code> object. If <code>client.wants_read()</code> yields
|
||
true, you should call <code>client.read_tls()</code> when the underlying connection has data.
|
||
Likewise, if <code>client.wants_write()</code> yields true, you should call <code>client.write_tls()</code>
|
||
when the underlying connection is able to send data. You should continue doing this
|
||
as long as the connection is valid.</p>
|
||
<p>The return types of <code>read_tls()</code> and <code>write_tls()</code> only tell you if the IO worked. No
|
||
parsing or processing of the TLS messages is done. After each <code>read_tls()</code> you should
|
||
therefore call <code>client.process_new_packets()</code> which parses and processes the messages.
|
||
Any error returned from <code>process_new_packets</code> is fatal to the session, and will tell you
|
||
why. For example, if the server's certificate is expired <code>process_new_packets</code> will
|
||
return <code>Err(WebPKIError(CertExpired))</code>. From this point on, <code>process_new_packets</code> will
|
||
not do any new work and will return that error continually.</p>
|
||
<p>You can extract newly received data by calling <code>client.read()</code> (via the <code>io::Read</code>
|
||
trait). You can send data to the peer by calling <code>client.write()</code> (via the <code>io::Write</code>
|
||
trait). Note that <code>client.write()</code> buffers data you send if the TLS session is not
|
||
yet established: this is useful for writing (say) a HTTP request, but don't write huge
|
||
amounts of data.</p>
|
||
<p>The following code uses a fictional socket IO API for illustration, and does not handle
|
||
errors.</p>
|
||
<pre><code class="language-text">use std::io;
|
||
|
||
client.write(b"GET / HTTP/1.0\r\n\r\n").unwrap();
|
||
let mut socket = connect("example.com", 443);
|
||
loop {
|
||
if client.wants_read() && socket.ready_for_read() {
|
||
client.read_tls(&mut socket).unwrap();
|
||
client.process_new_packets().unwrap();
|
||
|
||
let mut plaintext = Vec::new();
|
||
client.read_to_end(&mut plaintext).unwrap();
|
||
io::stdout().write(&plaintext).unwrap();
|
||
}
|
||
|
||
if client.wants_write() && socket.ready_for_write() {
|
||
client.write_tls(&mut socket).unwrap();
|
||
}
|
||
|
||
socket.wait_for_something_to_happen();
|
||
}
|
||
</code></pre>
|
||
<h1 id="examples" class="section-header"><a href="#examples">Examples</a></h1>
|
||
<p><code>tlsserver</code> and <code>tlsclient</code> are full worked examples. These both use mio.</p>
|
||
<h1 id="crate-features" class="section-header"><a href="#crate-features">Crate features</a></h1>
|
||
<p>Here's a list of what features are exposed by the rustls crate and what
|
||
they mean.</p>
|
||
<ul>
|
||
<li>
|
||
<p><code>logging</code>: this makes the rustls crate depend on the <code>log</code> crate.
|
||
rustls outputs interesting protocol-level messages at <code>trace!</code> and <code>debug!</code>
|
||
level, and protocol-level errors at <code>warn!</code> and <code>error!</code> level. The log
|
||
messages do not contain secret key data, and so are safe to archive without
|
||
affecting session security. This feature is in the default set.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>dangerous_configuration</code>: this feature enables a <code>dangerous()</code> method on
|
||
<code>ClientConfig</code> and <code>ServerConfig</code> that allows setting inadvisable options,
|
||
such as replacing the certificate verification process. Applications
|
||
requesting this feature should be reviewed carefully.</p>
|
||
</li>
|
||
<li>
|
||
<p><code>quic</code>: this feature exposes additional constructors and functions
|
||
for using rustls as a TLS library for QUIC. See the <code>quic</code> module for
|
||
details of these. You will only need this if you're writing a QUIC
|
||
implementation.</p>
|
||
</li>
|
||
</ul>
|
||
</div><h2 id="modules" class="section-header"><a href="#modules">Modules</a></h2>
|
||
<table><tr class="module-item"><td><a class="mod" href="ciphersuite/index.html" title="rustls::ciphersuite mod">ciphersuite</a></td><td class="docblock-short"><p>All defined ciphersuites appear in this module.</p>
|
||
</td></tr><tr class="module-item"><td><a class="mod" href="internal/index.html" title="rustls::internal mod">internal</a></td><td class="docblock-short"><p>Internal classes which may be useful outside the library.
|
||
The contents of this section DO NOT form part of the stable interface.</p>
|
||
</td></tr><tr class="module-item"><td><a class="mod" href="manual/index.html" title="rustls::manual mod">manual</a></td><td class="docblock-short"><p>This is the rustls manual.
|
||
This documentation primarily aims to explain design decisions taken in rustls.</p>
|
||
</td></tr><tr class="module-item"><td><a class="mod" href="sign/index.html" title="rustls::sign mod">sign</a></td><td class="docblock-short"><p>Message signing interfaces and implementations.</p>
|
||
</td></tr></table><h2 id="structs" class="section-header"><a href="#structs">Structs</a></h2>
|
||
<table><tr class="module-item"><td><a class="struct" href="struct.AllowAnyAnonymousOrAuthenticatedClient.html" title="rustls::AllowAnyAnonymousOrAuthenticatedClient struct">AllowAnyAnonymousOrAuthenticatedClient</a></td><td class="docblock-short"><p>A <code>ClientCertVerifier</code> that will allow both anonymous and authenticated
|
||
clients, without any name checking.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.AllowAnyAuthenticatedClient.html" title="rustls::AllowAnyAuthenticatedClient struct">AllowAnyAuthenticatedClient</a></td><td class="docblock-short"><p>A <code>ClientCertVerifier</code> that will ensure that every client provides a trusted
|
||
certificate, without any name checking.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.Certificate.html" title="rustls::Certificate struct">Certificate</a></td><td class="docblock-short"><p>This type contains a single certificate by value.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ClientConfig.html" title="rustls::ClientConfig struct">ClientConfig</a></td><td class="docblock-short"><p>Common configuration for (typically) all connections made by
|
||
a program.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ClientHello.html" title="rustls::ClientHello struct">ClientHello</a></td><td class="docblock-short"><p>A struct representing the received Client Hello</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ClientSession.html" title="rustls::ClientSession struct">ClientSession</a></td><td class="docblock-short"><p>This represents a single TLS client session.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ClientSessionMemoryCache.html" title="rustls::ClientSessionMemoryCache struct">ClientSessionMemoryCache</a></td><td class="docblock-short"><p>An implementor of <code>StoresClientSessions</code> that stores everything
|
||
in memory. It enforces a limit on the number of entries
|
||
to bound memory usage.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.KeyLogFile.html" title="rustls::KeyLogFile struct">KeyLogFile</a></td><td class="docblock-short"><p><code>KeyLog</code> implementation that opens a file whose name is
|
||
given by the <code>SSLKEYLOGFILE</code> environment variable, and writes
|
||
keys into it.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.NoClientAuth.html" title="rustls::NoClientAuth struct">NoClientAuth</a></td><td class="docblock-short"><p>Turns off client authentication.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.NoClientSessionStorage.html" title="rustls::NoClientSessionStorage struct">NoClientSessionStorage</a></td><td class="docblock-short"><p>An implementor of <code>StoresClientSessions</code> which does nothing.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.NoKeyLog.html" title="rustls::NoKeyLog struct">NoKeyLog</a></td><td class="docblock-short"><p>KeyLog that does exactly nothing.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.NoServerSessionStorage.html" title="rustls::NoServerSessionStorage struct">NoServerSessionStorage</a></td><td class="docblock-short"><p>Something which never stores sessions.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.OwnedTrustAnchor.html" title="rustls::OwnedTrustAnchor struct">OwnedTrustAnchor</a></td><td class="docblock-short"><p>This is like a <code>webpki::TrustAnchor</code>, except it owns
|
||
rather than borrows its memory. That prevents lifetimes
|
||
leaking up the object tree.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.PrivateKey.html" title="rustls::PrivateKey struct">PrivateKey</a></td><td class="docblock-short"><p>This type contains a private key by value.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ResolvesServerCertUsingSNI.html" title="rustls::ResolvesServerCertUsingSNI struct">ResolvesServerCertUsingSNI</a></td><td class="docblock-short"><p>Something that resolves do different cert chains/keys based
|
||
on client-supplied server name (via SNI).</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.RootCertStore.html" title="rustls::RootCertStore struct">RootCertStore</a></td><td class="docblock-short"><p>A container for root certificates able to provide a root-of-trust
|
||
for connection authentication.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ServerConfig.html" title="rustls::ServerConfig struct">ServerConfig</a></td><td class="docblock-short"><p>Common configuration for a set of server sessions.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ServerSession.html" title="rustls::ServerSession struct">ServerSession</a></td><td class="docblock-short"><p>This represents a single TLS server session.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.ServerSessionMemoryCache.html" title="rustls::ServerSessionMemoryCache struct">ServerSessionMemoryCache</a></td><td class="docblock-short"><p>An implementor of <code>StoresServerSessions</code> that stores everything
|
||
in memory. If enforces a limit on the number of stored sessions
|
||
to bound memory usage.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.Stream.html" title="rustls::Stream struct">Stream</a></td><td class="docblock-short"><p>This type implements <code>io::Read</code> and <code>io::Write</code>, encapsulating
|
||
a Session <code>S</code> and an underlying transport <code>T</code>, such as a socket.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.StreamOwned.html" title="rustls::StreamOwned struct">StreamOwned</a></td><td class="docblock-short"><p>This type implements <code>io::Read</code> and <code>io::Write</code>, encapsulating
|
||
and owning a Session <code>S</code> and an underlying blocking transport
|
||
<code>T</code>, such as a socket.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.SupportedCipherSuite.html" title="rustls::SupportedCipherSuite struct">SupportedCipherSuite</a></td><td class="docblock-short"><p>A cipher suite supported by rustls.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.Ticketer.html" title="rustls::Ticketer struct">Ticketer</a></td><td class="docblock-short"><p>A concrete, safe ticket creation mechanism.</p>
|
||
</td></tr><tr class="module-item"><td><a class="struct" href="struct.WriteEarlyData.html" title="rustls::WriteEarlyData struct">WriteEarlyData</a></td><td class="docblock-short"><p>Stub that implements io::Write and dispatches to <code>write_early_data</code>.</p>
|
||
</td></tr></table><h2 id="enums" class="section-header"><a href="#enums">Enums</a></h2>
|
||
<table><tr class="module-item"><td><a class="enum" href="enum.BulkAlgorithm.html" title="rustls::BulkAlgorithm enum">BulkAlgorithm</a></td><td class="docblock-short"><p>Bulk symmetric encryption scheme used by a cipher suite.</p>
|
||
</td></tr><tr class="module-item"><td><a class="enum" href="enum.CipherSuite.html" title="rustls::CipherSuite enum">CipherSuite</a></td><td class="docblock-short"><p>The <code>CipherSuite</code> TLS protocol enum. Values in this enum are taken
|
||
from the various RFCs covering TLS, and are listed by IANA.
|
||
The <code>Unknown</code> item is used when processing unrecognised ordinals.</p>
|
||
</td></tr><tr class="module-item"><td><a class="enum" href="enum.ProtocolVersion.html" title="rustls::ProtocolVersion enum">ProtocolVersion</a></td><td class="docblock-short"><p>The <code>ProtocolVersion</code> TLS protocol enum. Values in this enum are taken
|
||
from the various RFCs covering TLS, and are listed by IANA.
|
||
The <code>Unknown</code> item is used when processing unrecognised ordinals.</p>
|
||
</td></tr><tr class="module-item"><td><a class="enum" href="enum.SignatureScheme.html" title="rustls::SignatureScheme enum">SignatureScheme</a></td><td class="docblock-short"><p>The <code>SignatureScheme</code> TLS protocol enum. Values in this enum are taken
|
||
from the various RFCs covering TLS, and are listed by IANA.
|
||
The <code>Unknown</code> item is used when processing unrecognised ordinals.</p>
|
||
</td></tr><tr class="module-item"><td><a class="enum" href="enum.TLSError.html" title="rustls::TLSError enum">TLSError</a></td><td class="docblock-short"><p>rustls reports protocol errors using this type.</p>
|
||
</td></tr></table><h2 id="statics" class="section-header"><a href="#statics">Statics</a></h2>
|
||
<table><tr class="module-item"><td><a class="static" href="static.ALL_CIPHERSUITES.html" title="rustls::ALL_CIPHERSUITES static">ALL_CIPHERSUITES</a></td><td class="docblock-short"><p>A list of all the cipher suites supported by rustls.</p>
|
||
</td></tr></table><h2 id="traits" class="section-header"><a href="#traits">Traits</a></h2>
|
||
<table><tr class="module-item"><td><a class="trait" href="trait.KeyLog.html" title="rustls::KeyLog trait">KeyLog</a></td><td class="docblock-short"><p>This trait represents the ability to do something useful
|
||
with key material, such as logging it to a file for debugging.</p>
|
||
</td></tr><tr class="module-item"><td><a class="trait" href="trait.ProducesTickets.html" title="rustls::ProducesTickets trait">ProducesTickets</a></td><td class="docblock-short"><p>A trait for the ability to encrypt and decrypt tickets.</p>
|
||
</td></tr><tr class="module-item"><td><a class="trait" href="trait.ResolvesClientCert.html" title="rustls::ResolvesClientCert trait">ResolvesClientCert</a></td><td class="docblock-short"><p>A trait for the ability to choose a certificate chain and
|
||
private key for the purposes of client authentication.</p>
|
||
</td></tr><tr class="module-item"><td><a class="trait" href="trait.ResolvesServerCert.html" title="rustls::ResolvesServerCert trait">ResolvesServerCert</a></td><td class="docblock-short"><p>How to choose a certificate chain and signing key for use
|
||
in server authentication.</p>
|
||
</td></tr><tr class="module-item"><td><a class="trait" href="trait.Session.html" title="rustls::Session trait">Session</a></td><td class="docblock-short"><p>Generalises <code>ClientSession</code> and <code>ServerSession</code></p>
|
||
</td></tr><tr class="module-item"><td><a class="trait" href="trait.StoresClientSessions.html" title="rustls::StoresClientSessions trait">StoresClientSessions</a></td><td class="docblock-short"><p>A trait for the ability to store client session data.
|
||
The keys and values are opaque.</p>
|
||
</td></tr><tr class="module-item"><td><a class="trait" href="trait.StoresServerSessions.html" title="rustls::StoresServerSessions trait">StoresServerSessions</a></td><td class="docblock-short"><p>A trait for the ability to store server session data.</p>
|
||
</td></tr></table><h2 id="types" class="section-header"><a href="#types">Type Definitions</a></h2>
|
||
<table><tr class="module-item"><td><a class="type" href="type.DistinguishedNames.html" title="rustls::DistinguishedNames type">DistinguishedNames</a></td><td class="docblock-short"></td></tr></table></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="rustls"></div>
|
||
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html> |