1<html><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968"><title>crypto_shash_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="ch05s13.html" title="Synchronous Message Digest API"><link rel="prev" href="API-crypto-shash-update.html" title="crypto_shash_update"><link rel="next" href="API-crypto-shash-finup.html" title="crypto_shash_finup"></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_shash_final</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-crypto-shash-update.html">Prev</a> </td><th width="60%" align="center">Synchronous Message Digest API</th><td width="20%" align="right"> <a accesskey="n" href="API-crypto-shash-finup.html">Next</a></td></tr></table><hr></div><div class="refentry"><a name="API-crypto-shash-final"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>crypto_shash_final — 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_shash_final </b>(</code></td><td>struct shash_desc * <var class="pdparam">desc</var>, </td></tr><tr><td> </td><td>u8 * <var class="pdparam">out</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1"><a name="idp1098344180"></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 operational state handle that is already filled with data 5 </p></dd><dt><span class="term"><em class="parameter"><code>out</code></em></span></dt><dd><p> 6 output buffer filled with the message digest 7 </p></dd></dl></div></div><div class="refsect1"><a name="idp1098346868"></a><h2>Description</h2><p> 8 Finalize the message digest operation and create the message digest 9 based on all data added to the cipher handle. The message digest is placed 10 into the output buffer. The caller must ensure that the output buffer is 11 large enough by using crypto_shash_digestsize. 12</p></div><div class="refsect1"><a name="idp1098347748"></a><h2>Return</h2><p> 13 0 if the message digest creation was successful; < 0 if an error 14 occurred 15</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-shash-update.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05s13.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-crypto-shash-finup.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span class="phrase">crypto_shash_update</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span class="phrase">crypto_shash_finup</span></td></tr></table></div></body></html> 16