blob: 3707e537e698765943ad68000df366ed902bd4fa [file] [log] [blame]
<!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="A reference to a [`CipherCtx`]."><meta name="keywords" content="rust, rustlang, rust-lang, CipherCtxRef"><title>CipherCtxRef in openssl::cipher_ctx - Rust</title><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Regular.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../FiraSans-Medium.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Regular.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceSerif4-Bold.ttf.woff2"><link rel="preload" as="font" type="font/woff2" crossorigin href="../../SourceCodePro-Semibold.ttf.woff2"><link rel="stylesheet" href="../../normalize.css"><link rel="stylesheet" href="../../rustdoc.css" id="mainThemeStyle"><link rel="stylesheet" href="../../ayu.css" disabled><link rel="stylesheet" href="../../dark.css" disabled><link rel="stylesheet" href="../../light.css" id="themeStyle"><script id="default-settings" ></script><script src="../../storage.js"></script><script defer src="sidebar-items.js"></script><script defer src="../../main.js"></script><noscript><link rel="stylesheet" href="../../noscript.css"></noscript><link rel="alternate icon" type="image/png" href="../../favicon-16x16.png"><link rel="alternate icon" type="image/png" href="../../favicon-32x32.png"><link rel="icon" type="image/svg+xml" href="../../favicon.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]--><nav class="mobile-topbar"><button class="sidebar-menu-toggle">&#9776;</button><a class="sidebar-logo" href="../../openssl/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2></h2></nav><nav class="sidebar"><a class="sidebar-logo" href="../../openssl/index.html"><div class="logo-container"><img class="rust-logo" src="../../rust-logo.svg" alt="logo"></div></a><h2 class="location"><a href="#">CipherCtxRef</a></h2><div class="sidebar-elems"><section><h3><a href="#implementations">Methods</a></h3><ul class="block"><li><a href="#method.block_size">block_size</a></li><li><a href="#method.cipher_final">cipher_final</a></li><li><a href="#method.cipher_final_unchecked">cipher_final_unchecked</a></li><li><a href="#method.cipher_final_vec">cipher_final_vec</a></li><li><a href="#method.cipher_update">cipher_update</a></li><li><a href="#method.cipher_update_inplace">cipher_update_inplace</a></li><li><a href="#method.cipher_update_unchecked">cipher_update_unchecked</a></li><li><a href="#method.cipher_update_vec">cipher_update_vec</a></li><li><a href="#method.decrypt_init">decrypt_init</a></li><li><a href="#method.encrypt_init">encrypt_init</a></li><li><a href="#method.iv_length">iv_length</a></li><li><a href="#method.key_length">key_length</a></li><li><a href="#method.num">num</a></li><li><a href="#method.open_init">open_init</a></li><li><a href="#method.rand_key">rand_key</a></li><li><a href="#method.seal_init">seal_init</a></li><li><a href="#method.set_data_len">set_data_len</a></li><li><a href="#method.set_iv_length">set_iv_length</a></li><li><a href="#method.set_key_length">set_key_length</a></li><li><a href="#method.set_padding">set_padding</a></li><li><a href="#method.set_tag">set_tag</a></li><li><a href="#method.set_tag_length">set_tag_length</a></li><li><a href="#method.tag">tag</a></li></ul><h3><a href="#trait-implementations">Trait Implementations</a></h3><ul class="block"><li><a href="#impl-AsRef%3CCipherCtxRef%3E-for-CipherCtx">AsRef&lt;CipherCtxRef&gt;</a></li><li><a href="#impl-Borrow%3CCipherCtxRef%3E-for-CipherCtx">Borrow&lt;CipherCtxRef&gt;</a></li><li><a href="#impl-ForeignTypeRef-for-CipherCtxRef">ForeignTypeRef</a></li><li><a href="#impl-Send-for-CipherCtxRef">Send</a></li><li><a href="#impl-Sync-for-CipherCtxRef">Sync</a></li></ul><h3><a href="#synthetic-implementations">Auto Trait Implementations</a></h3><ul class="block"><li><a href="#impl-RefUnwindSafe-for-CipherCtxRef">!RefUnwindSafe</a></li><li><a href="#impl-Unpin-for-CipherCtxRef">Unpin</a></li><li><a href="#impl-UnwindSafe-for-CipherCtxRef">UnwindSafe</a></li></ul><h3><a href="#blanket-implementations">Blanket Implementations</a></h3><ul class="block"><li><a href="#impl-Any-for-CipherCtxRef">Any</a></li><li><a href="#impl-Borrow%3CT%3E-for-CipherCtxRef">Borrow&lt;T&gt;</a></li><li><a href="#impl-BorrowMut%3CT%3E-for-CipherCtxRef">BorrowMut&lt;T&gt;</a></li><li><a href="#impl-From%3CT%3E-for-CipherCtxRef">From&lt;T&gt;</a></li><li><a href="#impl-Into%3CU%3E-for-CipherCtxRef">Into&lt;U&gt;</a></li><li><a href="#impl-TryFrom%3CU%3E-for-CipherCtxRef">TryFrom&lt;U&gt;</a></li><li><a href="#impl-TryInto%3CU%3E-for-CipherCtxRef">TryInto&lt;U&gt;</a></li></ul></section><h2><a href="index.html">In openssl::cipher_ctx</a></h2></div></nav><main><div class="width-limiter"><nav class="sub"><form class="search-form"><div class="search-container"><span></span><input class="search-input" name="search" autocomplete="off" spellcheck="false" placeholder="Click or press ‘S’ to search, ‘?’ for more options…" type="search"><div id="help-button" title="help" tabindex="-1"><a href="../../help.html">?</a></div><div id="settings-menu" tabindex="-1"><a href="../../settings.html" title="settings"><img width="22" height="22" alt="Change settings" src="../../wheel.svg"></a></div></div></form></nav><section id="main-content" class="content"><div class="main-heading"><h1 class="fqn">Struct <a href="../index.html">openssl</a>::<wbr><a href="index.html">cipher_ctx</a>::<wbr><a class="struct" href="#">CipherCtxRef</a><button id="copy-path" onclick="copy_path(this)" title="Copy item path to clipboard"><img src="../../clipboard.svg" width="19" height="18" alt="Copy item path"></button></h1><span class="out-of-band"><a class="srclink" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a> · <a id="toggle-all-docs" href="javascript:void(0)" title="collapse all docs">[<span class="inner">&#x2212;</span>]</a></span></div><div class="item-decl"><pre class="rust struct"><code>pub struct CipherCtxRef(_);</code></pre></div><details class="rustdoc-toggle top-doc" open><summary class="hideme"><span>Expand description</span></summary><div class="docblock"><p>A reference to a <a href="struct.CipherCtx.html" title="CipherCtx"><code>CipherCtx</code></a>.</p>
</div></details><h2 id="implementations" class="small-section-header">Implementations<a href="#implementations" class="anchor"></a></h2><div id="implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#96-695">source</a><a href="#impl-CipherCtxRef" class="anchor"></a><h3 class="code-header">impl <a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.encrypt_init" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#108-115">source</a><h4 class="code-header">pub fn <a href="#method.encrypt_init" class="fnname">encrypt_init</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;type_: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../cipher/struct.CipherRef.html" title="struct openssl::cipher::CipherRef">CipherRef</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;key: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,<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;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/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>Initializes the context for encryption.</p>
<p>Normally this is called once to set all of the cipher, key, and IV. However, this process can be split up
by first setting the cipher with no key or IV and then setting the key and IV with no cipher. This can be used
to, for example, use a nonstandard IV size.</p>
<h5 id="panics"><a href="#panics">Panics</a></h5>
<p>Panics if the key buffer is smaller than the key size of the cipher, the IV buffer is smaller than the IV size
of the cipher, or if a key or IV is provided before a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_EncryptInit_ex.html"><code>EVP_EncryptInit_ex</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.decrypt_init" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#128-135">source</a><h4 class="code-header">pub fn <a href="#method.decrypt_init" class="fnname">decrypt_init</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;type_: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../cipher/struct.CipherRef.html" title="struct openssl::cipher::CipherRef">CipherRef</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;key: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,<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;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/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>Initializes the context for decryption.</p>
<p>Normally this is called once to set all of the cipher, key, and IV. However, this process can be split up
by first setting the cipher with no key or IV and then setting the key and IV with no cipher. This can be used
to, for example, use a nonstandard IV size.</p>
<h5 id="panics-1"><a href="#panics-1">Panics</a></h5>
<p>Panics if the key buffer is smaller than the key size of the cipher, the IV buffer is smaller than the IV size
of the cipher, or if a key or IV is provided before a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_DecryptInit_ex.html"><code>EVP_DecryptInit_ex</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.seal_init" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#187-231">source</a><h4 class="code-header">pub fn <a href="#method.seal_init" class="fnname">seal_init</a>&lt;T&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;type_: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../cipher/struct.CipherRef.html" title="struct openssl::cipher::CipherRef">CipherRef</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;pub_keys: &amp;[<a class="struct" href="../pkey/struct.PKey.html" title="struct openssl::pkey::PKey">PKey</a>&lt;T&gt;],<br>&nbsp;&nbsp;&nbsp;&nbsp;encrypted_keys: &amp;mut [<a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>&gt;],<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;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../pkey/trait.HasPublic.html" title="trait openssl::pkey::HasPublic">HasPublic</a>,</span></h4></section></summary><div class="docblock"><p>Initializes the context to perform envelope encryption.</p>
<p>Normally this is called once to set both the cipher and public keys. However, this process may be split up by
first providing the cipher with no public keys and then setting the public keys with no cipher.</p>
<p><code>encrypted_keys</code> will contain the generated symmetric key encrypted with each corresponding asymmetric private
key. The generated IV will be written to <code>iv</code>.</p>
<h5 id="panics-2"><a href="#panics-2">Panics</a></h5>
<p>Panics if <code>pub_keys</code> is not the same size as <code>encrypted_keys</code>, the IV buffer is smaller than the cipher’s IV
size, or if an IV is provided before the cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_SealInit.html"><code>EVP_SealInit</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.open_init" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#244-272">source</a><h4 class="code-header">pub fn <a href="#method.open_init" class="fnname">open_init</a>&lt;T&gt;(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;type_: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../cipher/struct.CipherRef.html" title="struct openssl::cipher::CipherRef">CipherRef</a>&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;encrypted_key: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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;&amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>]&gt;,<br>&nbsp;&nbsp;&nbsp;&nbsp;priv_key: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;<a class="struct" href="../pkey/struct.PKeyRef.html" title="struct openssl::pkey::PKeyRef">PKeyRef</a>&lt;T&gt;&gt;<br>) -&gt; <a class="enum" href="https://doc.rust-lang.org/nightly/core/result/enum.Result.html" title="enum core::result::Result">Result</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.unit.html">()</a>, <a class="struct" href="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;<span class="where fmt-newline">where<br>&nbsp;&nbsp;&nbsp;&nbsp;T: <a class="trait" href="../pkey/trait.HasPrivate.html" title="trait openssl::pkey::HasPrivate">HasPrivate</a>,</span></h4></section></summary><div class="docblock"><p>Initializes the context to perform envelope decryption.</p>
<p>Normally this is called once with all of the arguments present. However, this process may be split up by first
providing the cipher alone and then after providing the rest of the arguments in a second call.</p>
<h5 id="panics-3"><a href="#panics-3">Panics</a></h5>
<p>Panics if the IV buffer is smaller than the cipher’s required IV size or if the IV is provided before the
cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_OpenInit.html"><code>EVP_OpenInit</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.block_size" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#288-292">source</a><h4 class="code-header">pub fn <a href="#method.block_size" class="fnname">block_size</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the block size of the context’s cipher.</p>
<p>Stream ciphers will report a block size of 1.</p>
<h5 id="panics-4"><a href="#panics-4">Panics</a></h5>
<p>Panics if the context has not been initialized with a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_block_size.html"><code>EVP_CIPHER_CTX_block_size</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.key_length" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#300-304">source</a><h4 class="code-header">pub fn <a href="#method.key_length" class="fnname">key_length</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the key length of the context’s cipher.</p>
<h5 id="panics-5"><a href="#panics-5">Panics</a></h5>
<p>Panics if the context has not been initialized with a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_key_length.html"><code>EVP_CIPHER_CTX_key_length</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.rand_key" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#318-329">source</a><h4 class="code-header">pub fn <a href="#method.rand_key" class="fnname">rand_key</a>(&amp;self, buf: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Generates a random key based on the configured cipher.</p>
<h5 id="panics-6"><a href="#panics-6">Panics</a></h5>
<p>Panics if the context has not been initialized with a cipher or if the buffer is smaller than the cipher’s key
length.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_rand_key.html"><code>EVP_CIPHER_CTX_rand_key</code></a>.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_rand_key.html"><code>EVP_CIPHER_CTX_rand_key</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_key_length" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#339-350">source</a><h4 class="code-header">pub fn <a href="#method.set_key_length" class="fnname">set_key_length</a>(&amp;mut self, 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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the length of the key expected by the context.</p>
<p>Only some ciphers support configurable key lengths.</p>
<h5 id="panics-7"><a href="#panics-7">Panics</a></h5>
<p>Panics if the context has not been initialized with a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_set_key_length.html"><code>EVP_CIPHER_CTX_set_key_length</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.iv_length" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#360-364">source</a><h4 class="code-header">pub fn <a href="#method.iv_length" class="fnname">iv_length</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the length of the IV expected by this context.</p>
<p>Returns 0 if the cipher does not use an IV.</p>
<h5 id="panics-8"><a href="#panics-8">Panics</a></h5>
<p>Panics if the context has not been initialized with a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_iv_length.html"><code>EVP_CIPHER_CTX_iv_length</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.num" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#376-380">source</a><h4 class="code-header">pub fn <a href="#method.num" class="fnname">num</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</a></h4></section></summary><div class="docblock"><p>Returns the <code>num</code> parameter of the cipher.</p>
<p>Built-in ciphers typically use this to track how much of the
current underlying block has been “used” already.</p>
<h5 id="panics-9"><a href="#panics-9">Panics</a></h5>
<p>Panics if the context has not been initialized with a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_num.html"><code>EVP_CIPHER_CTX_num</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_iv_length" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#390-405">source</a><h4 class="code-header">pub fn <a href="#method.set_iv_length" class="fnname">set_iv_length</a>(&amp;mut self, 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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the length of the IV expected by this context.</p>
<p>Only some ciphers support configurable IV lengths.</p>
<h5 id="panics-10"><a href="#panics-10">Panics</a></h5>
<p>Panics if the context has not been initialized with a cipher.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_ctrl.html"><code>EVP_CIPHER_CTX_ctrl</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.tag" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#431-444">source</a><h4 class="code-header">pub fn <a href="#method.tag" class="fnname">tag</a>(&amp;self, tag: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Retrieves the calculated authentication tag from the context.</p>
<p>This should be called after <a href="struct.CipherCtxRef.html#method.cipher_final" title="Self::cipher_final"><code>Self::cipher_final</code></a>, and is only supported by authenticated ciphers.</p>
<p>The size of the buffer indicates the size of the tag. While some ciphers support a range of tag sizes, it is
recommended to pick the maximum size.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_ctrl.html"><code>EVP_CIPHER_CTX_ctrl</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tag_length" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#450-463">source</a><h4 class="code-header">pub fn <a href="#method.set_tag_length" class="fnname">set_tag_length</a>(&amp;mut self, 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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the length of the generated authentication tag.</p>
<p>This must be called when encrypting with a cipher in CCM mode to use a tag size other than the default.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_ctrl.html"><code>EVP_CIPHER_CTX_ctrl</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_tag" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#467-480">source</a><h4 class="code-header">pub fn <a href="#method.set_tag" class="fnname">set_tag</a>(&amp;mut self, tag: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the authentication tag for verification during decryption.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_ctrl.html"><code>EVP_CIPHER_CTX_ctrl</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_padding" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#486-490">source</a><h4 class="code-header">pub fn <a href="#method.set_padding" class="fnname">set_padding</a>(&amp;mut self, padding: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.bool.html">bool</a>)</h4></section></summary><div class="docblock"><p>Enables or disables padding.</p>
<p>If padding is disabled, the plaintext must be an exact multiple of the cipher’s block size.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CIPHER_CTX_set_padding.html"><code>EVP_CIPHER_CTX_set_padding</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.set_data_len" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#496-510">source</a><h4 class="code-header">pub fn <a href="#method.set_data_len" class="fnname">set_data_len</a>(&amp;mut self, 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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Sets the total length of plaintext data.</p>
<p>This is required for ciphers operating in CCM mode.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CipherUpdate.html"><code>EVP_CipherUpdate</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cipher_update" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#523-542">source</a><h4 class="code-header">pub fn <a href="#method.cipher_update" class="fnname">cipher_update</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;input: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],<br>&nbsp;&nbsp;&nbsp;&nbsp;output: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/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>Writes data into the context.</p>
<p>Providing no output buffer will cause the input to be considered additional authenticated data (AAD).</p>
<p>Returns the number of bytes written to <code>output</code>.</p>
<h5 id="panics-11"><a href="#panics-11">Panics</a></h5>
<p>Panics if <code>output</code> doesn’t contain enough space for data to be
written as specified by [<code>Self::minimal_output_size</code>].</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CipherUpdate.html"><code>EVP_CipherUpdate</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cipher_update_unchecked" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#560-578">source</a><h4 class="code-header">pub unsafe fn <a href="#method.cipher_update_unchecked" class="fnname">cipher_update_unchecked</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;input: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],<br>&nbsp;&nbsp;&nbsp;&nbsp;output: <a class="enum" href="https://doc.rust-lang.org/nightly/core/option/enum.Option.html" title="enum core::option::Option">Option</a>&lt;&amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/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>Writes data into the context.</p>
<p>Providing no output buffer will cause the input to be considered additional authenticated data (AAD).</p>
<p>Returns the number of bytes written to <code>output</code>.</p>
<p>This function is the same as <a href="struct.CipherCtxRef.html#method.cipher_update" title="Self::cipher_update"><code>Self::cipher_update</code></a> but with the
output size check removed. It can be used when the exact
buffer size control is maintained by the caller.</p>
<p>SAFETY: The caller is expected to provide <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>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CipherUpdate.html"><code>EVP_CipherUpdate</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cipher_update_vec" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#581-592">source</a><h4 class="code-header">pub fn <a href="#method.cipher_update_vec" class="fnname">cipher_update_vec</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;input: &amp;[<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],<br>&nbsp;&nbsp;&nbsp;&nbsp;output: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/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>Like <a href="struct.CipherCtxRef.html#method.cipher_update" title="Self::cipher_update"><code>Self::cipher_update</code></a> except that it appends output to a <a href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="Vec"><code>Vec</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cipher_update_inplace" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#608-636">source</a><h4 class="code-header">pub fn <a href="#method.cipher_update_inplace" class="fnname">cipher_update_inplace</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;data: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</a>],<br>&nbsp;&nbsp;&nbsp;&nbsp;inlen: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.usize.html">usize</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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Like <a href="struct.CipherCtxRef.html#method.cipher_update" title="Self::cipher_update"><code>Self::cipher_update</code></a> except that it writes output into the
<code>data</code> buffer. The <code>inlen</code> parameter specifies the number of bytes in
<code>data</code> that are considered the input. For streaming ciphers, the size of
<code>data</code> must be at least the input size. Otherwise, it must be at least
an additional block size larger.</p>
<p>Note: Use <a href="struct.CipherCtxRef.html#method.cipher_update" title="Self::cipher_update"><code>Self::cipher_update</code></a> with no output argument to write AAD.</p>
<h5 id="panics-12"><a href="#panics-12">Panics</a></h5>
<p>This function panics if the input size cannot be represented as <code>int</code> or
exceeds the buffer size, or if the output buffer does not contain enough
additional space.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CipherUpdate.html"><code>EVP_CipherUpdate</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cipher_final" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#648-655">source</a><h4 class="code-header">pub fn <a href="#method.cipher_final" class="fnname">cipher_final</a>(&amp;mut self, output: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Finalizes the encryption or decryption process.</p>
<p>Any remaining data will be written to the output buffer.</p>
<p>Returns the number of bytes written to <code>output</code>.</p>
<h5 id="panics-13"><a href="#panics-13">Panics</a></h5>
<p>Panics if <code>output</code> is smaller than the cipher’s block size.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CipherFinal.html"><code>EVP_CipherFinal</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cipher_final_unchecked" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#671-684">source</a><h4 class="code-header">pub unsafe fn <a href="#method.cipher_final_unchecked" class="fnname">cipher_final_unchecked</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;output: &amp;mut [<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="../error/struct.ErrorStack.html" title="struct openssl::error::ErrorStack">ErrorStack</a>&gt;</h4></section></summary><div class="docblock"><p>Finalizes the encryption or decryption process.</p>
<p>Any remaining data will be written to the output buffer.</p>
<p>Returns the number of bytes written to <code>output</code>.</p>
<p>This function is the same as <a href="struct.CipherCtxRef.html#method.cipher_final" title="Self::cipher_final"><code>Self::cipher_final</code></a> but with
the output buffer size check removed.</p>
<p>SAFETY: The caller is expected to provide <code>output</code> buffer
large enough to contain correct number of bytes. For streaming
ciphers the output buffer can be empty, for block ciphers the
output buffer should be at least as big as the block.</p>
<p>This corresponds to <a href="https://www.openssl.org/docs/manmaster/man3/EVP_CipherFinal.html"><code>EVP_CipherFinal</code></a>.</p>
</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.cipher_final_vec" class="method has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#687-694">source</a><h4 class="code-header">pub fn <a href="#method.cipher_final_vec" class="fnname">cipher_final_vec</a>(<br>&nbsp;&nbsp;&nbsp;&nbsp;&amp;mut self,<br>&nbsp;&nbsp;&nbsp;&nbsp;output: &amp;mut <a class="struct" href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="struct alloc::vec::Vec">Vec</a>&lt;<a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.u8.html">u8</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="primitive" href="https://doc.rust-lang.org/nightly/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>Like <a href="struct.CipherCtxRef.html#method.cipher_final" title="Self::cipher_final"><code>Self::cipher_final</code></a> except that it appends output to a <a href="https://doc.rust-lang.org/nightly/alloc/vec/struct.Vec.html" title="Vec"><code>Vec</code></a>.</p>
</div></details></div></details></div><h2 id="trait-implementations" class="small-section-header">Trait Implementations<a href="#trait-implementations" class="anchor"></a></h2><div id="trait-implementations-list"><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-AsRef%3CCipherCtxRef%3E-for-CipherCtx" class="impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a><a href="#impl-AsRef%3CCipherCtxRef%3E-for-CipherCtx" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html" title="trait core::convert::AsRef">AsRef</a>&lt;<a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a>&gt; for <a class="struct" href="struct.CipherCtx.html" title="struct openssl::cipher_ctx::CipherCtx">CipherCtx</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_ref" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a><a href="#method.as_ref" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.AsRef.html#tymethod.as_ref" class="fnname">as_ref</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h4></section></summary><div class='docblock'>Converts this type into a shared reference of the (usually inferred) input type.</div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-Borrow%3CCipherCtxRef%3E-for-CipherCtx" class="impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a><a href="#impl-Borrow%3CCipherCtxRef%3E-for-CipherCtx" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html" title="trait core::borrow::Borrow">Borrow</a>&lt;<a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a>&gt; for <a class="struct" href="struct.CipherCtx.html" title="struct openssl::cipher_ctx::CipherCtx">CipherCtx</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a><a href="#method.borrow" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow" class="fnname">borrow</a>(&amp;self) -&gt; &amp;<a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle" open><summary><section id="impl-ForeignTypeRef-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a><a href="#impl-ForeignTypeRef-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="../../foreign_types_shared/trait.ForeignTypeRef.html" title="trait foreign_types_shared::ForeignTypeRef">ForeignTypeRef</a> for <a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.CType" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.CType" class="anchor"></a><h4 class="code-header">type <a href="../../foreign_types_shared/trait.ForeignTypeRef.html#associatedtype.CType" class="associatedtype">CType</a> = <a class="enum" href="../../openssl_sys/openssl/handwritten/types/enum.EVP_CIPHER_CTX.html" title="enum openssl_sys::openssl::handwritten::types::EVP_CIPHER_CTX">EVP_CIPHER_CTX</a></h4></section></summary><div class='docblock'>The raw C type.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_ptr" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/foreign_types_shared/lib.rs.html#36">source</a><a href="#method.from_ptr" class="anchor"></a><h4 class="code-header">unsafe fn <a href="../../foreign_types_shared/trait.ForeignTypeRef.html#method.from_ptr" class="fnname">from_ptr</a>&lt;'a&gt;(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut </a>Self::<a class="associatedtype" href="../../foreign_types_shared/trait.ForeignTypeRef.html#associatedtype.CType" title="type foreign_types_shared::ForeignTypeRef::CType">CType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a </a>Self</h4></section></summary><div class='docblock'>Constructs a shared instance of this type from its raw type.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from_ptr_mut" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/foreign_types_shared/lib.rs.html#42">source</a><a href="#method.from_ptr_mut" class="anchor"></a><h4 class="code-header">unsafe fn <a href="../../foreign_types_shared/trait.ForeignTypeRef.html#method.from_ptr_mut" class="fnname">from_ptr_mut</a>&lt;'a&gt;(ptr: <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut </a>Self::<a class="associatedtype" href="../../foreign_types_shared/trait.ForeignTypeRef.html#associatedtype.CType" title="type foreign_types_shared::ForeignTypeRef::CType">CType</a>) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.reference.html">&amp;'a mut </a>Self</h4></section></summary><div class='docblock'>Constructs a mutable reference of this type from its raw type.</div></details><details class="rustdoc-toggle method-toggle" open><summary><section id="method.as_ptr" class="method trait-impl has-srclink"><a class="srclink rightside" href="../../src/foreign_types_shared/lib.rs.html#48">source</a><a href="#method.as_ptr" class="anchor"></a><h4 class="code-header">fn <a href="../../foreign_types_shared/trait.ForeignTypeRef.html#method.as_ptr" class="fnname">as_ptr</a>(&amp;self) -&gt; <a class="primitive" href="https://doc.rust-lang.org/nightly/std/primitive.pointer.html">*mut </a>Self::<a class="associatedtype" href="../../foreign_types_shared/trait.ForeignTypeRef.html#associatedtype.CType" title="type foreign_types_shared::ForeignTypeRef::CType">CType</a></h4></section></summary><div class='docblock'>Returns a raw pointer to the wrapped value.</div></details></div></details><section id="impl-Send-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a><a href="#impl-Send-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h3></section><section id="impl-Sync-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="../../src/openssl/cipher_ctx.rs.html#73-81">source</a><a href="#impl-Sync-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h3></section></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"><section id="impl-RefUnwindSafe-for-CipherCtxRef" class="impl has-srclink"><a href="#impl-RefUnwindSafe-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">impl !<a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.RefUnwindSafe.html" title="trait core::panic::unwind_safe::RefUnwindSafe">RefUnwindSafe</a> for <a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h3></section><section id="impl-Unpin-for-CipherCtxRef" class="impl has-srclink"><a href="#impl-Unpin-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h3></section><section id="impl-UnwindSafe-for-CipherCtxRef" class="impl has-srclink"><a href="#impl-UnwindSafe-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">impl <a class="trait" href="https://doc.rust-lang.org/nightly/core/panic/unwind_safe/trait.UnwindSafe.html" title="trait core::panic::unwind_safe::UnwindSafe">UnwindSafe</a> for <a class="struct" href="struct.CipherCtxRef.html" title="struct openssl::cipher_ctx::CipherCtxRef">CipherCtxRef</a></h3></section></div><h2 id="blanket-implementations" class="small-section-header">Blanket Implementations<a href="#blanket-implementations" class="anchor"></a></h2><div id="blanket-implementations-list"><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Any-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#200">source</a><a href="#impl-Any-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.type_id" class="method trait-impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/any.rs.html#201">source</a><a href="#method.type_id" class="anchor"></a><h4 class="code-header">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></h4></section></summary><div class='docblock'>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></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Borrow%3CT%3E-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#211">source</a><a href="#impl-Borrow%3CT%3E-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow-1" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#213">source</a></span><a href="#method.borrow-1" class="anchor"></a><h4 class="code-header">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</h4></section></summary><div class='docblock'>Immutably borrows from an owned value. <a href="https://doc.rust-lang.org/nightly/core/borrow/trait.Borrow.html#tymethod.borrow">Read more</a></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-BorrowMut%3CT%3E-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#220">source</a><a href="#impl-BorrowMut%3CT%3E-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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>,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.borrow_mut" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/91522" title="Tracking issue for const_borrow">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/borrow.rs.html#221">source</a></span><a href="#method.borrow_mut" class="anchor"></a><h4 class="code-header">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</h4></section></summary><div class='docblock'>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></div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-From%3CT%3E-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#733">source</a><a href="#impl-From%3CT%3E-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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</h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#736">source</a></span><a href="#method.from" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.From.html#tymethod.from" class="fnname">from</a>(t: T) -&gt; T</h4></section></summary><div class="docblock"><p>Returns the argument unchanged.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-Into%3CU%3E-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#717">source</a><a href="#impl-Into%3CU%3E-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle method-toggle" open><summary><section id="method.into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#725">source</a></span><a href="#method.into" class="anchor"></a><h4 class="code-header">fn <a href="https://doc.rust-lang.org/nightly/core/convert/trait.Into.html#tymethod.into" class="fnname">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/nightly/core/convert/trait.From.html" title="From">From</a>&lt;T&gt; for U</code> chooses to do.</p>
</div></details></div></details><details class="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryFrom%3CU%3E-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#775">source</a><a href="#impl-TryFrom%3CU%3E-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error-1" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error-1" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryFrom.html#associatedtype.Error" class="associatedtype">Error</a> = <a class="enum" href="https://doc.rust-lang.org/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.try_from" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#781">source</a></span><a href="#method.try_from" class="anchor"></a><h4 class="code-header">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="associatedtype" href="https://doc.rust-lang.org/nightly/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="rustdoc-toggle implementors-toggle"><summary><section id="impl-TryInto%3CU%3E-for-CipherCtxRef" class="impl has-srclink"><a class="srclink rightside" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#760">source</a><a href="#impl-TryInto%3CU%3E-for-CipherCtxRef" class="anchor"></a><h3 class="code-header">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;,</span></h3></section></summary><div class="impl-items"><details class="rustdoc-toggle" open><summary><section id="associatedtype.Error" class="associatedtype trait-impl has-srclink"><a href="#associatedtype.Error" class="anchor"></a><h4 class="code-header">type <a href="https://doc.rust-lang.org/nightly/core/convert/trait.TryInto.html#associatedtype.Error" class="associatedtype">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="associatedtype" href="https://doc.rust-lang.org/nightly/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="rustdoc-toggle method-toggle" open><summary><section id="method.try_into" class="method trait-impl has-srclink"><span class="rightside"><span class="since" title="const unstable">const: <a href="https://github.com/rust-lang/rust/issues/88674" title="Tracking issue for const_convert">unstable</a></span> · <a class="srclink" href="https://doc.rust-lang.org/nightly/src/core/convert/mod.rs.html#766">source</a></span><a href="#method.try_into" class="anchor"></a><h4 class="code-header">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="associatedtype" href="https://doc.rust-lang.org/nightly/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><div id="rustdoc-vars" data-root-path="../../" data-current-crate="openssl" data-themes="ayu,dark,light" data-resource-suffix="" data-rustdoc-version="1.66.0-nightly (5c8bff74b 2022-10-21)" ></div></body></html>