Files
GopherGate/target/doc/webpki/struct.EndEntityCert.html
2026-02-26 12:00:21 -05:00

124 lines
44 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="An end-entity certificate."><title>EndEntityCert in webpki - 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="webpki" data-themes="" data-resource-suffix="" data-rustdoc-version="1.93.1 (01f6ddf75 2026-02-11) (Arch Linux rust 1:1.93.1-1)" data-channel="1.93.1" data-search-js="search-9e2438ea.js" data-stringdex-js="stringdex-a3946164.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-a410ff4d.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="#">EndEntityCert</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../webpki/index.html">webpki</a><span class="version">0.103.9</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">EndEntity<wbr>Cert</a></h2><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.verify_for_usage" title="verify_for_usage">verify_for_usage</a></li><li><a href="#method.verify_is_valid_for_subject_name" title="verify_is_valid_for_subject_name">verify_is_valid_for_subject_name</a></li><li><a href="#method.verify_signature" title="verify_signature">verify_signature</a></li></ul><h3><a href="#deref-methods-Cert%3C'a%3E">Methods from Deref&lt;<wbr>Target=<wbr>Cert&lt;'a&gt;&gt;</a></h3><ul class="block deref-methods"><li><a href="#method.der" title="der">der</a></li><li><a href="#method.issuer" title="issuer">issuer</a></li><li><a href="#method.serial" title="serial">serial</a></li><li><a href="#method.subject" title="subject">subject</a></li><li><a href="#method.subject_public_key_info" title="subject_public_key_info">subject_public_key_info</a></li><li><a href="#method.valid_dns_names" title="valid_dns_names">valid_dns_names</a></li><li><a href="#method.valid_uri_names" title="valid_uri_names">valid_uri_names</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block trait-implementation"><li><a href="#impl-Deref-for-EndEntityCert%3C'a%3E" title="Deref">Deref</a></li><li><a href="#impl-TryFrom%3C%26CertificateDer%3C'a%3E%3E-for-EndEntityCert%3C'a%3E" title="TryFrom&#60;&#38;&#39;a CertificateDer&#60;&#39;a&#62;&#62;">TryFrom&#60;&#38;&#39;a CertificateDer&#60;&#39;a&#62;&#62;</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-EndEntityCert%3C'a%3E" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-EndEntityCert%3C'a%3E" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-EndEntityCert%3C'a%3E" title="Send">Send</a></li><li><a href="#impl-Sync-for-EndEntityCert%3C'a%3E" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-EndEntityCert%3C'a%3E" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-EndEntityCert%3C'a%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-Into%3CU%3E-for-T" title="Into&#60;U&#62;">Into&#60;U&#62;</a></li><li><a href="#impl-Receiver-for-P" title="Receiver">Receiver</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></ul></section><div id="rustdoc-modnav"><h2 class="in-crate"><a href="index.html">In crate webpki</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">webpki</a></div><h1>Struct <span class="struct">EndEntity<wbr>Cert</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/webpki/end_entity.rs.html#59-61">Source</a> </span></div><pre class="rust item-decl"><code>pub struct EndEntityCert&lt;'a&gt; { <span class="comment">/* private fields */</span> }</code></pre><details class="toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><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><a href="struct.EndEntityCert.html#method.verify_for_usage" title="method webpki::EndEntityCert::verify_for_usage"><code>EndEntityCert::verify_for_usage()</code></a>: Verify that the peers certificate
is valid for the current usage scenario. For server authentication, use
<a href="struct.KeyUsage.html#method.server_auth" title="associated function webpki::KeyUsage::server_auth"><code>crate::KeyUsage::server_auth()</code></a>.</li>
<li><a href="struct.EndEntityCert.html#method.verify_is_valid_for_subject_name" title="method webpki::EndEntityCert::verify_is_valid_for_subject_name"><code>EndEntityCert::verify_is_valid_for_subject_name()</code></a>: Verify that the servers
certificate is valid for the host or IP address that is being connected to.</li>
<li><a href="struct.EndEntityCert.html#method.verify_signature" title="method webpki::EndEntityCert::verify_signature"><code>EndEntityCert::verify_signature()</code></a>: Verify that the signature of servers
<code>ServerKeyExchange</code> message is valid for the servers certificate.</li>
</ul>
<p>Client certificate processing in a TLS connection consists of analogous
steps. All of these steps are necessary:</p>
<ul>
<li><a href="struct.EndEntityCert.html#method.verify_for_usage" title="method webpki::EndEntityCert::verify_for_usage"><code>EndEntityCert::verify_for_usage()</code></a>: Verify that the peers certificate
is valid for the current usage scenario. For client authentication, use
<a href="struct.KeyUsage.html#method.client_auth" title="associated function webpki::KeyUsage::client_auth"><code>crate::KeyUsage::client_auth()</code></a>.</li>
<li><a href="struct.EndEntityCert.html#method.verify_signature" title="method webpki::EndEntityCert::verify_signature"><code>EndEntityCert::verify_signature()</code></a>: Verify that the signature of clients
<code>CertificateVerify</code> message is valid using the public key from the
clients 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>. The <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom"><code>TryFrom</code></a> conversion from <code>&amp;CertificateDer&lt;'_&gt;</code> is an
inexpensive operation and is deterministic, so if these tasks are done in
multiple threads, it is probably best to just create multiple <a href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert"><code>EndEntityCert</code></a>
instances for the same DER-encoded ASN.1 certificate bytes.</p>
</div></details><h2 id="implementations" class="section-header">Implementations<a href="#implementations" class="anchor">§</a></h2><div id="implementations-list"><details class="toggle implementors-toggle" open><summary><section id="impl-EndEntityCert%3C'_%3E" class="impl"><a class="src rightside" href="../src/webpki/end_entity.rs.html#75-170">Source</a><a href="#impl-EndEntityCert%3C'_%3E" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'_&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.verify_for_usage" class="method"><a class="src rightside" href="../src/webpki/end_entity.rs.html#103-121">Source</a><h4 class="code-header">pub fn <a href="#method.verify_for_usage" class="fn">verify_for_usage</a>&lt;'p&gt;(
&amp;'p self,
supported_sig_algs: &amp;[&amp;dyn <a class="trait" href="../rustls_pki_types/trait.SignatureVerificationAlgorithm.html" title="trait rustls_pki_types::SignatureVerificationAlgorithm">SignatureVerificationAlgorithm</a>],
trust_anchors: &amp;'p [<a class="struct" href="../rustls_pki_types/struct.TrustAnchor.html" title="struct rustls_pki_types::TrustAnchor">TrustAnchor</a>&lt;'_&gt;],
intermediate_certs: &amp;'p [<a class="struct" href="../rustls_pki_types/struct.CertificateDer.html" title="struct rustls_pki_types::CertificateDer">CertificateDer</a>&lt;'p&gt;],
time: <a class="struct" href="../rustls_pki_types/struct.UnixTime.html" title="struct rustls_pki_types::UnixTime">UnixTime</a>,
usage: impl <a class="trait" href="trait.ExtendedKeyUsageValidator.html" title="trait webpki::ExtendedKeyUsageValidator">ExtendedKeyUsageValidator</a>,
revocation: <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="struct" href="struct.RevocationOptions.html" title="struct webpki::RevocationOptions">RevocationOptions</a>&lt;'_&gt;&gt;,
verify_path: <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;dyn <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/function/trait.Fn.html" title="trait core::ops::function::Fn">Fn</a>(&amp;<a class="struct" href="struct.VerifiedPath.html" title="struct webpki::VerifiedPath">VerifiedPath</a>&lt;'_&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="enum" href="enum.Error.html" title="enum webpki::Error">Error</a>&gt;&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="struct" href="struct.VerifiedPath.html" title="struct webpki::VerifiedPath">VerifiedPath</a>&lt;'p&gt;, <a class="enum" href="enum.Error.html" title="enum webpki::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Verifies that the end-entity certificate is valid for use against the
specified Extended Key Usage (EKU).</p>
<ul>
<li><code>supported_sig_algs</code> is the list of signature algorithms that are
trusted for use in certificate signatures; the end-entity certificates
public key is not validated against this list.</li>
<li><code>trust_anchors</code> is the list of root CAs to trust in the built path.</li>
<li><code>intermediate_certs</code> is the sequence of intermediate certificates that
a peer sent for the purpose of path building.</li>
<li><code>time</code> is the time for which the validation is effective (usually the
current time).</li>
<li><code>usage</code> is the intended usage of the certificate, indicating what kind
of usage were verifying the certificate for. The default <a href="trait.ExtendedKeyUsageValidator.html" title="trait webpki::ExtendedKeyUsageValidator"><code>ExtendedKeyUsageValidator</code></a>
implementation is <a href="struct.KeyUsage.html" title="struct webpki::KeyUsage"><code>KeyUsage</code></a>.</li>
<li><code>crls</code> is the list of certificate revocation lists to check
the certificate against.</li>
<li><code>verify_path</code> is an optional verification function for path candidates.</li>
</ul>
<p>If successful, yields a <code>VerifiedPath</code> type that can be used to inspect a verified chain
of certificates that leads from the <code>end_entity</code> to one of the <code>self.trust_anchors</code>.</p>
<p><code>verify_path</code> will only be called for potentially verified paths, that is, paths that
have been verified up to the trust anchor. As such, <code>verify_path()</code> cannot be used to
verify a path that doesnt satisfy the constraints listed above; it can only be used to
reject a path that does satisfy the aforementioned constraints. If <code>verify_path</code> returns
an error, path building will continue in order to try other options.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.verify_is_valid_for_subject_name" class="method"><a class="src rightside" href="../src/webpki/end_entity.rs.html#124-135">Source</a><h4 class="code-header">pub fn <a href="#method.verify_is_valid_for_subject_name" class="fn">verify_is_valid_for_subject_name</a>(
&amp;self,
server_name: &amp;<a class="enum" href="../rustls_pki_types/server_name/enum.ServerName.html" title="enum rustls_pki_types::server_name::ServerName">ServerName</a>&lt;'_&gt;,
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="enum" href="enum.Error.html" title="enum webpki::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Verifies that the certificate is valid for the given Subject Name.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.verify_signature" class="method"><a class="src rightside" href="../src/webpki/end_entity.rs.html#157-169">Source</a><h4 class="code-header">pub fn <a href="#method.verify_signature" class="fn">verify_signature</a>(
&amp;self,
signature_alg: &amp;dyn <a class="trait" href="../rustls_pki_types/trait.SignatureVerificationAlgorithm.html" title="trait rustls_pki_types::SignatureVerificationAlgorithm">SignatureVerificationAlgorithm</a>,
msg: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>],
signature: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>],
) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.unit.html">()</a>, <a class="enum" href="enum.Error.html" title="enum webpki::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Verifies the signature <code>signature</code> of message <code>msg</code> using the
certificates public key.</p>
<p><code>signature_alg</code> is the algorithm to use to
verify the signature; the certificates public key is verified to be
compatible with this algorithm.</p>
<p>For TLS 1.2, <code>signature</code> corresponds to TLSs
<code>DigitallySigned.signature</code> and <code>signature_alg</code> corresponds to TLSs
<code>DigitallySigned.algorithm</code> of TLS type <code>SignatureAndHashAlgorithm</code>. In
TLS 1.2 a single <code>SignatureAndHashAlgorithm</code> may map to multiple
<code>SignatureVerificationAlgorithm</code>s. For example, a TLS 1.2
<code>SignatureAndHashAlgorithm</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 TLSs
<code>algorithm</code> fields of type <code>SignatureScheme</code>. There is (currently) a
one-to-one correspondence between TLS 1.3s <code>SignatureScheme</code> and
<code>SignatureVerificationAlgorithm</code>.</p>
</div></details></div></details></div><details class="toggle big-toggle" open><summary><h2 id="deref-methods-Cert%3C'a%3E" class="section-header"><span>Methods from <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = <a class="struct" href="struct.Cert.html" title="struct webpki::Cert">Cert</a>&lt;'a&gt;&gt;</span><a href="#deref-methods-Cert%3C'a%3E" class="anchor">§</a></h2></summary><div id="deref-methods-Cert%3C'a%3E-1" class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.valid_dns_names" class="method"><a class="src rightside" href="../src/webpki/cert.rs.html#152-172">Source</a><h4 class="code-header">pub fn <a href="#method.valid_dns_names" class="fn">valid_dns_names</a>(&amp;self) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = &amp;'a <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.str.html">str</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a list of valid DNS names provided in the subject alternative names extension</p>
<p>This function must not be used to implement custom DNS name verification.
Checking that a certificate is valid for a given subject name should always be done with
<a href="struct.EndEntityCert.html#method.verify_is_valid_for_subject_name" title="method webpki::EndEntityCert::verify_is_valid_for_subject_name">EndEntityCert::verify_is_valid_for_subject_name</a>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.valid_uri_names" class="method"><a class="src rightside" href="../src/webpki/cert.rs.html#178-189">Source</a><h4 class="code-header">pub fn <a href="#method.valid_uri_names" class="fn">valid_uri_names</a>(&amp;self) -&gt; impl <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/iter/traits/iterator/trait.Iterator.html" title="trait core::iter::traits::iterator::Iterator">Iterator</a>&lt;Item = &amp;'a <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.str.html">str</a>&gt;</h4></section></summary><div class="docblock"><p>Returns a list of valid URI names provided in the subject alternative names extension</p>
<p>This function returns URIs as strings without performing validation beyond checking that
they are valid UTF-8.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.serial" class="method"><a class="src rightside" href="../src/webpki/cert.rs.html#197-199">Source</a><h4 class="code-header">pub fn <a href="#method.serial" class="fn">serial</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]"></a></h4></section></summary><div class="docblock"><p>Raw certificate serial number.</p>
<p>This is in big-endian byte order, in twos-complement encoding.</p>
<p>If the caller were to add an <code>INTEGER</code> tag and suitable length, this
would become a valid DER encoding.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.issuer" class="method"><a class="src rightside" href="../src/webpki/cert.rs.html#204-206">Source</a><h4 class="code-header">pub fn <a href="#method.issuer" class="fn">issuer</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]"></a></h4></section></summary><div class="docblock"><p>Raw DER-encoded certificate issuer.</p>
<p>This does not include the outer <code>SEQUENCE</code> tag or length.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.subject" class="method"><a class="src rightside" href="../src/webpki/cert.rs.html#211-213">Source</a><h4 class="code-header">pub fn <a href="#method.subject" class="fn">subject</a>(&amp;self) -&gt; &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>] <a href="#" class="tooltip" data-notable-ty="&amp;[u8]"></a></h4></section></summary><div class="docblock"><p>Raw DER encoded certificate subject.</p>
<p>This does not include the outer <code>SEQUENCE</code> tag or length.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.subject_public_key_info" class="method"><a class="src rightside" href="../src/webpki/cert.rs.html#219-226">Source</a><h4 class="code-header">pub fn <a href="#method.subject_public_key_info" class="fn">subject_public_key_info</a>(&amp;self) -&gt; <a class="struct" href="../rustls_pki_types/struct.SubjectPublicKeyInfoDer.html" title="struct rustls_pki_types::SubjectPublicKeyInfoDer">SubjectPublicKeyInfoDer</a>&lt;'static&gt;</h4></section></summary><div class="docblock"><p>Get the RFC 5280-compliant <a href="../rustls_pki_types/struct.SubjectPublicKeyInfoDer.html" title="struct rustls_pki_types::SubjectPublicKeyInfoDer"><code>SubjectPublicKeyInfoDer</code></a> (SPKI) of this <a href="struct.Cert.html" title="struct webpki::Cert"><code>Cert</code></a>.</p>
<p>This <strong>does</strong> include the outer <code>SEQUENCE</code> tag and length.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.der" class="method"><a class="src rightside" href="../src/webpki/cert.rs.html#236-238">Source</a><h4 class="code-header">pub fn <a href="#method.der" class="fn">der</a>(&amp;self) -&gt; <a class="struct" href="../rustls_pki_types/struct.CertificateDer.html" title="struct rustls_pki_types::CertificateDer">CertificateDer</a>&lt;'a&gt;</h4></section></summary><div class="docblock"><p>Raw DER-encoded representation of the certificate.</p>
</div></details></div></details><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-Deref-for-EndEntityCert%3C'a%3E" class="impl"><a class="src rightside" href="../src/webpki/end_entity.rs.html#172-178">Source</a><a href="#impl-Deref-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a> for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Target" class="associatedtype trait-impl"><a class="src rightside" href="../src/webpki/end_entity.rs.html#173">Source</a><a href="#associatedtype.Target" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Deref.html#associatedtype.Target" class="associatedtype">Target</a> = <a class="struct" href="struct.Cert.html" title="struct webpki::Cert">Cert</a>&lt;'a&gt;</h4></section></summary><div class='docblock'>The resulting type after dereferencing.</div></details><details class="toggle method-toggle" open><summary><section id="method.deref" class="method trait-impl"><a class="src rightside" href="../src/webpki/end_entity.rs.html#175-177">Source</a><a href="#method.deref" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Deref.html#tymethod.deref" class="fn">deref</a>(&amp;self) -&gt; &amp;Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Deref.html#associatedtype.Target" title="type core::ops::deref::Deref::Target">Target</a></h4></section></summary><div class='docblock'>Dereferences the value.</div></details></div></details><details class="toggle implementors-toggle" open><summary><section id="impl-TryFrom%3C%26CertificateDer%3C'a%3E%3E-for-EndEntityCert%3C'a%3E" class="impl"><a class="src rightside" href="../src/webpki/end_entity.rs.html#63-73">Source</a><a href="#impl-TryFrom%3C%26CertificateDer%3C'a%3E%3E-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;&amp;'a <a class="struct" href="../rustls_pki_types/struct.CertificateDer.html" title="struct rustls_pki_types::CertificateDer">CertificateDer</a>&lt;'a&gt;&gt; for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl"><a class="src rightside" href="../src/webpki/end_entity.rs.html#68-72">Source</a><a href="#method.try_from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(cert: &amp;'a <a class="struct" href="../rustls_pki_types/struct.CertificateDer.html" title="struct rustls_pki_types::CertificateDer">CertificateDer</a>&lt;'a&gt;) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;Self, Self::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class="docblock"><p>Parse the ASN.1 DER-encoded X.509 encoding of the certificate
<code>cert_der</code>.</p>
</div></details><details class="toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl"><a class="src rightside" href="../src/webpki/end_entity.rs.html#64">Source</a><a href="#associatedtype.Error" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="enum.Error.html" title="enum webpki::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</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-EndEntityCert%3C'a%3E" class="impl"><a href="#impl-Freeze-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Freeze.html" title="trait core::marker::Freeze">Freeze</a> for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</h3></section><section id="impl-RefUnwindSafe-for-EndEntityCert%3C'a%3E" class="impl"><a href="#impl-RefUnwindSafe-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</h3></section><section id="impl-Send-for-EndEntityCert%3C'a%3E" class="impl"><a href="#impl-Send-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</h3></section><section id="impl-Sync-for-EndEntityCert%3C'a%3E" class="impl"><a href="#impl-Sync-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</h3></section><section id="impl-Unpin-for-EndEntityCert%3C'a%3E" class="impl"><a href="#impl-Unpin-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</h3></section><section id="impl-UnwindSafe-for-EndEntityCert%3C'a%3E" class="impl"><a href="#impl-UnwindSafe-for-EndEntityCert%3C'a%3E" class="anchor">§</a><h3 class="code-header">impl&lt;'a&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.EndEntityCert.html" title="struct webpki::EndEntityCert">EndEntityCert</a>&lt;'a&gt;</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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/core/borrow/trait.Borrow.html#tymethod.borrow" class="fn">borrow</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/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/1.93.1/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/1.93.1/core/borrow/trait.BorrowMut.html" title="trait core::borrow::BorrowMut">BorrowMut</a>&lt;T&gt; for T<div class="where">where
T: ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/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_mut" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/borrow.rs.html#222">Source</a><a href="#method.borrow_mut" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut" class="fn">borrow_mut</a>(&amp;mut self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.reference.html">&amp;mut T</a></h4></section></summary><div class='docblock'>Mutably borrows from an owned value. <a href="https://doc.rust-lang.org/1.93.1/core/borrow/trait.BorrowMut.html#tymethod.borrow_mut">Read more</a></div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#785">Source</a><a href="#impl-From%3CT%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for T</h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.from" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#788">Source</a><a href="#method.from" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html#tymethod.from" class="fn">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#767-769">Source</a><a href="#impl-Into%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#777">Source</a><a href="#method.into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.Into.html#tymethod.into" class="fn">into</a>(self) -&gt; U</h4></section></summary><div class="docblock"><p>Calls <code>U::from(self)</code>.</p>
<p>That is, this conversion is whatever the implementation of
<code><a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.From.html" title="trait core::convert::From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-Receiver-for-P" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/ops/deref.rs.html#378-380">Source</a><a href="#impl-Receiver-for-P" class="anchor">§</a><h3 class="code-header">impl&lt;P, T&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Receiver.html" title="trait core::ops::deref::Receiver">Receiver</a> for P<div class="where">where
P: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Deref.html" title="trait core::ops::deref::Deref">Deref</a>&lt;Target = T&gt; + ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,
T: ?<a class="trait" href="https://doc.rust-lang.org/1.93.1/core/marker/trait.Sized.html" title="trait core::marker::Sized">Sized</a>,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Target-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/ops/deref.rs.html#382">Source</a><a href="#associatedtype.Target-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/ops/deref/trait.Receiver.html#associatedtype.Target" class="associatedtype">Target</a> = T</h4></section></summary><span class="item-info"><div class="stab unstable"><span class="emoji">🔬</span><span>This is a nightly-only experimental API. (<code>arbitrary_self_types</code>)</span></div></span><div class='docblock'>The target type on which the method may be called.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#827-829">Source</a><a href="#impl-TryFrom%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.Into.html" title="trait core::convert::Into">Into</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-2" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#831">Source</a><a href="#associatedtype.Error-2" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/1.93.1/core/convert/enum.Infallible.html" title="enum core::convert::Infallible">Infallible</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_from-1" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#834">Source</a><a href="#method.try_from-1" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#tymethod.try_from" class="fn">try_from</a>(value: U) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;U&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details><details class="toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#811-813">Source</a><a href="#impl-TryInto%3CU%3E-for-T" class="anchor">§</a><h3 class="code-header">impl&lt;T, U&gt; <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryInto.html" title="trait core::convert::TryInto">TryInto</a>&lt;U&gt; for T<div class="where">where
U: <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;,</div></h3></section></summary><div class="impl-items"><details class="toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#815">Source</a><a href="#associatedtype.Error-1" class="anchor">§</a><h4 class="code-header">type <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">Error</a> = &lt;U as <a class="trait" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a></h4></section></summary><div class='docblock'>The type returned in the event of a conversion error.</div></details><details class="toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl"><a class="src rightside" href="https://doc.rust-lang.org/1.93.1/src/core/convert/mod.rs.html#818">Source</a><a href="#method.try_into" class="anchor">§</a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryInto.html#tymethod.try_into" class="fn">try_into</a>(self) -&gt; <a class="enum" href="https://doc.rust-lang.org/1.93.1/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/1.93.1/core/convert/trait.TryFrom.html" title="trait core::convert::TryFrom">TryFrom</a>&lt;T&gt;&gt;::<a class="associatedtype" href="https://doc.rust-lang.org/1.93.1/core/convert/trait.TryFrom.html#associatedtype.Error" title="type core::convert::TryFrom::Error">Error</a>&gt;</h4></section></summary><div class='docblock'>Performs the conversion.</div></details></div></details></div><script type="text/json" id="notable-traits-data">{"&[u8]":"<h3>Notable traits for <code>&amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.93.1/std/primitive.u8.html\">u8</a>]</code></h3><pre><code><div class=\"where\">impl <a class=\"trait\" href=\"https://doc.rust-lang.org/1.93.1/std/io/trait.Read.html\" title=\"trait std::io::Read\">Read</a> for &amp;[<a class=\"primitive\" href=\"https://doc.rust-lang.org/1.93.1/std/primitive.u8.html\">u8</a>]</div>"}</script></section></div></main></body></html>