Sophie

Sophie

distrib > Mageia > 7 > armv7hl > media > core-release > by-pkgid > 0a67b807a02637f2cae68649d519a89d > files > 1024

libcryptopp-devel-7.0.0-1.mga7.armv7hl.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.14"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Crypto++: HashTransformation Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Crypto++
   &#160;<span id="projectnumber">7.0</span>
   </div>
   <div id="projectbrief">Free&nbsp;C&#43;&#43;&nbsp;class&nbsp;library&nbsp;of&nbsp;cryptographic&nbsp;schemes</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.14 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
  initMenu('',false,false,'search.php','Search');
});
/* @license-end */</script>
<div id="main-nav"></div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="class_hash_transformation-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">HashTransformation Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
</div><!--header-->
<div class="contents">

<p>Interface for hash functions and data processing part of MACs.  
 <a href="class_hash_transformation.html#details">More...</a></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for HashTransformation:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
 <div class="center">
  <img src="class_hash_transformation.png" usemap="#HashTransformation_map" alt=""/>
  <map id="HashTransformation_map" name="HashTransformation_map">
<area href="class_algorithm.html" title="Interface for all crypto algorithms. " alt="Algorithm" shape="rect" coords="0,56,358,80"/>
<area href="class_clonable.html" title="Interface for cloning objects. " alt="Clonable" shape="rect" coords="0,0,358,24"/>
<area href="class_adler32.html" title="ADLER-32 checksum calculations. " alt="Adler32" shape="rect" coords="368,168,726,192"/>
<area href="class_c_r_c32.html" title="CRC-32 Checksum Calculation. " alt="CRC32" shape="rect" coords="368,224,726,248"/>
<area href="class_c_r_c32_c.html" title="CRC-32C Checksum Calculation. " alt="CRC32C" shape="rect" coords="368,280,726,304"/>
<area href="class_iterated_hash_base.html" alt="IteratedHashBase&lt; T_HashWordType, HashTransformation &gt;" shape="rect" coords="368,336,726,360"/>
<area href="class_iterated_hash_base.html" alt="IteratedHashBase&lt; word32, HashTransformation &gt;" shape="rect" coords="368,392,726,416"/>
<area href="class_iterated_hash_base.html" alt="IteratedHashBase&lt; word64, HashTransformation &gt;" shape="rect" coords="368,448,726,472"/>
<area href="class_keccak.html" title="Keccak message digest base class. " alt="Keccak" shape="rect" coords="368,504,726,528"/>
<area href="class_message_authentication_code.html" title="Interface for message authentication codes. " alt="MessageAuthenticationCode" shape="rect" coords="368,560,726,584"/>
<area href="class_null_hash.html" alt="NullHash" shape="rect" coords="368,616,726,640"/>
<area href="class_p_k___message_accumulator.html" title="Interface for accumulating messages to be signed or verified. " alt="PK_MessageAccumulator" shape="rect" coords="368,672,726,696"/>
<area href="class_s_h_a3.html" title="SHA3 message digest base class. " alt="SHA3" shape="rect" coords="368,728,726,752"/>
<area href="class_truncated_hash_template.html" title="construct new HashModule with smaller DigestSize() from existing one " alt="TruncatedHashTemplate&lt; T &gt;" shape="rect" coords="368,784,726,808"/>
<area href="class_weak_1_1_m_d2.html" title="MD2 message digest. " alt="Weak::MD2" shape="rect" coords="368,840,726,864"/>
</map>
 </div></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a39b0a4c4cdc11fda358f9975b5e4137e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_hash_transformation.html">HashTransformation</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a39b0a4c4cdc11fda358f9975b5e4137e">Ref</a> ()</td></tr>
<tr class="memdesc:a39b0a4c4cdc11fda358f9975b5e4137e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides a reference to this object.  <a href="#a39b0a4c4cdc11fda358f9975b5e4137e">More...</a><br /></td></tr>
<tr class="separator:a39b0a4c4cdc11fda358f9975b5e4137e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafabefaf445b65d3ba0d8e1c0294afe5"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#aafabefaf445b65d3ba0d8e1c0294afe5">Update</a> (const byte *input, size_t length)=0</td></tr>
<tr class="memdesc:aafabefaf445b65d3ba0d8e1c0294afe5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates a hash with additional input.  <a href="#aafabefaf445b65d3ba0d8e1c0294afe5">More...</a><br /></td></tr>
<tr class="separator:aafabefaf445b65d3ba0d8e1c0294afe5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9fc0b332ef36900ca6ea5d949e95aba1"><td class="memItemLeft" align="right" valign="top">virtual byte *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a9fc0b332ef36900ca6ea5d949e95aba1">CreateUpdateSpace</a> (size_t &amp;size)</td></tr>
<tr class="memdesc:a9fc0b332ef36900ca6ea5d949e95aba1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Request space which can be written into by the caller.  <a href="#a9fc0b332ef36900ca6ea5d949e95aba1">More...</a><br /></td></tr>
<tr class="separator:a9fc0b332ef36900ca6ea5d949e95aba1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa0b8c7a110d8968268fd02ec32b9a8e8"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8">Final</a> (byte *digest)</td></tr>
<tr class="memdesc:aa0b8c7a110d8968268fd02ec32b9a8e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the hash of the current message.  <a href="#aa0b8c7a110d8968268fd02ec32b9a8e8">More...</a><br /></td></tr>
<tr class="separator:aa0b8c7a110d8968268fd02ec32b9a8e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a92752eebac10497211d7a065faba8725"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a92752eebac10497211d7a065faba8725">Restart</a> ()</td></tr>
<tr class="memdesc:a92752eebac10497211d7a065faba8725"><td class="mdescLeft">&#160;</td><td class="mdescRight">Restart the hash.  <a href="#a92752eebac10497211d7a065faba8725">More...</a><br /></td></tr>
<tr class="separator:a92752eebac10497211d7a065faba8725"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9f42cc280bac76b884ad12615c0dabb5"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5">DigestSize</a> () const =0</td></tr>
<tr class="memdesc:a9f42cc280bac76b884ad12615c0dabb5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the digest size of the hash.  <a href="#a9f42cc280bac76b884ad12615c0dabb5">More...</a><br /></td></tr>
<tr class="separator:a9f42cc280bac76b884ad12615c0dabb5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af68588a8333e11066a0da91506cebbb4"><td class="memItemLeft" align="right" valign="top">unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#af68588a8333e11066a0da91506cebbb4">TagSize</a> () const</td></tr>
<tr class="memdesc:af68588a8333e11066a0da91506cebbb4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the tag size of the hash.  <a href="#af68588a8333e11066a0da91506cebbb4">More...</a><br /></td></tr>
<tr class="separator:af68588a8333e11066a0da91506cebbb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a09c66b86bbe3c13ea9e8d74775696d42"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a09c66b86bbe3c13ea9e8d74775696d42">BlockSize</a> () const</td></tr>
<tr class="memdesc:a09c66b86bbe3c13ea9e8d74775696d42"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the block size of the compression function.  <a href="#a09c66b86bbe3c13ea9e8d74775696d42">More...</a><br /></td></tr>
<tr class="separator:a09c66b86bbe3c13ea9e8d74775696d42"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aee97908d965930ee454f7a88b0ff0f71"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#aee97908d965930ee454f7a88b0ff0f71">OptimalBlockSize</a> () const</td></tr>
<tr class="memdesc:aee97908d965930ee454f7a88b0ff0f71"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the input block size most efficient for this hash.  <a href="#aee97908d965930ee454f7a88b0ff0f71">More...</a><br /></td></tr>
<tr class="separator:aee97908d965930ee454f7a88b0ff0f71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a927a808007503246a745a564ad451da5"><td class="memItemLeft" align="right" valign="top">virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a927a808007503246a745a564ad451da5">OptimalDataAlignment</a> () const</td></tr>
<tr class="memdesc:a927a808007503246a745a564ad451da5"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides input and output data alignment for optimal performance.  <a href="#a927a808007503246a745a564ad451da5">More...</a><br /></td></tr>
<tr class="separator:a927a808007503246a745a564ad451da5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af8124c4fca23b74bbdc43660bdae692c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#af8124c4fca23b74bbdc43660bdae692c">CalculateDigest</a> (byte *digest, const byte *input, size_t length)</td></tr>
<tr class="memdesc:af8124c4fca23b74bbdc43660bdae692c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the hash with additional input and computes the hash of the current message.  <a href="#af8124c4fca23b74bbdc43660bdae692c">More...</a><br /></td></tr>
<tr class="separator:af8124c4fca23b74bbdc43660bdae692c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a16c4aecd047015d513feef4ed5b929ba"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba">Verify</a> (const byte *digest)</td></tr>
<tr class="memdesc:a16c4aecd047015d513feef4ed5b929ba"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies the hash of the current message.  <a href="#a16c4aecd047015d513feef4ed5b929ba">More...</a><br /></td></tr>
<tr class="separator:a16c4aecd047015d513feef4ed5b929ba"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acad96df68e70d922683e5063057130b2"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#acad96df68e70d922683e5063057130b2">VerifyDigest</a> (const byte *digest, const byte *input, size_t length)</td></tr>
<tr class="memdesc:acad96df68e70d922683e5063057130b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the hash with additional input and verifies the hash of the current message.  <a href="#acad96df68e70d922683e5063057130b2">More...</a><br /></td></tr>
<tr class="separator:acad96df68e70d922683e5063057130b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a590ecda344aa0fb045abf42ec08823b2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a590ecda344aa0fb045abf42ec08823b2">TruncatedFinal</a> (byte *digest, size_t digestSize)=0</td></tr>
<tr class="memdesc:a590ecda344aa0fb045abf42ec08823b2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Computes the hash of the current message.  <a href="#a590ecda344aa0fb045abf42ec08823b2">More...</a><br /></td></tr>
<tr class="separator:a590ecda344aa0fb045abf42ec08823b2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0b6917657eaec935750fd83e28270d76"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a0b6917657eaec935750fd83e28270d76">CalculateTruncatedDigest</a> (byte *digest, size_t digestSize, const byte *input, size_t length)</td></tr>
<tr class="memdesc:a0b6917657eaec935750fd83e28270d76"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the hash with additional input and computes the hash of the current message.  <a href="#a0b6917657eaec935750fd83e28270d76">More...</a><br /></td></tr>
<tr class="separator:a0b6917657eaec935750fd83e28270d76"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a0f6069eadf492d970c3eb8cdf656e742"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a0f6069eadf492d970c3eb8cdf656e742">TruncatedVerify</a> (const byte *digest, size_t digestLength)</td></tr>
<tr class="memdesc:a0f6069eadf492d970c3eb8cdf656e742"><td class="mdescLeft">&#160;</td><td class="mdescRight">Verifies the hash of the current message.  <a href="#a0f6069eadf492d970c3eb8cdf656e742">More...</a><br /></td></tr>
<tr class="separator:a0f6069eadf492d970c3eb8cdf656e742"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7958e99717019e8b9f91672bdfe9e086"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a7958e99717019e8b9f91672bdfe9e086">VerifyTruncatedDigest</a> (const byte *digest, size_t digestLength, const byte *input, size_t length)</td></tr>
<tr class="memdesc:a7958e99717019e8b9f91672bdfe9e086"><td class="mdescLeft">&#160;</td><td class="mdescRight">Updates the hash with additional input and verifies the hash of the current message.  <a href="#a7958e99717019e8b9f91672bdfe9e086">More...</a><br /></td></tr>
<tr class="separator:a7958e99717019e8b9f91672bdfe9e086"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_algorithm"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_algorithm')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_algorithm.html">Algorithm</a></td></tr>
<tr class="memitem:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#a1c77f5117ca2cd881baf26a364cfc606">Algorithm</a> (bool checkSelfTestStatus=true)</td></tr>
<tr class="memdesc:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Interface for all crypto algorithms.  <a href="class_algorithm.html#a1c77f5117ca2cd881baf26a364cfc606">More...</a><br /></td></tr>
<tr class="separator:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="memItemLeft" align="right" valign="top">virtual std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#a4f31510a192d1121856efe8ad0a9b844">AlgorithmName</a> () const</td></tr>
<tr class="memdesc:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="mdescLeft">&#160;</td><td class="mdescRight">Provides the name of this algorithm.  <a href="class_algorithm.html#a4f31510a192d1121856efe8ad0a9b844">More...</a><br /></td></tr>
<tr class="separator:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_class_clonable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_clonable')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="class_clonable.html">Clonable</a></td></tr>
<tr class="memitem:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_clonable.html">Clonable</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#ad0016ba2d505c23aa85aad49e6c19bb7">Clone</a> () const</td></tr>
<tr class="memdesc:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copies this object.  <a href="class_clonable.html#ad0016ba2d505c23aa85aad49e6c19bb7">More...</a><br /></td></tr>
<tr class="separator:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Interface for hash functions and data processing part of MACs. </p>
<p><a class="el" href="class_hash_transformation.html" title="Interface for hash functions and data processing part of MACs. ">HashTransformation</a> objects are stateful. They are created in an initial state, change state as <a class="el" href="class_hash_transformation.html#aafabefaf445b65d3ba0d8e1c0294afe5" title="Updates a hash with additional input. ">Update()</a> is called, and return to the initial state when <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="Computes the hash of the current message. ">Final()</a> is called. This interface allows a large message to be hashed in pieces by calling <a class="el" href="class_hash_transformation.html#aafabefaf445b65d3ba0d8e1c0294afe5" title="Updates a hash with additional input. ">Update()</a> on each piece followed by calling <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="Computes the hash of the current message. ">Final()</a>. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_hash_filter.html" title="Filter wrapper for HashTransformation. ">HashFilter()</a>, <a class="el" href="class_hash_verification_filter.html" title="Filter wrapper for HashTransformation. ">HashVerificationFilter()</a> </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01065">1065</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a id="a39b0a4c4cdc11fda358f9975b5e4137e"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a39b0a4c4cdc11fda358f9975b5e4137e">&#9670;&nbsp;</a></span>Ref()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_hash_transformation.html">HashTransformation</a>&amp; HashTransformation::Ref </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides a reference to this object. </p>
<dl class="section return"><dt>Returns</dt><dd>A reference to this object</dd></dl>
<p>Useful for passing a temporary object to a function that takes a non-const reference </p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01073">1073</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="aafabefaf445b65d3ba0d8e1c0294afe5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aafabefaf445b65d3ba0d8e1c0294afe5">&#9670;&nbsp;</a></span>Update()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void HashTransformation::Update </td>
          <td>(</td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Updates a hash with additional input. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">input</td><td>the additional input as a buffer </td></tr>
    <tr><td class="paramname">length</td><td>the size of the buffer, in bytes </td></tr>
  </table>
  </dd>
</dl>

<p>Implemented in <a class="el" href="class_p_k___message_accumulator_base.html#a4dbe89c39bb43b5ce822e6db13a0dd1f">PK_MessageAccumulatorBase</a>, <a class="el" href="class_b_l_a_k_e2___base.html#aa3716258df73a131ab5f69e55a6f0b48">BLAKE2_Base&lt; W, T_64bit &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#aa3716258df73a131ab5f69e55a6f0b48">BLAKE2_Base&lt; word32, false &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#aa3716258df73a131ab5f69e55a6f0b48">BLAKE2_Base&lt; word64, true &gt;</a>, <a class="el" href="class_sip_hash___base.html#ac51d4218a3f9638725d6c461077030f6">SipHash_Base&lt; C, D, T_128bit &gt;</a>, <a class="el" href="class_poly1305___base.html#a13640c0e9edc4bd6783ef9c7abd694ea">Poly1305_Base&lt; T &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a3202914349a18f79facb605d75f0d10c">IteratedHashBase&lt; word32, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a3202914349a18f79facb605d75f0d10c">IteratedHashBase&lt; T_HashWordType, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a3202914349a18f79facb605d75f0d10c">IteratedHashBase&lt; word32, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a3202914349a18f79facb605d75f0d10c">IteratedHashBase&lt; word64, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a3202914349a18f79facb605d75f0d10c">IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_c_r_c32_c.html#ab5430d47ddf90448a01e4d80644f37e2">CRC32C</a>, <a class="el" href="class_keccak.html#a873cf34ada4ddc8bf0d14452fc233589">Keccak</a>, <a class="el" href="class_authenticated_symmetric_cipher_base.html#a7e63b051cf0ea30d9c69a5355424c0bc">AuthenticatedSymmetricCipherBase</a>, <a class="el" href="class_s_h_a3.html#a8b20793010bc9056ede658e8bc48be2a">SHA3</a>, <a class="el" href="class_truncated_hash_template.html#a3261842338107f4f641e493b0ceb037f">TruncatedHashTemplate&lt; T &gt;</a>, <a class="el" href="class_c_r_c32.html#abd642abba82cf63edb025461bc1af8c0">CRC32</a>, <a class="el" href="class_d_m_a_c___base.html#a2b03546cff8891451c480c18391d83a5">DMAC_Base&lt; T &gt;</a>, <a class="el" href="class_h_m_a_c___base.html#aefb8a1fb43ef8c9390ee89bbb41c83af">HMAC_Base</a>, <a class="el" href="class_weak_1_1_m_d2.html#aed0c8db8407fb1c6c0014d68bedc10fd">Weak::MD2</a>, <a class="el" href="class_c_b_c___m_a_c___base.html#af4b9ad28defd9ff98d86f0d6de2f4cf0">CBC_MAC_Base</a>, <a class="el" href="class_c_m_a_c___base.html#a582cd6d32b41c65d10481ebcd2c1aed4">CMAC_Base</a>, <a class="el" href="class_adler32.html#a84c3d47f039beab76b5f902ff558ac49">Adler32</a>, and <a class="el" href="class_null_hash.html#ac18fc7f331dd116f1a38aea97c0ea100">NullHash</a>.</p>

</div>
</div>
<a id="a9fc0b332ef36900ca6ea5d949e95aba1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9fc0b332ef36900ca6ea5d949e95aba1">&#9670;&nbsp;</a></span>CreateUpdateSpace()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual byte* HashTransformation::CreateUpdateSpace </td>
          <td>(</td>
          <td class="paramtype">size_t &amp;&#160;</td>
          <td class="paramname"><em>size</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Request space which can be written into by the caller. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">size</td><td>the requested size of the buffer</td></tr>
  </table>
  </dd>
</dl>
<p>The purpose of this method is to help avoid extra memory allocations.</p>
<p>size is an <em>IN</em> and <em>OUT</em> parameter and used as a hint. When the call is made, size is the requested size of the buffer. When the call returns, size is the size of the array returned to the caller.</p>
<p>The base class implementation sets size to 0 and returns NULL or nullptr. </p><dl class="section note"><dt>Note</dt><dd>Some objects, like <a class="el" href="class_array_sink.html" title="Copy input to a memory buffer. ">ArraySink</a>, cannot create a space because its fixed. </dd></dl>

<p>Reimplemented in <a class="el" href="class_iterated_hash_base.html#a816fce9e3cab60c1c4ecef77a321be96">IteratedHashBase&lt; word32, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a816fce9e3cab60c1c4ecef77a321be96">IteratedHashBase&lt; T_HashWordType, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a816fce9e3cab60c1c4ecef77a321be96">IteratedHashBase&lt; word32, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a816fce9e3cab60c1c4ecef77a321be96">IteratedHashBase&lt; word64, HashTransformation &gt;</a>, and <a class="el" href="class_iterated_hash_base.html#a816fce9e3cab60c1c4ecef77a321be96">IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;</a>.</p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01088">1088</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="aa0b8c7a110d8968268fd02ec32b9a8e8"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa0b8c7a110d8968268fd02ec32b9a8e8">&#9670;&nbsp;</a></span>Final()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void HashTransformation::Final </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>digest</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Computes the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer to receive the hash</td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="Computes the hash of the current message. ">Final()</a> restarts the hash for a new message. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></code> or <code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == HASH::DIGESTSIZE</code> ensures the output byte buffer is large enough for the digest. </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01095">1095</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="a92752eebac10497211d7a065faba8725"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a92752eebac10497211d7a065faba8725">&#9670;&nbsp;</a></span>Restart()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void HashTransformation::Restart </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Restart the hash. </p>
<p>Discards the current state, and restart for a new message </p>

<p>Reimplemented in <a class="el" href="class_b_l_a_k_e2___base.html#a9cf8782a38383d88f13c872433b711d4">BLAKE2_Base&lt; W, T_64bit &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#a9cf8782a38383d88f13c872433b711d4">BLAKE2_Base&lt; word32, false &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#a9cf8782a38383d88f13c872433b711d4">BLAKE2_Base&lt; word64, true &gt;</a>, <a class="el" href="class_poly1305___base.html#ad62eb9211cf1d982f69812790502b6ec">Poly1305_Base&lt; T &gt;</a>, <a class="el" href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">IteratedHashBase&lt; word32, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">IteratedHashBase&lt; T_HashWordType, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">IteratedHashBase&lt; word32, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">IteratedHashBase&lt; word64, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_keccak.html#a58059090416c1cb266dbf7df7e74e685">Keccak</a>, <a class="el" href="class_authenticated_symmetric_cipher_base.html#a5c6a2964ef0bae2428347f180f76256e">AuthenticatedSymmetricCipherBase</a>, <a class="el" href="class_s_h_a3.html#aa7a2855fbda16730e10977a61a7b23ca">SHA3</a>, <a class="el" href="class_truncated_hash_template.html#a01af99665c10d2980a4e23555067cb5d">TruncatedHashTemplate&lt; T &gt;</a>, and <a class="el" href="class_h_m_a_c___base.html#a7bdeb5438c920045d122017a6b4ab426">HMAC_Base</a>.</p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01100">1100</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="a9f42cc280bac76b884ad12615c0dabb5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9f42cc280bac76b884ad12615c0dabb5">&#9670;&nbsp;</a></span>DigestSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int HashTransformation::DigestSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the digest size of the hash. </p>
<dl class="section return"><dt>Returns</dt><dd>the digest size of the hash. </dd></dl>

<p>Implemented in <a class="el" href="class_p_k___message_accumulator.html#a8dfc4381864e7fc431dcf78ccd9e5e9b">PK_MessageAccumulator</a>, <a class="el" href="class_b_l_a_k_e2___base.html#abdd0c124389fea75bcf5d230a4e76eed">BLAKE2_Base&lt; W, T_64bit &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#abdd0c124389fea75bcf5d230a4e76eed">BLAKE2_Base&lt; word32, false &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#abdd0c124389fea75bcf5d230a4e76eed">BLAKE2_Base&lt; word64, true &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; T_HashWordType, T_Endianness, T_BlockSize, T_StateSize, T_Transform, T_DigestSize, T_StateAligned &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, LittleEndian, 64, 32, RIPEMD256 &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, LittleEndian, 64, 16, MD5 &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, LittleEndian, 64, 16, MD4 &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, LittleEndian, 64, 40, RIPEMD320 &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, BigEndian, 64, 20, SHA1 &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, LittleEndian, 64, 16, RIPEMD128 &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, BigEndian, 64, 32, SHA224, 28, true &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, BigEndian, 64, 32, SM3, 32, true &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, BigEndian, 64, 32, SHA256, 32, true &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word32, LittleEndian, 64, 20, RIPEMD160 &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word64, BigEndian, 128, 64, SHA384, 48, false &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word64, LittleEndian, 64, 24, Tiger &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word64, BigEndian, 64, 64, Whirlpool &gt;</a>, <a class="el" href="class_iterated_hash_with_static_transform.html#a97705945f072fc8f9ba7cfc6193b8f5a">IteratedHashWithStaticTransform&lt; word64, BigEndian, 128, 64, SHA512, 64, false &gt;</a>, <a class="el" href="class_poly1305___base.html#a18a6d6100a2283a045e8865a7e2be129">Poly1305_Base&lt; T &gt;</a>, <a class="el" href="class_sip_hash___base.html#ac97ba8f34aed91ab3eb1a66dad3c0471">SipHash_Base&lt; C, D, T_128bit &gt;</a>, <a class="el" href="class_c_r_c32_c.html#ab243b1945548462e077f6037a4797e17">CRC32C</a>, <a class="el" href="class_g_c_m___base.html#a4d76d96136a5629c4e370265fefef65a">GCM_Base</a>, <a class="el" href="class_keccak.html#a24075bc16b4600d30959841c0d6c5b2a">Keccak</a>, <a class="el" href="class_c_c_m___base.html#a60a0008801969ae61ae269986d96cd6b">CCM_Base</a>, <a class="el" href="class_e_a_x___base.html#a1d873c90d21bb02be1aef82092ccd015">EAX_Base</a>, <a class="el" href="class_weak_1_1_panama_hash.html#aa4bfda6e5abcbea61bbcbce8e4d3f601">Weak::PanamaHash&lt; B &gt;</a>, <a class="el" href="class_truncated_hash_template.html#a0764e3c8769ca03dce548d896451a5ba">TruncatedHashTemplate&lt; T &gt;</a>, <a class="el" href="class_s_h_a3.html#a9cc793a29f4c3f9f7d347df9a6f70fd4">SHA3</a>, <a class="el" href="class_c_r_c32.html#a0a02cab7e98163326ecf7862dbaff7b9">CRC32</a>, <a class="el" href="class_v_m_a_c___base.html#ade8dd31d4ca07f9668afc1ab9eb3ea55">VMAC_Base</a>, <a class="el" href="class_d_m_a_c___base.html#ad472a78f064ead0f9b0d1a39dce1bac9">DMAC_Base&lt; T &gt;</a>, <a class="el" href="class_h_m_a_c___base.html#ac47c7569f590e0a2ff2339d058c3337d">HMAC_Base</a>, <a class="el" href="class_weak_1_1_m_d2.html#a233fa9e893283612e530a129abd949e8">Weak::MD2</a>, <a class="el" href="class_c_b_c___m_a_c___base.html#a0fec943dfb5a946b490347da855cfc89">CBC_MAC_Base</a>, <a class="el" href="class_c_m_a_c___base.html#af8008ae4d6541f2a8aca5078d869f8bb">CMAC_Base</a>, <a class="el" href="class_t_t_m_a_c___base.html#a78f01cddf3a38e595c2868c2cacd23ac">TTMAC_Base</a>, <a class="el" href="class_adler32.html#a56ef4334be183187b2f2a2cef435f5e8">Adler32</a>, and <a class="el" href="class_null_hash.html#a5ed419d00be90042dcb7225dbf5534e8">NullHash</a>.</p>

</div>
</div>
<a id="af68588a8333e11066a0da91506cebbb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af68588a8333e11066a0da91506cebbb4">&#9670;&nbsp;</a></span>TagSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int HashTransformation::TagSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the tag size of the hash. </p>
<dl class="section return"><dt>Returns</dt><dd>the tag size of the hash.</dd></dl>
<p>Same as <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>. </p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01110">1110</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="a09c66b86bbe3c13ea9e8d74775696d42"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a09c66b86bbe3c13ea9e8d74775696d42">&#9670;&nbsp;</a></span>BlockSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int HashTransformation::BlockSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the block size of the compression function. </p>
<dl class="section return"><dt>Returns</dt><dd>the block size of the compression function, in bytes</dd></dl>
<p><a class="el" href="class_hash_transformation.html#a09c66b86bbe3c13ea9e8d74775696d42" title="Provides the block size of the compression function. ">BlockSize()</a> will return 0 if the hash is not block based. For example, <a class="el" href="class_s_h_a3.html" title="SHA3 message digest base class. ">SHA3</a> is a recursive hash (not an iterative hash), and it does not have a block size. </p>

<p>Reimplemented in <a class="el" href="class_iterated_hash.html#a76cb174a108aa1178e444681c0d8c2ff">IteratedHash&lt; word64, LittleEndian, T_BlockSize &gt;</a>, <a class="el" href="class_iterated_hash.html#a76cb174a108aa1178e444681c0d8c2ff">IteratedHash&lt; T_HashWordType, T_Endianness, T_BlockSize &gt;</a>, <a class="el" href="class_iterated_hash.html#a76cb174a108aa1178e444681c0d8c2ff">IteratedHash&lt; word32, LittleEndian, T_BlockSize &gt;</a>, <a class="el" href="class_iterated_hash.html#a76cb174a108aa1178e444681c0d8c2ff">IteratedHash&lt; word32, LittleEndian, 64, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_iterated_hash.html#a76cb174a108aa1178e444681c0d8c2ff">IteratedHash&lt; word32, BigEndian, T_BlockSize &gt;</a>, <a class="el" href="class_iterated_hash.html#a76cb174a108aa1178e444681c0d8c2ff">IteratedHash&lt; word32, NativeByteOrder, 32 &gt;</a>, <a class="el" href="class_iterated_hash.html#a76cb174a108aa1178e444681c0d8c2ff">IteratedHash&lt; word64, BigEndian, T_BlockSize &gt;</a>, <a class="el" href="class_keccak___final.html#a5655e022640c9be684a85de343ac8f33">Keccak_Final&lt; T_DigestSize &gt;</a>, <a class="el" href="class_poly1305___base.html#ac7355133d6eef88697c931c5d46e0016">Poly1305_Base&lt; T &gt;</a>, <a class="el" href="class_s_h_a3___final.html#ad02f4a6d822f983034c20446c8ee6793">SHA3_Final&lt; T_DigestSize &gt;</a>, <a class="el" href="class_s_h_a3___final.html#ad02f4a6d822f983034c20446c8ee6793">SHA3_Final&lt; 64 &gt;</a>, <a class="el" href="class_s_h_a3___final.html#ad02f4a6d822f983034c20446c8ee6793">SHA3_Final&lt; 32 &gt;</a>, <a class="el" href="class_s_h_a3___final.html#ad02f4a6d822f983034c20446c8ee6793">SHA3_Final&lt; 48 &gt;</a>, <a class="el" href="class_s_h_a3___final.html#ad02f4a6d822f983034c20446c8ee6793">SHA3_Final&lt; 28 &gt;</a>, <a class="el" href="class_v_m_a_c___base.html#a3787b7950bd0eefb4f4accafd969430a">VMAC_Base</a>, and <a class="el" href="class_weak_1_1_m_d2.html#a3c34b7ac8a340b0fa189ca5d1c740e6b">Weak::MD2</a>.</p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01116">1116</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="aee97908d965930ee454f7a88b0ff0f71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aee97908d965930ee454f7a88b0ff0f71">&#9670;&nbsp;</a></span>OptimalBlockSize()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual unsigned int HashTransformation::OptimalBlockSize </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides the input block size most efficient for this hash. </p>
<dl class="section return"><dt>Returns</dt><dd>The input block size that is most efficient for the cipher</dd></dl>
<p>The base class implementation returns MandatoryBlockSize().</p>
<p>Optimal input length is <code>n * <a class="el" href="class_hash_transformation.html#aee97908d965930ee454f7a88b0ff0f71" title="Provides the input block size most efficient for this hash. ">OptimalBlockSize()</a> - GetOptimalBlockSizeUsed()</code> for any <code>n &gt; 0</code>. </p>

<p>Reimplemented in <a class="el" href="class_sip_hash___base.html#ac4e905e41adc5de41680b6ae5bb4de59">SipHash_Base&lt; C, D, T_128bit &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a4c3fa4d29ad29d2b8add76ea62117523">IteratedHashBase&lt; word32, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a4c3fa4d29ad29d2b8add76ea62117523">IteratedHashBase&lt; T_HashWordType, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a4c3fa4d29ad29d2b8add76ea62117523">IteratedHashBase&lt; word32, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a4c3fa4d29ad29d2b8add76ea62117523">IteratedHashBase&lt; word64, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a4c3fa4d29ad29d2b8add76ea62117523">IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_h_m_a_c___base.html#a3f8a783fe1da496cf33bf35d6376100b">HMAC_Base</a>, and <a class="el" href="class_c_m_a_c___base.html#a9af8a01e7e07ef698b0f2d45381e85f9">CMAC_Base</a>.</p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01123">1123</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="a927a808007503246a745a564ad451da5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a927a808007503246a745a564ad451da5">&#9670;&nbsp;</a></span>OptimalDataAlignment()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">unsigned int HashTransformation::OptimalDataAlignment </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const</td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Provides input and output data alignment for optimal performance. </p>
<dl class="section return"><dt>Returns</dt><dd>the input data alignment that provides optimal performance </dd></dl>
<dl class="section see"><dt>See also</dt><dd>GetAlignment() and <a class="el" href="class_hash_transformation.html#aee97908d965930ee454f7a88b0ff0f71" title="Provides the input block size most efficient for this hash. ">OptimalBlockSize()</a> </dd></dl>

<p>Reimplemented in <a class="el" href="class_b_l_a_k_e2___base.html#a7aa9c2bbf51b6a7093bbcf122d7a1654">BLAKE2_Base&lt; W, T_64bit &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#a7aa9c2bbf51b6a7093bbcf122d7a1654">BLAKE2_Base&lt; word32, false &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#a7aa9c2bbf51b6a7093bbcf122d7a1654">BLAKE2_Base&lt; word64, true &gt;</a>, <a class="el" href="class_sip_hash___base.html#afabeb04484b01c81a02efa314f98cc45">SipHash_Base&lt; C, D, T_128bit &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a167fbaf6c7e6f9f1744d7204cf118c65">IteratedHashBase&lt; word32, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a167fbaf6c7e6f9f1744d7204cf118c65">IteratedHashBase&lt; T_HashWordType, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a167fbaf6c7e6f9f1744d7204cf118c65">IteratedHashBase&lt; word32, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a167fbaf6c7e6f9f1744d7204cf118c65">IteratedHashBase&lt; word64, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a167fbaf6c7e6f9f1744d7204cf118c65">IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_keccak.html#abf8c68ac5978cb79fe6454535f00d3ea">Keccak</a>, <a class="el" href="class_g_c_m___base.html#a03138f0888c33eeca40a5ddd9a19898f">GCM_Base</a>, <a class="el" href="class_s_h_a3.html#a4f8eaef59e2dfe6745865a24c61b63f1">SHA3</a>, <a class="el" href="class_c_c_m___base.html#a65b06bba7c504edb6fec3cef38e577c8">CCM_Base</a>, <a class="el" href="class_v_m_a_c___base.html#a3cf0e0e3edb2e9a5bd255a472bf9154f">VMAC_Base</a>, <a class="el" href="class_e_a_x___base.html#a6485bcdaa74651a8d162c9f7d5f3caa5">EAX_Base</a>, and <a class="el" href="class_c_m_a_c___base.html#a37fab7ee3b6d92260d0edef94d034947">CMAC_Base</a>.</p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00206">206</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

</div>
</div>
<a id="af8124c4fca23b74bbdc43660bdae692c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af8124c4fca23b74bbdc43660bdae692c">&#9670;&nbsp;</a></span>CalculateDigest()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void HashTransformation::CalculateDigest </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>digest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Updates the hash with additional input and computes the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer to receive the hash </td></tr>
    <tr><td class="paramname">input</td><td>the additional input as a buffer </td></tr>
    <tr><td class="paramname">length</td><td>the size of the buffer, in bytes</td></tr>
  </table>
  </dd>
</dl>
<p>Use this if your input is in one piece and you don't want to call <a class="el" href="class_hash_transformation.html#aafabefaf445b65d3ba0d8e1c0294afe5" title="Updates a hash with additional input. ">Update()</a> and <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="Computes the hash of the current message. ">Final()</a> separately</p>
<p><a class="el" href="class_hash_transformation.html#af8124c4fca23b74bbdc43660bdae692c" title="Updates the hash with additional input and computes the hash of the current message. ">CalculateDigest()</a> restarts the hash for the next message. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></code> or <code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == HASH::DIGESTSIZE</code> ensures the output byte buffer is large enough for the digest. </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01139">1139</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="a16c4aecd047015d513feef4ed5b929ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a16c4aecd047015d513feef4ed5b929ba">&#9670;&nbsp;</a></span>Verify()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool HashTransformation::Verify </td>
          <td>(</td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>digest</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Verifies the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer of an <em>existing</em> hash </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the existing hash matches the computed hash, <code>false</code> otherwise </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">ThrowIfInvalidTruncatedSize()</td><td>if the existing hash's size exceeds <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba" title="Verifies the hash of the current message. ">Verify()</a> performs a bitwise compare on the buffers using <a class="el" href="misc_8h.html#a8e14b85d64aa63e5ba80471716837c74" title="Performs a near constant-time comparison of two equally sized buffers. ">VerifyBufsEqual()</a>, which is a constant time comparison function. digestLength cannot exceed <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>.</p>
<p><a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba" title="Verifies the hash of the current message. ">Verify()</a> restarts the hash for the next message. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></code> or <code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == HASH::DIGESTSIZE</code> ensures the output byte buffer is large enough for the digest. </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01151">1151</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="acad96df68e70d922683e5063057130b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acad96df68e70d922683e5063057130b2">&#9670;&nbsp;</a></span>VerifyDigest()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool HashTransformation::VerifyDigest </td>
          <td>(</td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>digest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Updates the hash with additional input and verifies the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer of an <em>existing</em> hash </td></tr>
    <tr><td class="paramname">input</td><td>the additional input as a buffer </td></tr>
    <tr><td class="paramname">length</td><td>the size of the buffer, in bytes </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the existing hash matches the computed hash, <code>false</code> otherwise </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">ThrowIfInvalidTruncatedSize()</td><td>if the existing hash's size exceeds <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></td></tr>
  </table>
  </dd>
</dl>
<p>Use this if your input is in one piece and you don't want to call <a class="el" href="class_hash_transformation.html#aafabefaf445b65d3ba0d8e1c0294afe5" title="Updates a hash with additional input. ">Update()</a> and <a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba" title="Verifies the hash of the current message. ">Verify()</a> separately</p>
<p><a class="el" href="class_hash_transformation.html#acad96df68e70d922683e5063057130b2" title="Updates the hash with additional input and verifies the hash of the current message. ">VerifyDigest()</a> performs a bitwise compare on the buffers using <a class="el" href="misc_8h.html#a8e14b85d64aa63e5ba80471716837c74" title="Performs a near constant-time comparison of two equally sized buffers. ">VerifyBufsEqual()</a>, which is a constant time comparison function. digestLength cannot exceed <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>.</p>
<p><a class="el" href="class_hash_transformation.html#acad96df68e70d922683e5063057130b2" title="Updates the hash with additional input and verifies the hash of the current message. ">VerifyDigest()</a> restarts the hash for the next message. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></code> or <code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == HASH::DIGESTSIZE</code> ensures the output byte buffer is large enough for the digest. </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01167">1167</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="a590ecda344aa0fb045abf42ec08823b2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a590ecda344aa0fb045abf42ec08823b2">&#9670;&nbsp;</a></span>TruncatedFinal()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void HashTransformation::TruncatedFinal </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>digest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>digestSize</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Computes the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer to receive the hash </td></tr>
    <tr><td class="paramname">digestSize</td><td>the size of the truncated digest, in bytes</td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="class_hash_transformation.html#a590ecda344aa0fb045abf42ec08823b2" title="Computes the hash of the current message. ">TruncatedFinal()</a> call <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="Computes the hash of the current message. ">Final()</a> and then copies digestSize bytes to digest. The hash is restarted the hash for the next message. </p>

<p>Implemented in <a class="el" href="class_p_k___message_accumulator.html#a7b32ac9635d646003f7a258d46a65015">PK_MessageAccumulator</a>, <a class="el" href="class_b_l_a_k_e2___base.html#a7808dc4d35bbfcfef52ccf214b3dbb47">BLAKE2_Base&lt; W, T_64bit &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#a7808dc4d35bbfcfef52ccf214b3dbb47">BLAKE2_Base&lt; word32, false &gt;</a>, <a class="el" href="class_b_l_a_k_e2___base.html#a7808dc4d35bbfcfef52ccf214b3dbb47">BLAKE2_Base&lt; word64, true &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a6a0669cd1b4a8d363b60718a0f8b88da">IteratedHashBase&lt; word32, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a6a0669cd1b4a8d363b60718a0f8b88da">IteratedHashBase&lt; T_HashWordType, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a6a0669cd1b4a8d363b60718a0f8b88da">IteratedHashBase&lt; word32, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a6a0669cd1b4a8d363b60718a0f8b88da">IteratedHashBase&lt; word64, HashTransformation &gt;</a>, <a class="el" href="class_iterated_hash_base.html#a6a0669cd1b4a8d363b60718a0f8b88da">IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;</a>, <a class="el" href="class_sip_hash___base.html#a28a0acaffcc0aeeb7fe78731d54102dd">SipHash_Base&lt; C, D, T_128bit &gt;</a>, <a class="el" href="class_poly1305___base.html#a350554631a23d196217b483843a4e6b0">Poly1305_Base&lt; T &gt;</a>, <a class="el" href="class_keccak.html#a0b084325a2333fe1019b988113828f57">Keccak</a>, <a class="el" href="class_c_r_c32_c.html#a077d0633d5bef807dd33344a43c7c4ee">CRC32C</a>, <a class="el" href="class_authenticated_symmetric_cipher_base.html#acd833963b6abcfabc9ada275fbea8625">AuthenticatedSymmetricCipherBase</a>, <a class="el" href="class_weak_1_1_panama_hash.html#af4d1ab27a1cebb1857ba24901b30b3b6">Weak::PanamaHash&lt; B &gt;</a>, <a class="el" href="class_s_h_a3.html#a2f74f5713e1e62456d175eeeb353ce94">SHA3</a>, <a class="el" href="class_truncated_hash_template.html#a8d35821fad737aaa41c6ad0a01e56510">TruncatedHashTemplate&lt; T &gt;</a>, <a class="el" href="class_v_m_a_c___base.html#a3affbeda9ead9b9b1e93064acc44c858">VMAC_Base</a>, <a class="el" href="class_c_r_c32.html#ab6f1523fe38d6f1b690888aab1675982">CRC32</a>, <a class="el" href="class_tiger.html#affeb68f52e6c884d64e75027e89ff43d">Tiger</a>, <a class="el" href="class_d_m_a_c___base.html#a32251a90087b43d30ea5c4698cd7ecf9">DMAC_Base&lt; T &gt;</a>, <a class="el" href="class_whirlpool.html#ad4c14416343a26485a6fdaf02eeb2c4f">Whirlpool</a>, <a class="el" href="class_h_m_a_c___base.html#a5454c1446981ddee322b0521c6ebd375">HMAC_Base</a>, <a class="el" href="class_weak_1_1_m_d2.html#a52532c3a06bd29559db192738fca5944">Weak::MD2</a>, <a class="el" href="class_c_b_c___m_a_c___base.html#a50c5a8fc6a2926485295bbe72bcfe4d8">CBC_MAC_Base</a>, <a class="el" href="class_c_m_a_c___base.html#a636b8a77c098bb08955ec8b4e66448a7">CMAC_Base</a>, <a class="el" href="class_t_t_m_a_c___base.html#a52333eb53e716948e9377cdfea28addd">TTMAC_Base</a>, <a class="el" href="class_adler32.html#ae6c17afdf6aeb8b58d771932551b07fa">Adler32</a>, and <a class="el" href="class_null_hash.html#aba7565b459a86274e0958230e72ddee2">NullHash</a>.</p>

</div>
</div>
<a id="a0b6917657eaec935750fd83e28270d76"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0b6917657eaec935750fd83e28270d76">&#9670;&nbsp;</a></span>CalculateTruncatedDigest()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual void HashTransformation::CalculateTruncatedDigest </td>
          <td>(</td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>digest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>digestSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Updates the hash with additional input and computes the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer to receive the hash </td></tr>
    <tr><td class="paramname">digestSize</td><td>the length of the truncated hash, in bytes </td></tr>
    <tr><td class="paramname">input</td><td>the additional input as a buffer </td></tr>
    <tr><td class="paramname">length</td><td>the size of the buffer, in bytes</td></tr>
  </table>
  </dd>
</dl>
<p>Use this if your input is in one piece and you don't want to call <a class="el" href="class_hash_transformation.html#aafabefaf445b65d3ba0d8e1c0294afe5" title="Updates a hash with additional input. ">Update()</a> and <a class="el" href="class_hash_transformation.html#af8124c4fca23b74bbdc43660bdae692c" title="Updates the hash with additional input and computes the hash of the current message. ">CalculateDigest()</a> separately.</p>
<p><a class="el" href="class_hash_transformation.html#a0b6917657eaec935750fd83e28270d76" title="Updates the hash with additional input and computes the hash of the current message. ">CalculateTruncatedDigest()</a> restarts the hash for the next message. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></code> or <code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == HASH::DIGESTSIZE</code> ensures the output byte buffer is large enough for the digest. </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01187">1187</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a id="a0f6069eadf492d970c3eb8cdf656e742"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a0f6069eadf492d970c3eb8cdf656e742">&#9670;&nbsp;</a></span>TruncatedVerify()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">bool HashTransformation::TruncatedVerify </td>
          <td>(</td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>digest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>digestLength</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Verifies the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer of an <em>existing</em> hash </td></tr>
    <tr><td class="paramname">digestLength</td><td>the size of the truncated hash, in bytes </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the existing hash matches the computed hash, <code>false</code> otherwise </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">ThrowIfInvalidTruncatedSize()</td><td>if digestLength exceeds <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></td></tr>
  </table>
  </dd>
</dl>
<p><a class="el" href="class_hash_transformation.html#a0f6069eadf492d970c3eb8cdf656e742" title="Verifies the hash of the current message. ">TruncatedVerify()</a> is a truncated version of <a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba" title="Verifies the hash of the current message. ">Verify()</a>. It can operate on a buffer smaller than <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>. However, digestLength cannot exceed <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>.</p>
<p><a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba" title="Verifies the hash of the current message. ">Verify()</a> performs a bitwise compare on the buffers using <a class="el" href="misc_8h.html#a8e14b85d64aa63e5ba80471716837c74" title="Performs a near constant-time comparison of two equally sized buffers. ">VerifyBufsEqual()</a>, which is a constant time comparison function. digestLength cannot exceed <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>.</p>
<p><a class="el" href="class_hash_transformation.html#a0f6069eadf492d970c3eb8cdf656e742" title="Verifies the hash of the current message. ">TruncatedVerify()</a> restarts the hash for the next message. </p>

<p>Reimplemented in <a class="el" href="class_truncated_hash_template.html#aeeae8ba7cae1d365551f156a5ff87c6d">TruncatedHashTemplate&lt; T &gt;</a>, and <a class="el" href="class_null_hash.html#ab18ad3278ce23ea6b1d4f6394d31ae19">NullHash</a>.</p>

<p class="definition">Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00412">412</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

</div>
</div>
<a id="a7958e99717019e8b9f91672bdfe9e086"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a7958e99717019e8b9f91672bdfe9e086">&#9670;&nbsp;</a></span>VerifyTruncatedDigest()</h2>

<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">virtual bool HashTransformation::VerifyTruncatedDigest </td>
          <td>(</td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>digest</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>digestLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>input</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">

<p>Updates the hash with additional input and verifies the hash of the current message. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">digest</td><td>a pointer to the buffer of an <em>existing</em> hash </td></tr>
    <tr><td class="paramname">digestLength</td><td>the size of the truncated hash, in bytes </td></tr>
    <tr><td class="paramname">input</td><td>the additional input as a buffer </td></tr>
    <tr><td class="paramname">length</td><td>the size of the buffer, in bytes </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd><code>true</code> if the existing hash matches the computed hash, <code>false</code> otherwise </dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">ThrowIfInvalidTruncatedSize()</td><td>if digestLength exceeds <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></td></tr>
  </table>
  </dd>
</dl>
<p>Use this if your input is in one piece and you don't want to call <a class="el" href="class_hash_transformation.html#aafabefaf445b65d3ba0d8e1c0294afe5" title="Updates a hash with additional input. ">Update()</a> and <a class="el" href="class_hash_transformation.html#a0f6069eadf492d970c3eb8cdf656e742" title="Verifies the hash of the current message. ">TruncatedVerify()</a> separately.</p>
<p><a class="el" href="class_hash_transformation.html#a7958e99717019e8b9f91672bdfe9e086" title="Updates the hash with additional input and verifies the hash of the current message. ">VerifyTruncatedDigest()</a> is a truncated version of <a class="el" href="class_hash_transformation.html#acad96df68e70d922683e5063057130b2" title="Updates the hash with additional input and verifies the hash of the current message. ">VerifyDigest()</a>. It can operate on a buffer smaller than <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>. However, digestLength cannot exceed <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a>.</p>
<p><a class="el" href="class_hash_transformation.html#a7958e99717019e8b9f91672bdfe9e086" title="Updates the hash with additional input and verifies the hash of the current message. ">VerifyTruncatedDigest()</a> restarts the hash for the next message. </p><dl class="section pre"><dt>Precondition</dt><dd><code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="Provides the digest size of the hash. ">DigestSize()</a></code> or <code><a class="el" href="misc_8h.html#a2d7e4464ea73d6393ebe78f952253426" title="Counts elements in an array. ">COUNTOF(digest)</a> == HASH::DIGESTSIZE</code> ensures the output byte buffer is large enough for the digest. </dd></dl>

<p class="definition">Definition at line <a class="el" href="cryptlib_8h_source.html#l01216">1216</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="cryptlib_8h_source.html">cryptlib.h</a></li>
<li><a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sun Sep 16 2018 07:58:36 for Crypto++ by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.14
</small></address>
</body>
</html>