Files
google-apis-rs/webpki/struct.EndEntityCert.html
2021-04-02 00:20:57 +08:00

96 lines
31 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><meta name="generator" content="rustdoc"><meta name="description" content="API documentation for the Rust `EndEntityCert` struct in crate `webpki`."><meta name="keywords" content="rust, rustlang, rust-lang, EndEntityCert"><title>webpki::EndEntityCert - 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 struct"><!--[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">&#9776;</div><a href='../webpki/index.html'><div class='logo-container rust-logo'><img src='../rust-logo.png' alt='logo'></div></a><p class="location">Struct EndEntityCert</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#implementations">Methods</a><div class="sidebar-links"><a href="#method.from">from</a><a href="#method.verify_is_valid_for_at_least_one_dns_name">verify_is_valid_for_at_least_one_dns_name</a><a href="#method.verify_is_valid_for_dns_name">verify_is_valid_for_dns_name</a><a href="#method.verify_is_valid_tls_client_cert">verify_is_valid_tls_client_cert</a><a href="#method.verify_is_valid_tls_server_cert">verify_is_valid_tls_server_cert</a><a href="#method.verify_signature">verify_signature</a></div><a class="sidebar-title" href="#synthetic-implementations">Auto Trait Implementations</a><div class="sidebar-links"><a href="#impl-RefUnwindSafe">RefUnwindSafe</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</a><a href="#impl-Unpin">Unpin</a><a href="#impl-UnwindSafe">UnwindSafe</a></div><a class="sidebar-title" href="#blanket-implementations">Blanket Implementations</a><div class="sidebar-links"><a href="#impl-Any">Any</a><a href="#impl-Borrow%3CT%3E">Borrow&lt;T&gt;</a><a href="#impl-BorrowMut%3CT%3E">BorrowMut&lt;T&gt;</a><a href="#impl-From%3CT%3E">From&lt;T&gt;</a><a href="#impl-Into%3CU%3E">Into&lt;U&gt;</a><a href="#impl-TryFrom%3CU%3E">TryFrom&lt;U&gt;</a><a href="#impl-TryInto%3CU%3E">TryInto&lt;U&gt;</a></div></div><p class="location"><a href="index.html">webpki</a></p><div id="sidebar-vars" data-name="EndEntityCert" data-ty="struct" data-relpath=""></div><script defer src="sidebar-items.js"></script></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">Struct <a href="index.html">webpki</a>::<wbr><a class="struct" href="">EndEntityCert</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">&#x2212;</span>]</a></span><a class="srclink" href="../src/webpki/webpki.rs.html#110-112" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust struct">pub struct EndEntityCert&lt;'a&gt; { /* fields omitted */ }</pre></div><div class="docblock"><p>An end-entity certificate.</p>
<p>Server certificate processing in a TLS connection consists of several
steps. All of these steps are necessary:</p>
<ul>
<li><code>EndEntityCert.verify_is_valid_tls_server_cert</code>: Verify that the server's
certificate is currently valid <em>for use by a TLS server</em>.</li>
<li><code>EndEntityCert.verify_is_valid_for_dns_name</code>: Verify that the server's
certificate is valid for the host that is being connected to.</li>
<li><code>EndEntityCert.verify_signature</code>: Verify that the signature of server's
<code>ServerKeyExchange</code> message is valid for the server's certificate.</li>
</ul>
<p>Client certificate processing in a TLS connection consists of analogous
steps. All of these steps are necessary:</p>
<ul>
<li><code>EndEntityCert.verify_is_valid_tls_client_cert</code>: Verify that the client's
certificate is currently valid <em>for use by a TLS client</em>.</li>
<li><code>EndEntityCert.verify_is_valid_for_dns_name</code> or
<code>EndEntityCert.verify_is_valid_for_at_least_one_dns_name</code>: Verify that the
client's certificate is valid for the identity or identities used to
identify the client. (Currently client authentication only works when the
client is identified by one or more DNS hostnames.)</li>
<li><code>EndEntityCert.verify_signature</code>: Verify that the client's signature in
its <code>CertificateVerify</code> message is valid using the public key from the
client's certificate.</li>
</ul>
<p>Although it would be less error-prone to combine all these steps into a
single function call, some significant optimizations are possible if the
three steps are processed separately (in parallel). It does not matter much
which order the steps are done in, but <strong>all of these steps must completed
before application data is sent and before received application data is
processed</strong>. <code>EndEntityCert::from</code> is an inexpensive operation and is
deterministic, so if these tasks are done in multiple threads, it is
probably best to just call <code>EndEntityCert::from</code> multiple times (before each
operation) for the same DER-encoded ASN.1 certificate bytes.</p>
</div><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><h3 id="impl" class="impl"><code class="in-band">impl&lt;'a&gt; <a class="struct" href="../webpki/struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</code><a href="#impl" class="anchor"></a><a class="srclink" href="../src/webpki/webpki.rs.html#114-242" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.from" class="method"><code>pub fn <a href="#method.from" class="fnname">from</a>(cert_der: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;'a [</a><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.slice.html">]</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;Self, <a class="enum" href="../webpki/enum.Error.html" title="enum webpki::Error">Error</a>&gt;</code><a class="srclink" href="../src/webpki/webpki.rs.html#117-124" title="goto source code">[src]</a></h4><div class="docblock"><p>Parse the ASN.1 DER-encoded X.509 encoding of the certificate
<code>cert_der</code>.</p>
</div><h4 id="method.verify_is_valid_tls_server_cert" class="method"><code>pub fn <a href="#method.verify_is_valid_tls_server_cert" class="fnname">verify_is_valid_tls_server_cert</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;supported_sig_algs: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a>&amp;<a class="struct" href="../webpki/struct.SignatureAlgorithm.html" title="struct webpki::SignatureAlgorithm">SignatureAlgorithm</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;TLSServerTrustAnchors: &amp;<a class="struct" href="../webpki/struct.TLSServerTrustAnchors.html" title="struct webpki::TLSServerTrustAnchors">TLSServerTrustAnchors</a>&lt;'_&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;intermediate_certs: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><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.slice.html">]</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;time: <a class="struct" href="../webpki/struct.Time.html" title="struct webpki::Time">Time</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../webpki/enum.Error.html" title="enum webpki::Error">Error</a>&gt;</code><a class="srclink" href="../src/webpki/webpki.rs.html#136-150" title="goto source code">[src]</a></h4><div class="docblock"><p>Verifies that the end-entity certificate is valid for use by a TLS
server.</p>
<p><code>supported_sig_algs</code> is the list of signature algorithms that are
trusted for use in certificate signatures; the end-entity certificate's
public key is not validated against this list. <code>trust_anchors</code> is the
list of root CAs to trust. <code>intermediate_certs</code> is the sequence of
intermediate certificates that the server sent in the TLS handshake.
<code>time</code> is the time for which the validation is effective (usually the
current time).</p>
</div><h4 id="method.verify_is_valid_tls_client_cert" class="method"><code>pub fn <a href="#method.verify_is_valid_tls_client_cert" class="fnname">verify_is_valid_tls_client_cert</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;supported_sig_algs: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a>&amp;<a class="struct" href="../webpki/struct.SignatureAlgorithm.html" title="struct webpki::SignatureAlgorithm">SignatureAlgorithm</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;TLSClientTrustAnchors: &amp;<a class="struct" href="../webpki/struct.TLSClientTrustAnchors.html" title="struct webpki::TLSClientTrustAnchors">TLSClientTrustAnchors</a>&lt;'_&gt;, <br>&nbsp;&nbsp;&nbsp;&nbsp;intermediate_certs: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><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.slice.html">]</a><a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;time: <a class="struct" href="../webpki/struct.Time.html" title="struct webpki::Time">Time</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../webpki/enum.Error.html" title="enum webpki::Error">Error</a>&gt;</code><a class="srclink" href="../src/webpki/webpki.rs.html#166-180" title="goto source code">[src]</a></h4><div class="docblock"><p>Verifies that the end-entity certificate is valid for use by a TLS
client.</p>
<p>If the certificate is not valid for any of the given names then this
fails with <code>Error::CertNotValidForName</code>.</p>
<p><code>supported_sig_algs</code> is the list of signature algorithms that are
trusted for use in certificate signatures; the end-entity certificate's
public key is not validated against this list. <code>trust_anchors</code> is the
list of root CAs to trust. <code>intermediate_certs</code> is the sequence of
intermediate certificates that the client sent in the TLS handshake.
<code>cert</code> is the purported end-entity certificate of the client. <code>time</code> is
the time for which the validation is effective (usually the current
time).</p>
</div><h4 id="method.verify_is_valid_for_dns_name" class="method"><code>pub fn <a href="#method.verify_is_valid_for_dns_name" class="fnname">verify_is_valid_for_dns_name</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;dns_name: <a class="struct" href="../webpki/struct.DNSNameRef.html" title="struct webpki::DNSNameRef">DNSNameRef</a>&lt;'_&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../webpki/enum.Error.html" title="enum webpki::Error">Error</a>&gt;</code><a class="srclink" href="../src/webpki/webpki.rs.html#183-185" title="goto source code">[src]</a></h4><div class="docblock"><p>Verifies that the certificate is valid for the given DNS host name.</p>
</div><h4 id="method.verify_is_valid_for_at_least_one_dns_name" class="method"><code>pub fn <a href="#method.verify_is_valid_for_at_least_one_dns_name" class="fnname">verify_is_valid_for_at_least_one_dns_name</a>&lt;'names, Names&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;dns_names: Names<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="struct" href="../webpki/struct.DNSNameRef.html" title="struct webpki::DNSNameRef">DNSNameRef</a>&lt;'names&gt;&gt;, <a class="enum" href="../webpki/enum.Error.html" title="enum webpki::Error">Error</a>&gt; <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;Names: <a class="trait" href="https://doc.rust-lang.org/nightly/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = <a class="struct" href="../webpki/struct.DNSNameRef.html" title="struct webpki::DNSNameRef">DNSNameRef</a>&lt;'names&gt;&gt;,&nbsp;</span></code><a class="srclink" href="../src/webpki/webpki.rs.html#197-210" title="goto source code">[src]</a></h4><div class="docblock"><p>Verifies that the certificate is valid for at least one of the given DNS
host names.</p>
<p>If the certificate is not valid for any of the given names then this
fails with <code>Error::CertNotValidForName</code>. Otherwise the DNS names for
which the certificate is valid are returned.</p>
<p>Requires the <code>std</code> default feature; i.e. this isn't available in
<code>#![no_std]</code> configurations.</p>
</div><h4 id="method.verify_signature" class="method"><code>pub fn <a href="#method.verify_signature" class="fnname">verify_signature</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;self, <br>&nbsp;&nbsp;&nbsp;&nbsp;signature_alg: &amp;<a class="struct" href="../webpki/struct.SignatureAlgorithm.html" title="struct webpki::SignatureAlgorithm">SignatureAlgorithm</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;msg: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><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.slice.html">]</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;signature: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;[</a><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.slice.html">]</a><br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="enum" href="../webpki/enum.Error.html" title="enum webpki::Error">Error</a>&gt;</code><a class="srclink" href="../src/webpki/webpki.rs.html#232-241" title="goto source code">[src]</a></h4><div class="docblock"><p>Verifies the signature <code>signature</code> of message <code>msg</code> using the
certificate's public key.</p>
<p><code>signature_alg</code> is the algorithm to use to
verify the signature; the certificate's public key is verified to be
compatible with this algorithm.</p>
<p>For TLS 1.2, <code>signature</code> corresponds to TLS's
<code>DigitallySigned.signature</code> and <code>signature_alg</code> corresponds to TLS's
<code>DigitallySigned.algorithm</code> of TLS type <code>SignatureAndHashAlgorithm</code>. In
TLS 1.2 a single <code>SignatureAndHashAlgorithm</code> may map to multiple
<code>SignatureAlgorithm</code>s. For example, a TLS 1.2
<code>ignatureAndHashAlgorithm</code> of (ECDSA, SHA-256) may map to any or all
of {<code>ECDSA_P256_SHA256</code>, <code>ECDSA_P384_SHA256</code>}, depending on how the TLS
implementation is configured.</p>
<p>For current TLS 1.3 drafts, <code>signature_alg</code> corresponds to TLS's
<code>algorithm</code> fields of type <code>SignatureScheme</code>. There is (currently) a
one-to-one correspondence between TLS 1.3's <code>SignatureScheme</code> and
<code>SignatureAlgorithm</code>.</p>
</div></div><h2 id="synthetic-implementations" class="small-section-header">Auto Trait Implementations<a href="#synthetic-implementations" class="anchor"></a></h2><div id="synthetic-implementations-list"><h3 id="impl-RefUnwindSafe" class="impl"><code class="in-band">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.RefUnwindSafe.html" title="trait std::panic::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="../webpki/struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</code><a href="#impl-RefUnwindSafe" class="anchor"></a><a class="srclink" href="../src/webpki/webpki.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Send" class="impl"><code class="in-band">impl&lt;'a&gt; <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="../webpki/struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</code><a href="#impl-Send" class="anchor"></a><a class="srclink" href="../src/webpki/webpki.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Sync" class="impl"><code class="in-band">impl&lt;'a&gt; <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="../webpki/struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</code><a href="#impl-Sync" class="anchor"></a><a class="srclink" href="../src/webpki/webpki.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Unpin" class="impl"><code class="in-band">impl&lt;'a&gt; <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="../webpki/struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</code><a href="#impl-Unpin" class="anchor"></a><a class="srclink" href="../src/webpki/webpki.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-UnwindSafe" class="impl"><code class="in-band">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/std/panic/trait.UnwindSafe.html" title="trait std::panic::UnwindSafe">UnwindSafe</a> for <a class="struct" href="../webpki/struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</code><a href="#impl-UnwindSafe" class="anchor"></a><a class="srclink" href="../src/webpki/webpki.rs.html#1" title="goto source code">[src]</a></h3><div class="impl-items"></div></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><h3 id="impl-Any" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html" title="trait core::any::Any">Any</a> for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: 'static + ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Any" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#131-135" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.type_id" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/any/trait.Any.html#tymethod.type_id" class="fnname">type_id</a>(&amp;self) -&gt; <a class="struct" href="https://doc.rust-lang.org/nightly/core/any/struct.TypeId.html" title="struct core::any::TypeId">TypeId</a></code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#132" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>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></p>
</div></div><h3 id="impl-Borrow%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-Borrow%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#207-211" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;</a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#208" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></p>
</div></div><h3 id="impl-BorrowMut%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: ?<a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,&nbsp;</span></code><a href="#impl-BorrowMut%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#214-218" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.borrow_mut" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fnname">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;mut </a>T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#215" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></p>
</div></div><h3 id="impl-From%3CT%3E" class="impl"><code class="in-band">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</code><a href="#impl-From%3CT%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#545-549" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.from-1" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -&gt; T</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#546" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3 id="impl-Into%3CU%3E" class="impl"><code class="in-band">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,&nbsp;</span></code><a href="#impl-Into%3CU%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#534-541" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.into" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">into</a>(self) -&gt; U</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#538" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3 id="impl-TryFrom%3CU%3E" class="impl"><code class="in-band">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,&nbsp;</span></code><a href="#impl-TryFrom%3CU%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#582-591" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="associatedtype.Error" class="type"><code>type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="type">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></code></h4><div class='docblock'><p>The type returned in the event of a conversion error.</p>
</div><h4 id="method.try_from" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#tymethod.try_from" class="fnname">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;T, &lt;T as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#588" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div><h3 id="impl-TryInto%3CU%3E" class="impl"><code class="in-band">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T <span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;U: <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,&nbsp;</span></code><a href="#impl-TryInto%3CU%3E" class="anchor"></a><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#568-577" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="associatedtype.Error-1" class="type"><code>type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="type">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></code></h4><div class='docblock'><p>The type returned in the event of a conversion error.</p>
</div><h4 id="method.try_into" class="method hidden"><code>pub fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#tymethod.try_into" class="fnname">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;U, &lt;U as <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="type" href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</code><a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#574" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Performs the conversion.</p>
</div></div></div></section><section id="search" class="content hidden"></section><section class="footer"></section><div id="rustdoc-vars" data-root-path="../" data-current-crate="webpki"></div>
<script src="../main.js"></script><script defer src="../search-index.js"></script></body></html>