Files
rapr-rs/docs/openssl/symm/struct.Crypter.html
T
Uttarayan Mondal d5ecda4c73 Initial docs commit
2021-03-15 01:27:34 +05:30

113 lines
37 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."><meta name="keywords" content="rust, rustlang, rust-lang, Crypter"><title>openssl::symm::Crypter - 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='../../openssl/index.html'><div class='logo-container rust-logo'><img src='../../rust-logo.png' alt='logo'></div></a><p class="location">Struct Crypter</p><div class="sidebar-elems"><div class="block items"><a class="sidebar-title" href="#implementations">Methods</a><div class="sidebar-links"><a href="#method.aad_update">aad_update</a><a href="#method.finalize">finalize</a><a href="#method.get_tag">get_tag</a><a href="#method.new">new</a><a href="#method.pad">pad</a><a href="#method.set_data_len">set_data_len</a><a href="#method.set_tag">set_tag</a><a href="#method.set_tag_len">set_tag_len</a><a href="#method.update">update</a></div><a class="sidebar-title" href="#trait-implementations">Trait Implementations</a><div class="sidebar-links"><a href="#impl-Drop">Drop</a><a href="#impl-Send">Send</a><a href="#impl-Sync">Sync</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-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">openssl</a>::<wbr><a href="index.html">symm</a></p><div id="sidebar-vars" data-name="Crypter" 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">openssl</a>::<wbr><a href="index.html">symm</a>::<wbr><a class="struct" href="">Crypter</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/openssl/symm.rs.html#410-413" title="goto source code">[src]</a></span></h1><div class="docblock type-decl hidden-by-usual-hider"><pre class="rust struct">pub struct Crypter { /* fields omitted */ }</pre></div><div class="docblock"><p>Represents a symmetric cipher context.</p>
<p>Padding is enabled by default.</p>
<h1 id="examples" class="section-header"><a href="#examples">Examples</a></h1>
<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">
<span class="kw">use</span> <span class="ident">openssl</span>::<span class="ident">symm</span>::{<span class="ident">Cipher</span>, <span class="ident">Mode</span>, <span class="ident">Crypter</span>};
<span class="kw">let</span> <span class="ident">plaintexts</span>: [<span class="kw-2">&amp;</span>[<span class="ident">u8</span>]; <span class="number">2</span>] <span class="op">=</span> [<span class="string">b&quot;Some Stream of&quot;</span>, <span class="string">b&quot; Crypto Text&quot;</span>];
<span class="kw">let</span> <span class="ident">key</span> <span class="op">=</span> <span class="string">b&quot;\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0A\x0B\x0C\x0D\x0E\x0F&quot;</span>;
<span class="kw">let</span> <span class="ident">iv</span> <span class="op">=</span> <span class="string">b&quot;\x00\x01\x02\x03\x04\x05\x06\x07\x00\x01\x02\x03\x04\x05\x06\x07&quot;</span>;
<span class="kw">let</span> <span class="ident">data_len</span> <span class="op">=</span> <span class="ident">plaintexts</span>.<span class="ident">iter</span>().<span class="ident">fold</span>(<span class="number">0</span>, <span class="op">|</span><span class="ident">sum</span>, <span class="ident">x</span><span class="op">|</span> <span class="ident">sum</span> <span class="op">+</span> <span class="ident">x</span>.<span class="ident">len</span>());
<span class="comment">// Create a cipher context for encryption.</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">encrypter</span> <span class="op">=</span> <span class="ident">Crypter</span>::<span class="ident">new</span>(
<span class="ident">Cipher</span>::<span class="ident">aes_128_cbc</span>(),
<span class="ident">Mode</span>::<span class="ident">Encrypt</span>,
<span class="ident">key</span>,
<span class="prelude-val">Some</span>(<span class="ident">iv</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="ident">block_size</span> <span class="op">=</span> <span class="ident">Cipher</span>::<span class="ident">aes_128_cbc</span>().<span class="ident">block_size</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">ciphertext</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>; <span class="ident">data_len</span> <span class="op">+</span> <span class="ident">block_size</span>];
<span class="comment">// Encrypt 2 chunks of plaintexts successively.</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">count</span> <span class="op">=</span> <span class="ident">encrypter</span>.<span class="ident">update</span>(<span class="ident">plaintexts</span>[<span class="number">0</span>], <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">ciphertext</span>).<span class="ident">unwrap</span>();
<span class="ident">count</span> <span class="op">+</span><span class="op">=</span> <span class="ident">encrypter</span>.<span class="ident">update</span>(<span class="ident">plaintexts</span>[<span class="number">1</span>], <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">ciphertext</span>[<span class="ident">count</span>..]).<span class="ident">unwrap</span>();
<span class="ident">count</span> <span class="op">+</span><span class="op">=</span> <span class="ident">encrypter</span>.<span class="ident">finalize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">ciphertext</span>[<span class="ident">count</span>..]).<span class="ident">unwrap</span>();
<span class="ident">ciphertext</span>.<span class="ident">truncate</span>(<span class="ident">count</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(
<span class="string">b&quot;\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&quot;</span>,
<span class="kw-2">&amp;</span><span class="ident">ciphertext</span>[..]
);
<span class="comment">// Let&#39;s pretend we don&#39;t know the plaintext, and now decrypt the ciphertext.</span>
<span class="kw">let</span> <span class="ident">data_len</span> <span class="op">=</span> <span class="ident">ciphertext</span>.<span class="ident">len</span>();
<span class="kw">let</span> <span class="ident">ciphertexts</span> <span class="op">=</span> [<span class="kw-2">&amp;</span><span class="ident">ciphertext</span>[..<span class="number">9</span>], <span class="kw-2">&amp;</span><span class="ident">ciphertext</span>[<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> <span class="ident">decrypter</span> <span class="op">=</span> <span class="ident">Crypter</span>::<span class="ident">new</span>(
<span class="ident">Cipher</span>::<span class="ident">aes_128_cbc</span>(),
<span class="ident">Mode</span>::<span class="ident">Decrypt</span>,
<span class="ident">key</span>,
<span class="prelude-val">Some</span>(<span class="ident">iv</span>)).<span class="ident">unwrap</span>();
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">plaintext</span> <span class="op">=</span> <span class="macro">vec</span><span class="macro">!</span>[<span class="number">0</span>; <span class="ident">data_len</span> <span class="op">+</span> <span class="ident">block_size</span>];
<span class="comment">// Decrypt 2 chunks of ciphertexts successively.</span>
<span class="kw">let</span> <span class="kw-2">mut</span> <span class="ident">count</span> <span class="op">=</span> <span class="ident">decrypter</span>.<span class="ident">update</span>(<span class="ident">ciphertexts</span>[<span class="number">0</span>], <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">plaintext</span>).<span class="ident">unwrap</span>();
<span class="ident">count</span> <span class="op">+</span><span class="op">=</span> <span class="ident">decrypter</span>.<span class="ident">update</span>(<span class="ident">ciphertexts</span>[<span class="number">1</span>], <span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">plaintext</span>[<span class="ident">count</span>..]).<span class="ident">unwrap</span>();
<span class="ident">count</span> <span class="op">+</span><span class="op">=</span> <span class="ident">decrypter</span>.<span class="ident">finalize</span>(<span class="kw-2">&amp;</span><span class="kw-2">mut</span> <span class="ident">plaintext</span>[<span class="ident">count</span>..]).<span class="ident">unwrap</span>();
<span class="ident">plaintext</span>.<span class="ident">truncate</span>(<span class="ident">count</span>);
<span class="macro">assert_eq</span><span class="macro">!</span>(<span class="string">b&quot;Some Stream of Crypto Text&quot;</span>, <span class="kw-2">&amp;</span><span class="ident">plaintext</span>[..]);</pre></div>
</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 <a class="struct" href="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></code><a href="#impl" class="anchor"></a><a class="srclink" href="../../src/openssl/symm.rs.html#418-661" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.new" class="method"><code>pub fn <a href="#method.new" class="fnname">new</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;t: <a class="struct" href="../../openssl/symm/struct.Cipher.html" title="struct openssl::symm::Cipher">Cipher</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;mode: <a class="enum" href="../../openssl/symm/enum.Mode.html" title="enum openssl::symm::Mode">Mode</a>, <br>&nbsp;&nbsp;&nbsp;&nbsp;key: <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;iv: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.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>&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="struct" href="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#426-489" title="goto source code">[src]</a></h4><div class="docblock"><p>Creates a new <code>Crypter</code>. The initialisation vector, <code>iv</code>, is not necesarry for certain
types of <code>Cipher</code>.</p>
<h1 id="panics" class="section-header"><a href="#panics">Panics</a></h1>
<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><h4 id="method.pad" class="method"><code>pub fn <a href="#method.pad" class="fnname">pad</a>(&amp;mut self, padding: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</code><a class="srclink" href="../../src/openssl/symm.rs.html#495-499" title="goto source code">[src]</a></h4><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><h4 id="method.set_tag" class="method"><code>pub fn <a href="#method.set_tag" class="fnname">set_tag</a>(&amp;mut self, tag: <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>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#504-516" title="goto source code">[src]</a></h4><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><h4 id="method.set_tag_len" class="method"><code>pub fn <a href="#method.set_tag_len" class="fnname">set_tag_len</a>(&amp;mut self, tag_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#522-534" title="goto source code">[src]</a></h4><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><h4 id="method.set_data_len" class="method"><code>pub fn <a href="#method.set_data_len" class="fnname">set_data_len</a>(&amp;mut self, data_len: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#540-553" title="goto source code">[src]</a></h4><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><h4 id="method.aad_update" class="method"><code>pub fn <a href="#method.aad_update" class="fnname">aad_update</a>(&amp;mut self, input: <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>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#560-573" title="goto source code">[src]</a></h4><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><h4 id="method.update" class="method"><code>pub fn <a href="#method.update" class="fnname">update</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self, <br>&nbsp;&nbsp;&nbsp;&nbsp;input: <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;output: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</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.usize.html">usize</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#589-611" title="goto source code">[src]</a></h4><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>
<h1 id="panics-1" class="section-header"><a href="#panics-1">Panics</a></h1>
<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_value()</code>.</p>
</div><h4 id="method.finalize" class="method"><code>pub fn <a href="#method.finalize" class="fnname">finalize</a>(&amp;mut self, output: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</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;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#624-639" title="goto source code">[src]</a></h4><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>
<h1 id="panics-2" class="section-header"><a href="#panics-2">Panics</a></h1>
<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><h4 id="method.get_tag" class="method"><code>pub fn <a href="#method.get_tag" class="fnname">get_tag</a>(&amp;self, tag: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.slice.html">&amp;mut [</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;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../../openssl/error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</code><a class="srclink" href="../../src/openssl/symm.rs.html#649-660" title="goto source code">[src]</a></h4><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></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><h3 id="impl-Drop" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html" title="trait core::ops::drop::Drop">Drop</a> for <a class="struct" href="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></code><a href="#impl-Drop" class="anchor"></a><a class="srclink" href="../../src/openssl/symm.rs.html#663-669" title="goto source code">[src]</a></h3><div class="impl-items"><h4 id="method.drop" class="method hidden"><code>fn <a href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop" class="fnname">drop</a>(&amp;mut self)</code><a class="srclink" href="../../src/openssl/symm.rs.html#664-668" title="goto source code">[src]</a></h4><div class='docblock hidden'><p>Executes the destructor for this type. <a href="https://doc.rust-lang.org/nightly/core/ops/drop/trait.Drop.html#tymethod.drop">Read more</a></p>
</div></div><h3 id="impl-Send" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Send.html" title="trait core::marker::Send">Send</a> for <a class="struct" href="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></code><a href="#impl-Send" class="anchor"></a><a class="srclink" href="../../src/openssl/symm.rs.html#416" title="goto source code">[src]</a></h3><div class="impl-items"></div><h3 id="impl-Sync" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Sync.html" title="trait core::marker::Sync">Sync</a> for <a class="struct" href="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></code><a href="#impl-Sync" class="anchor"></a><a class="srclink" href="../../src/openssl/symm.rs.html#415" title="goto source code">[src]</a></h3><div class="impl-items"></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 <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="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></code><a href="#impl-RefUnwindSafe" class="anchor"></a></h3><div class="impl-items"></div><h3 id="impl-Unpin" class="impl"><code class="in-band">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/marker/trait.Unpin.html" title="trait core::marker::Unpin">Unpin</a> for <a class="struct" href="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></code><a href="#impl-Unpin" class="anchor"></a></h3><div class="impl-items"></div><h3 id="impl-UnwindSafe" class="impl"><code class="in-band">impl <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="../../openssl/symm/struct.Crypter.html" title="struct openssl::symm::Crypter">Crypter</a></code><a href="#impl-UnwindSafe" class="anchor"></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" 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="openssl"></div>
<script src="../../main.js"></script><script defer src="../../search-index.js"></script></body></html>