Files
GopherGate/target/doc/openssl/symm/struct.Crypter.html
2026-02-26 12:00:21 -05:00

130 lines
35 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="Represents a symmetric cipher context."><title>Crypter in openssl::symm - 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="openssl" 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="#">Crypter</a></h2></rustdoc-topbar><nav class="sidebar"><div class="sidebar-crate"><h2><a href="../../openssl/index.html">openssl</a><span class="version">0.10.75</span></h2></div><div class="sidebar-elems"><section id="rustdoc-toc"><h2 class="location"><a href="#">Crypter</a></h2><h3><a href="#">Sections</a></h3><ul class="block top-toc"><li><a href="#examples" title="Examples">Examples</a></li></ul><h3><a href="#implementations">Methods</a></h3><ul class="block method"><li><a href="#method.aad_update" title="aad_update">aad_update</a></li><li><a href="#method.finalize" title="finalize">finalize</a></li><li><a href="#method.get_tag" title="get_tag">get_tag</a></li><li><a href="#method.new" title="new">new</a></li><li><a href="#method.pad" title="pad">pad</a></li><li><a href="#method.set_data_len" title="set_data_len">set_data_len</a></li><li><a href="#method.set_tag" title="set_tag">set_tag</a></li><li><a href="#method.set_tag_len" title="set_tag_len">set_tag_len</a></li><li><a href="#method.update" title="update">update</a></li><li><a href="#method.update_unchecked" title="update_unchecked">update_unchecked</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block synthetic-implementation"><li><a href="#impl-Freeze-for-Crypter" title="Freeze">Freeze</a></li><li><a href="#impl-RefUnwindSafe-for-Crypter" title="RefUnwindSafe">RefUnwindSafe</a></li><li><a href="#impl-Send-for-Crypter" title="Send">Send</a></li><li><a href="#impl-Sync-for-Crypter" title="Sync">Sync</a></li><li><a href="#impl-Unpin-for-Crypter" title="Unpin">Unpin</a></li><li><a href="#impl-UnwindSafe-for-Crypter" 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-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><a href="index.html">In openssl::<wbr>symm</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">openssl</a>::<wbr><a href="index.html">symm</a></div><h1>Struct <span class="struct">Crypter</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/openssl/symm.rs.html#603-605">Source</a> </span></div><pre class="rust item-decl"><code>pub struct Crypter { <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>Represents a symmetric cipher context.</p>
<p>Padding is enabled by default.</p>
<h2 id="examples"><a class="doc-anchor" href="#examples">§</a>Examples</h2>
<p>Encrypt some plaintext in chunks, then decrypt the ciphertext back into plaintext, in AES 128
CBC mode.</p>
<div class="example-wrap"><pre class="rust rust-example-rendered"><code><span class="kw">use </span>openssl::symm::{Cipher, Mode, Crypter};
<span class="kw">let </span>plaintexts: [<span class="kw-2">&amp;</span>[u8]; <span class="number">2</span>] = [<span class="string">b"Some Stream of"</span>, <span class="string">b" Crypto Text"</span>];
<span class="kw">let </span>key = <span class="string">b"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F"</span>;
<span class="kw">let </span>iv = <span class="string">b"\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07"</span>;
<span class="kw">let </span>data_len = plaintexts.iter().fold(<span class="number">0</span>, |sum, x| sum + x.len());
<span class="comment">// Create a cipher context for encryption.
</span><span class="kw">let </span><span class="kw-2">mut </span>encrypter = Crypter::new(
Cipher::aes_128_cbc(),
Mode::Encrypt,
key,
<span class="prelude-val">Some</span>(iv)).unwrap();
<span class="kw">let </span>block_size = Cipher::aes_128_cbc().block_size();
<span class="kw">let </span><span class="kw-2">mut </span>ciphertext = <span class="macro">vec!</span>[<span class="number">0</span>; data_len + block_size];
<span class="comment">// Encrypt 2 chunks of plaintexts successively.
</span><span class="kw">let </span><span class="kw-2">mut </span>count = encrypter.update(plaintexts[<span class="number">0</span>], <span class="kw-2">&amp;mut </span>ciphertext).unwrap();
count += encrypter.update(plaintexts[<span class="number">1</span>], <span class="kw-2">&amp;mut </span>ciphertext[count..]).unwrap();
count += encrypter.finalize(<span class="kw-2">&amp;mut </span>ciphertext[count..]).unwrap();
ciphertext.truncate(count);
<span class="macro">assert_eq!</span>(
<span class="string">b"\x0F\x21\x83\x7E\xB2\x88\x04\xAF\xD9\xCC\xE2\x03\x49\xB4\x88\xF6\xC4\x61\x0E\x32\x1C\xF9\
\x0D\x66\xB1\xE6\x2C\x77\x76\x18\x8D\x99"</span>,
<span class="kw-2">&amp;</span>ciphertext[..]
);
<span class="comment">// Let's pretend we don't know the plaintext, and now decrypt the ciphertext.
</span><span class="kw">let </span>data_len = ciphertext.len();
<span class="kw">let </span>ciphertexts = [<span class="kw-2">&amp;</span>ciphertext[..<span class="number">9</span>], <span class="kw-2">&amp;</span>ciphertext[<span class="number">9</span>..]];
<span class="comment">// Create a cipher context for decryption.
</span><span class="kw">let </span><span class="kw-2">mut </span>decrypter = Crypter::new(
Cipher::aes_128_cbc(),
Mode::Decrypt,
key,
<span class="prelude-val">Some</span>(iv)).unwrap();
<span class="kw">let </span><span class="kw-2">mut </span>plaintext = <span class="macro">vec!</span>[<span class="number">0</span>; data_len + block_size];
<span class="comment">// Decrypt 2 chunks of ciphertexts successively.
</span><span class="kw">let </span><span class="kw-2">mut </span>count = decrypter.update(ciphertexts[<span class="number">0</span>], <span class="kw-2">&amp;mut </span>plaintext).unwrap();
count += decrypter.update(ciphertexts[<span class="number">1</span>], <span class="kw-2">&amp;mut </span>plaintext[count..]).unwrap();
count += decrypter.finalize(<span class="kw-2">&amp;mut </span>plaintext[count..]).unwrap();
plaintext.truncate(count);
<span class="macro">assert_eq!</span>(<span class="string">b"Some Stream of Crypto Text"</span>, <span class="kw-2">&amp;</span>plaintext[..]);</code></pre></div></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-Crypter" class="impl"><a class="src rightside" href="../../src/openssl/symm.rs.html#607-754">Source</a><a href="#impl-Crypter" class="anchor">§</a><h3 class="code-header">impl <a class="struct" href="struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></h3></section></summary><div class="impl-items"><details class="toggle method-toggle" open><summary><section id="method.new" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#615-646">Source</a><h4 class="code-header">pub fn <a href="#method.new" class="fn">new</a>(
t: <a class="struct" href="struct.Cipher.html" title="struct openssl::symm::Cipher">Cipher</a>,
mode: <a class="enum" href="enum.Mode.html" title="enum openssl::symm::Mode">Mode</a>,
key: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>],
iv: <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;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</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;<a class="struct" href="struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Creates a new <code>Crypter</code>. The initialisation vector, <code>iv</code>, is not necessary for certain
types of <code>Cipher</code>.</p>
<h5 id="panics"><a class="doc-anchor" href="#panics">§</a>Panics</h5>
<p>Panics if an IV is required by the cipher but not provided. Also make sure that the key
and IV size are appropriate for your cipher.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.pad" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#652-654">Source</a><h4 class="code-header">pub fn <a href="#method.pad" class="fn">pad</a>(&amp;mut self, padding: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Enables or disables padding.</p>
<p>If padding is disabled, total amount of data encrypted/decrypted must
be a multiple of the ciphers block size.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_tag" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#659-661">Source</a><h4 class="code-header">pub fn <a href="#method.set_tag" class="fn">set_tag</a>(&amp;mut self, tag: &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="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the tag used to authenticate ciphertext in AEAD ciphers such as AES GCM.</p>
<p>When decrypting cipher text using an AEAD cipher, this must be called before <code>finalize</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_tag_len" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#667-669">Source</a><h4 class="code-header">pub fn <a href="#method.set_tag_len" class="fn">set_tag_len</a>(&amp;mut self, tag_len: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.usize.html">usize</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="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the length of the authentication tag to generate in AES CCM.</p>
<p>When encrypting with AES CCM, the tag length needs to be explicitly set in order
to use a value different than the default 12 bytes.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.set_data_len" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#675-677">Source</a><h4 class="code-header">pub fn <a href="#method.set_data_len" class="fn">set_data_len</a>(&amp;mut self, data_len: <a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.usize.html">usize</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="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Feeds total plaintext length to the cipher.</p>
<p>The total plaintext or ciphertext length MUST be passed to the cipher when it operates in
CCM mode.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.aad_update" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#684-687">Source</a><h4 class="code-header">pub fn <a href="#method.aad_update" class="fn">aad_update</a>(&amp;mut self, input: &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="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Feeds Additional Authenticated Data (AAD) through the cipher.</p>
<p>This can only be used with AEAD ciphers such as AES GCM. Data fed in is not encrypted, but
is factored into the authentication tag. It must be called before the first call to
<code>update</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.update" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#703-705">Source</a><h4 class="code-header">pub fn <a href="#method.update" class="fn">update</a>(
&amp;mut self,
input: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>],
output: &amp;mut [<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.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Feeds data from <code>input</code> through the cipher, writing encrypted/decrypted
bytes into <code>output</code>.</p>
<p>The number of bytes written to <code>output</code> is returned. Note that this may
not be equal to the length of <code>input</code>.</p>
<h5 id="panics-1"><a class="doc-anchor" href="#panics-1">§</a>Panics</h5>
<p>Panics for stream ciphers if <code>output.len() &lt; input.len()</code>.</p>
<p>Panics for block ciphers if <code>output.len() &lt; input.len() + block_size</code>,
where <code>block_size</code> is the block size of the cipher (see <code>Cipher::block_size</code>).</p>
<p>Panics if <code>output.len() &gt; c_int::MAX</code>.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.update_unchecked" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#720-726">Source</a><h4 class="code-header">pub unsafe fn <a href="#method.update_unchecked" class="fn">update_unchecked</a>(
&amp;mut self,
input: &amp;[<a class="primitive" href="https://doc.rust-lang.org/1.93.1/std/primitive.u8.html">u8</a>],
output: &amp;mut [<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.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Feeds data from <code>input</code> through the cipher, writing encrypted/decrypted
bytes into <code>output</code>.</p>
<p>The number of bytes written to <code>output</code> is returned. Note that this may
not be equal to the length of <code>input</code>.</p>
<h5 id="safety"><a class="doc-anchor" href="#safety">§</a>Safety</h5>
<p>The caller must provide an <code>output</code> buffer large enough to contain
correct number of bytes. For streaming ciphers the output buffer size
should be at least as big as the input buffer. For block ciphers the
size of the output buffer depends on the state of partially updated
blocks.</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.finalize" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#739-741">Source</a><h4 class="code-header">pub fn <a href="#method.finalize" class="fn">finalize</a>(&amp;mut self, output: &amp;mut [<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.usize.html">usize</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Finishes the encryption/decryption process, writing any remaining data
to <code>output</code>.</p>
<p>The number of bytes written to <code>output</code> is returned.</p>
<p><code>update</code> should not be called after this method.</p>
<h5 id="panics-2"><a class="doc-anchor" href="#panics-2">§</a>Panics</h5>
<p>Panics for block ciphers if <code>output.len() &lt; block_size</code>,
where <code>block_size</code> is the block size of the cipher (see <code>Cipher::block_size</code>).</p>
</div></details><details class="toggle method-toggle" open><summary><section id="method.get_tag" class="method"><a class="src rightside" href="../../src/openssl/symm.rs.html#751-753">Source</a><h4 class="code-header">pub fn <a href="#method.get_tag" class="fn">get_tag</a>(&amp;self, tag: &amp;mut [<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="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Retrieves the authentication tag used to authenticate ciphertext in AEAD ciphers such
as AES GCM.</p>
<p>When encrypting data with an AEAD cipher, this must be called after <code>finalize</code>.</p>
<p>The size of the buffer indicates the required size of the tag. While some ciphers support a
range of tag sizes, it is recommended to pick the maximum size. For AES GCM, this is 16
bytes, for example.</p>
</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-Crypter" class="impl"><a href="#impl-Freeze-for-Crypter" class="anchor">§</a><h3 class="code-header">impl <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.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></h3></section><section id="impl-RefUnwindSafe-for-Crypter" class="impl"><a href="#impl-RefUnwindSafe-for-Crypter" class="anchor">§</a><h3 class="code-header">impl <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.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></h3></section><section id="impl-Send-for-Crypter" class="impl"><a href="#impl-Send-for-Crypter" class="anchor">§</a><h3 class="code-header">impl <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.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></h3></section><section id="impl-Sync-for-Crypter" class="impl"><a href="#impl-Sync-for-Crypter" class="anchor">§</a><h3 class="code-header">impl <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.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></h3></section><section id="impl-Unpin-for-Crypter" class="impl"><a href="#impl-Unpin-for-Crypter" class="anchor">§</a><h3 class="code-header">impl <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.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></h3></section><section id="impl-UnwindSafe-for-Crypter" class="impl"><a href="#impl-UnwindSafe-for-Crypter" class="anchor">§</a><h3 class="code-header">impl <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.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></h3></section></div><h2 id="blanket-implementations" class="section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor">§</a></h2><div id="blanket-implementations-list"><details class="toggle implementors-toggle"><summary><section id="impl-Any-for-T" class="impl"><a class="src rightside" href="https://doc.rust-lang.org/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-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-1" 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-1" 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" 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" 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" 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" 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></section></div></main></body></html>