1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>crypto_hash_final</title><meta name="generator" content="DocBook XSL Stylesheets V1.78.1"><link rel="home" href="index.html" title="Linux Kernel Crypto API"><link rel="up" href="ch05s09.html" title="Synchronous Message Digest API"><link rel="prev" href="API-crypto-hash-update.html" title="crypto_hash_update"><link rel="next" href="API-crypto-hash-digest.html" title="crypto_hash_digest"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span class="phrase">crypto_hash_final</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-crypto-hash-update.html">Prev</a>&#160;</td><th width="60%" align="center">Synchronous Message Digest API</th><td width="20%" align="right">&#160;<a accesskey="n" href="API-crypto-hash-digest.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-crypto-hash-final"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>crypto_hash_final &#8212; 
2  calculate message digest
3 </p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" class="funcprototype-table" summary="Function synopsis" style="cellspacing: 0; cellpadding: 0;"><tr><td><code class="funcdef">int <b class="fsfunc">crypto_hash_final </b>(</code></td><td>struct hash_desc * <var class="pdparam">desc</var>, </td></tr><tr><td>&#160;</td><td>u8 * <var class="pdparam">out</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer">&#160;</div></div></div><div class="refsect1"><a name="idp1098022964"></a><h2>Arguments</h2><div class="variablelist"><dl class="variablelist"><dt><span class="term"><em class="parameter"><code>desc</code></em></span></dt><dd><p>
4     cipher request handle
5    </p></dd><dt><span class="term"><em class="parameter"><code>out</code></em></span></dt><dd><p>
6     message digest output buffer -- The caller must ensure that the out
7     buffer has a sufficient size (e.g. by using the crypto_hash_digestsize
8     function).
9    </p></dd></dl></div></div><div class="refsect1"><a name="idp1098025660"></a><h2>Description</h2><p>
10   Finalize the message digest operation and create the message digest
11   based on all data added to the cipher handle. The message digest is placed
12   into the output buffer.
13</p></div><div class="refsect1"><a name="idp1098026420"></a><h2>Return</h2><p>
14   0 if the message digest creation was successful; &lt; 0 if an error
15   occurred
16</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-crypto-hash-update.html">Prev</a>&#160;</td><td width="20%" align="center"><a accesskey="u" href="ch05s09.html">Up</a></td><td width="40%" align="right">&#160;<a accesskey="n" href="API-crypto-hash-digest.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">crypto_hash_update</span>&#160;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top">&#160;<span class="phrase">crypto_hash_digest</span></td></tr></table></div></body></html>
17