Sophie

Sophie

distrib > Fedora > 14 > x86_64 > by-pkgid > 23e07fd43e778a61ff4b78161a3e2389 > files > 1552

cryptopp-doc-5.6.1-5.fc14.noarch.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"/>
<title>Crypto++: VMAC_Base Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">Crypto++</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">VMAC_Base Class Reference</div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="VMAC_Base" --><!-- doxytag: inherits="IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;" -->
<p> 
 <a href="class_v_m_a_c___base.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="vmac_8h_source.html">vmac.h</a>&gt;</code></p>
<div class="dynheader">
Inheritance diagram for VMAC_Base:</div>
<div class="dyncontent">
 <div class="center">
  <img src="class_v_m_a_c___base.png" usemap="#VMAC_Base_map" alt=""/>
  <map id="VMAC_Base_map" name="VMAC_Base_map">
<area href="class_iterated_hash_base.html" alt="IteratedHashBase&lt; word64, MessageAuthenticationCode &gt;" shape="rect" coords="431,224,1284,248"/>
<area href="class_message_authentication_code.html" title="interface for message authentication codes" alt="MessageAuthenticationCode" shape="rect" coords="431,168,1284,192"/>
<area href="class_simple_keying_interface.html" title="keying interface for crypto algorithms that take byte strings as keys" alt="SimpleKeyingInterface" shape="rect" coords="0,112,853,136"/>
<area href="class_hash_transformation.html" title="interface for hash functions and data processing part of MACs" alt="HashTransformation" shape="rect" coords="863,112,1716,136"/>
<area href="class_algorithm.html" title="interface for all crypto algorithms" alt="Algorithm" shape="rect" coords="863,56,1716,80"/>
<area href="class_clonable.html" title="interface for cloning objects, this is not implemented by most classes yet" alt="Clonable" shape="rect" coords="863,0,1716,24"/>
<area href="class_simple_keying_interface_impl.html" alt="SimpleKeyingInterfaceImpl&lt; VMAC_Base, SameKeyLengthAs&lt; T_BlockCipher, SimpleKeyingInterface::UNIQUE_IV, T_BlockCipher::BLOCKSIZE &gt; &gt;" shape="rect" coords="431,336,1284,360"/>
<area href="class_v_m_a_c.html" title="VMAC" alt="VMAC&lt; T_BlockCipher, T_DigestBitSize &gt;" shape="rect" coords="431,392,1284,416"/>
</map>
 </div></div>

<p><a href="class_v_m_a_c___base-members.html">List of all members.</a></p>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4316d6e7e38a407d5a71f95de2b112e1"></a><!-- doxytag: member="VMAC_Base::HashWordType" ref="a4316d6e7e38a407d5a71f95de2b112e1" args="" -->
typedef word64&#160;</td><td class="memItemRight" valign="bottom"><b>HashWordType</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><b>IV_Requirement</b> { <br/>
&#160;&#160;<b>UNIQUE_IV</b> =  0, 
<b>RANDOM_IV</b>, 
<b>UNPREDICTABLE_RANDOM_IV</b>, 
<b>INTERNALLY_GENERATED_IV</b>, 
<br/>
&#160;&#160;<b>NOT_RESYNCHRONIZABLE</b>
<br/>
 }</td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae5f95bf7adf621616472f842d085a53b"></a><!-- doxytag: member="VMAC_Base::AlgorithmName" ref="ae5f95bf7adf621616472f842d085a53b" args="() const " -->
std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_v_m_a_c___base.html#ae5f95bf7adf621616472f842d085a53b">AlgorithmName</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae347a3039e922c51e9dcfd9379e05e6a"></a><!-- doxytag: member="VMAC_Base::IVSize" ref="ae347a3039e922c51e9dcfd9379e05e6a" args="() const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><b>IVSize</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5e08e1936eb6ac04474903f1f6e923d"></a><!-- doxytag: member="VMAC_Base::MinIVLength" ref="ad5e08e1936eb6ac04474903f1f6e923d" args="() const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_v_m_a_c___base.html#ad5e08e1936eb6ac04474903f1f6e923d">MinIVLength</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns minimal length of IVs accepted by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a986931f6b6e892e353dec13fb9f8542d"></a><!-- doxytag: member="VMAC_Base::Resynchronize" ref="a986931f6b6e892e353dec13fb9f8542d" args="(const byte *nonce, int length=&#45;1)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_v_m_a_c___base.html#a986931f6b6e892e353dec13fb9f8542d">Resynchronize</a> (const byte *nonce, int length=-1)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">resynchronize with an IV. ivLength=-1 means use IVSize() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_v_m_a_c___base.html#abd5685ab3eaf6ec272f7e062c3194c6c">GetNextIV</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *IV)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">get a secure IV for the next message  <a href="#abd5685ab3eaf6ec272f7e062c3194c6c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae18ab64d0a5f84768ac3d9d4fba57a12"></a><!-- doxytag: member="VMAC_Base::DigestSize" ref="ae18ab64d0a5f84768ac3d9d4fba57a12" args="() const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_v_m_a_c___base.html#ae18ab64d0a5f84768ac3d9d4fba57a12">DigestSize</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">size of the hash/digest/MAC returned by <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="compute hash for current message, then restart for a new message">Final()</a> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaf0954326492fcc6059ac4f1903f5f09"></a><!-- doxytag: member="VMAC_Base::UncheckedSetKey" ref="aaf0954326492fcc6059ac4f1903f5f09" args="(const byte *userKey, unsigned int keylength, const NameValuePairs &amp;params)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>UncheckedSetKey</b> (const byte *userKey, unsigned int keylength, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3affbeda9ead9b9b1e93064acc44c858"></a><!-- doxytag: member="VMAC_Base::TruncatedFinal" ref="a3affbeda9ead9b9b1e93064acc44c858" args="(byte *mac, size_t size)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_v_m_a_c___base.html#a3affbeda9ead9b9b1e93064acc44c858">TruncatedFinal</a> (byte *mac, size_t size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="compute hash for current message, then restart for a new message">Final()</a> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4c0a250cf0eeccb351ac20f3adfec0c8"></a><!-- doxytag: member="VMAC_Base::BlockSize" ref="a4c0a250cf0eeccb351ac20f3adfec0c8" args="() const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_v_m_a_c___base.html#a4c0a250cf0eeccb351ac20f3adfec0c8">BlockSize</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">block size of underlying compression function, or 0 if not block based <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a13a97526344eccb00522c0e2a6a81305"></a><!-- doxytag: member="VMAC_Base::GetByteOrder" ref="a13a97526344eccb00522c0e2a6a81305" args="() const " -->
ByteOrder&#160;</td><td class="memItemRight" valign="bottom"><b>GetByteOrder</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8ba3e6b25afbdf84f177b965229c0d9"></a><!-- doxytag: member="VMAC_Base::OptimalBlockSize" ref="ad8ba3e6b25afbdf84f177b965229c0d9" args="() const" -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_iterated_hash_base.html#ad8ba3e6b25afbdf84f177b965229c0d9">OptimalBlockSize</a> () const</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">input to Update() should have length a multiple of this for optimal speed <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9ee30253981d13564bf0d2ffa33dfc25"></a><!-- doxytag: member="VMAC_Base::OptimalDataAlignment" ref="a9ee30253981d13564bf0d2ffa33dfc25" args="() const" -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_iterated_hash_base.html#a9ee30253981d13564bf0d2ffa33dfc25">OptimalDataAlignment</a> () const</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns how input should be aligned for optimal performance <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3202914349a18f79facb605d75f0d10c"></a><!-- doxytag: member="VMAC_Base::Update" ref="a3202914349a18f79facb605d75f0d10c" args="(const byte *input, size_t length)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_iterated_hash_base.html#a3202914349a18f79facb605d75f0d10c">Update</a> (const byte *input, size_t length)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">process more input <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a816fce9e3cab60c1c4ecef77a321be96"></a><!-- doxytag: member="VMAC_Base::CreateUpdateSpace" ref="a816fce9e3cab60c1c4ecef77a321be96" args="(size_t &amp;size)" -->
byte *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_iterated_hash_base.html#a816fce9e3cab60c1c4ecef77a321be96">CreateUpdateSpace</a> (size_t &amp;size)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">request space to write input into <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad53da712634ea213ad047b2a68b0fe70"></a><!-- doxytag: member="VMAC_Base::Restart" ref="ad53da712634ea213ad047b2a68b0fe70" args="()" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_iterated_hash_base.html#ad53da712634ea213ad047b2a68b0fe70">Restart</a> ()</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">discard the current state, and restart with a new message <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2631c49dac4d5ec055c5dc88c6243578"></a><!-- doxytag: member="VMAC_Base::MinKeyLength" ref="a2631c49dac4d5ec055c5dc88c6243578" args="() const =0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a2631c49dac4d5ec055c5dc88c6243578">MinKeyLength</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns smallest valid key length in bytes */ <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae02fcb4e1f6141e728ae37612cde6fff"></a><!-- doxytag: member="VMAC_Base::MaxKeyLength" ref="ae02fcb4e1f6141e728ae37612cde6fff" args="() const =0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ae02fcb4e1f6141e728ae37612cde6fff">MaxKeyLength</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns largest valid key length in bytes */ <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae90dfc0bdfd13e214fd46e357ef64e98"></a><!-- doxytag: member="VMAC_Base::DefaultKeyLength" ref="ae90dfc0bdfd13e214fd46e357ef64e98" args="() const =0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ae90dfc0bdfd13e214fd46e357ef64e98">DefaultKeyLength</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns default (recommended) key length in bytes */ <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8810586aaa034729b6db24e593a0ade"></a><!-- doxytag: member="VMAC_Base::GetValidKeyLength" ref="ad8810586aaa034729b6db24e593a0ade" args="(size_t n) const =0" -->
virtual size_t&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ad8810586aaa034729b6db24e593a0ade">GetValidKeyLength</a> (size_t n) const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the smallest valid key length in bytes that is &gt;= min(n, GetMaxKeyLength()) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a024f23c0a094ee46094f69ffefb91d17"></a><!-- doxytag: member="VMAC_Base::IsValidKeyLength" ref="a024f23c0a094ee46094f69ffefb91d17" args="(size_t n) const " -->
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a024f23c0a094ee46094f69ffefb91d17">IsValidKeyLength</a> (size_t n) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns whether n is a valid key length <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7">SetKey</a> (const byte *key, size_t length, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params=<a class="el" href="cryptlib_8h.html#aa9048ef24353685fd0dcc4180c6884c2">g_nullNameValuePairs</a>)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">set or reset the key of this object  <a href="#adf3c29b3ef3af74788a58c7c49887fd7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0401f9c67930805180964bc02ae0ac1c"></a><!-- doxytag: member="VMAC_Base::SetKeyWithRounds" ref="a0401f9c67930805180964bc02ae0ac1c" args="(const byte *key, size_t length, int rounds)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a0401f9c67930805180964bc02ae0ac1c">SetKeyWithRounds</a> (const byte *key, size_t length, int rounds)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> object that just specifies "Rounds" <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b4e358c514fd743840967bc595a34c2"></a><!-- doxytag: member="VMAC_Base::SetKeyWithIV" ref="a5b4e358c514fd743840967bc595a34c2" args="(const byte *key, size_t length, const byte *iv, size_t ivLength)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a5b4e358c514fd743840967bc595a34c2">SetKeyWithIV</a> (const byte *key, size_t length, const byte *iv, size_t ivLength)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> object that just specifies "IV" <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25e27eaeae2e909741c07de93caef49"></a><!-- doxytag: member="VMAC_Base::SetKeyWithIV" ref="ac25e27eaeae2e909741c07de93caef49" args="(const byte *key, size_t length, const byte *iv)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ac25e27eaeae2e909741c07de93caef49">SetKeyWithIV</a> (const byte *key, size_t length, const byte *iv)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> object that just specifies "IV" <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a867b535e5c4a11704d0645272e8b03f9"></a><!-- doxytag: member="VMAC_Base::IVRequirement" ref="a867b535e5c4a11704d0645272e8b03f9" args="() const =0" -->
virtual IV_Requirement&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a867b535e5c4a11704d0645272e8b03f9">IVRequirement</a> () const =0</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns the minimal requirement for secure IVs <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ad263f4a96fa8b4e7d01fea8ccaae9d3b">IsResynchronizable</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns whether this object can be resynchronized (i.e. supports initialization vectors)  <a href="#ad263f4a96fa8b4e7d01fea8ccaae9d3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26680fc02b91534a522b5754cdcdcb46"></a><!-- doxytag: member="VMAC_Base::CanUseRandomIVs" ref="a26680fc02b91534a522b5754cdcdcb46" args="() const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a26680fc02b91534a522b5754cdcdcb46">CanUseRandomIVs</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns whether this object can use random IVs (in addition to ones returned by GetNextIV) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a307463503d7a4400ffafe03a683e1dbb"></a><!-- doxytag: member="VMAC_Base::CanUsePredictableIVs" ref="a307463503d7a4400ffafe03a683e1dbb" args="() const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a307463503d7a4400ffafe03a683e1dbb">CanUsePredictableIVs</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns whether this object can use random but possibly predictable IVs (in addition to ones returned by GetNextIV) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c47590ef06335b34bdaf272fd37ef4d"></a><!-- doxytag: member="VMAC_Base::CanUseStructuredIVs" ref="a9c47590ef06335b34bdaf272fd37ef4d" args="() const " -->
bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a9c47590ef06335b34bdaf272fd37ef4d">CanUseStructuredIVs</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns whether this object can use structured IVs, for example a counter (in addition to ones returned by GetNextIV) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b2090b3c27540aa3db0281406fedb38"></a><!-- doxytag: member="VMAC_Base::DefaultIVLength" ref="a5b2090b3c27540aa3db0281406fedb38" args="() const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a5b2090b3c27540aa3db0281406fedb38">DefaultIVLength</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns default length of IVs accepted by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a308799c135440e57a583defe3860f02e"></a><!-- doxytag: member="VMAC_Base::MaxIVLength" ref="a308799c135440e57a583defe3860f02e" args="() const " -->
virtual unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a308799c135440e57a583defe3860f02e">MaxIVLength</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">returns maximal length of IVs accepted by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a39b0a4c4cdc11fda358f9975b5e4137e"></a><!-- doxytag: member="VMAC_Base::Ref" ref="a39b0a4c4cdc11fda358f9975b5e4137e" args="()" -->
<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><td class="mdescLeft">&#160;</td><td class="mdescRight">return a reference to this object, useful for passing a temporary object to a function that takes a non-const reference <br/></td></tr>
<tr><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><td class="mdescLeft">&#160;</td><td class="mdescRight">compute hash for current message, then restart for a new message  <a href="#aa0b8c7a110d8968268fd02ec32b9a8e8"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5e847d65a38ec354de1b28cc4bc66a81"></a><!-- doxytag: member="VMAC_Base::TagSize" ref="a5e847d65a38ec354de1b28cc4bc66a81" args="() const " -->
unsigned int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#a5e847d65a38ec354de1b28cc4bc66a81">TagSize</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">same as <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="size of the hash/digest/MAC returned by Final()">DigestSize()</a> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af8124c4fca23b74bbdc43660bdae692c"></a><!-- doxytag: member="VMAC_Base::CalculateDigest" ref="af8124c4fca23b74bbdc43660bdae692c" args="(byte *digest, const byte *input, size_t length)" -->
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><td class="mdescLeft">&#160;</td><td class="mdescRight">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="process more input">Update()</a> and <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="compute hash for current message, then restart for a new message">Final()</a> separately <br/></td></tr>
<tr><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><td class="mdescLeft">&#160;</td><td class="mdescRight">verify that digest is a valid digest for the current message, then reinitialize the object  <a href="#a16c4aecd047015d513feef4ed5b929ba"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acad96df68e70d922683e5063057130b2"></a><!-- doxytag: member="VMAC_Base::VerifyDigest" ref="acad96df68e70d922683e5063057130b2" args="(const byte *digest, const byte *input, size_t length)" -->
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><td class="mdescLeft">&#160;</td><td class="mdescRight">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="process more input">Update()</a> and <a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba" title="verify that digest is a valid digest for the current message, then reinitialize the object...">Verify()</a> separately <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b6917657eaec935750fd83e28270d76"></a><!-- doxytag: member="VMAC_Base::CalculateTruncatedDigest" ref="a0b6917657eaec935750fd83e28270d76" args="(byte *digest, size_t digestSize, const byte *input, size_t length)" -->
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><td class="mdescLeft">&#160;</td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#af8124c4fca23b74bbdc43660bdae692c" title="use this if your input is in one piece and you don&#39;t want to call Update() and Final() separately...">CalculateDigest()</a> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0f6069eadf492d970c3eb8cdf656e742"></a><!-- doxytag: member="VMAC_Base::TruncatedVerify" ref="a0f6069eadf492d970c3eb8cdf656e742" args="(const byte *digest, size_t digestLength)" -->
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><td class="mdescLeft">&#160;</td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#a16c4aecd047015d513feef4ed5b929ba" title="verify that digest is a valid digest for the current message, then reinitialize the object...">Verify()</a> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7958e99717019e8b9f91672bdfe9e086"></a><!-- doxytag: member="VMAC_Base::VerifyTruncatedDigest" ref="a7958e99717019e8b9f91672bdfe9e086" args="(const byte *digest, size_t digestLength, const byte *input, size_t length)" -->
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><td class="mdescLeft">&#160;</td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#acad96df68e70d922683e5063057130b2" title="use this if your input is in one piece and you don&#39;t want to call Update() and Verify() separately...">VerifyDigest()</a> <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24b43349a71e1f98508eeb10b31a0a62"></a><!-- doxytag: member="VMAC_Base::Clone" ref="a24b43349a71e1f98508eeb10b31a0a62" args="() const " -->
virtual <a class="el" href="class_clonable.html">Clonable</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#a24b43349a71e1f98508eeb10b31a0a62">Clone</a> () const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">this is not implemented by most classes yet <br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9751ed1853e44ba42a7e451d8227c6c5"></a><!-- doxytag: member="VMAC_Base::AccessCipher" ref="a9751ed1853e44ba42a7e451d8227c6c5" args="()=0" -->
virtual <a class="el" href="class_block_cipher.html">BlockCipher</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>AccessCipher</b> ()=0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2ebdf96a34fdada7207c0e9e570fc527"></a><!-- doxytag: member="VMAC_Base::DefaultDigestSize" ref="a2ebdf96a34fdada7207c0e9e570fc527" args="() const =0" -->
virtual int&#160;</td><td class="memItemRight" valign="bottom"><b>DefaultDigestSize</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1b9fdf74225688a85c714acf5991cfe"></a><!-- doxytag: member="VMAC_Base::GetCipher" ref="ac1b9fdf74225688a85c714acf5991cfe" args="() const " -->
const <a class="el" href="class_block_cipher.html">BlockCipher</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetCipher</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afc475d6a455618658c07049b39df582a"></a><!-- doxytag: member="VMAC_Base::HashEndianCorrectedBlock" ref="afc475d6a455618658c07049b39df582a" args="(const word64 *data)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>HashEndianCorrectedBlock</b> (const word64 *data)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a96ba11b27cf4af3b267c0aed35d9f0e4"></a><!-- doxytag: member="VMAC_Base::HashMultipleBlocks" ref="a96ba11b27cf4af3b267c0aed35d9f0e4" args="(const word64 *input, size_t length)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>HashMultipleBlocks</b> (const word64 *input, size_t length)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a48cd85f58172521a0a89d9a559c819d6"></a><!-- doxytag: member="VMAC_Base::Init" ref="a48cd85f58172521a0a89d9a559c819d6" args="()" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>Init</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a373a706d63c989ddd2136dc0b535f483"></a><!-- doxytag: member="VMAC_Base::StateBuf" ref="a373a706d63c989ddd2136dc0b535f483" args="()" -->
word64 *&#160;</td><td class="memItemRight" valign="bottom"><b>StateBuf</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0222829e9d634f7b59765dff0b02eebf"></a><!-- doxytag: member="VMAC_Base::DataBuf" ref="a0222829e9d634f7b59765dff0b02eebf" args="()" -->
word64 *&#160;</td><td class="memItemRight" valign="bottom"><b>DataBuf</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abd8b5180bde4bcd466c62213d231fbd7"></a><!-- doxytag: member="VMAC_Base::VHASH_Update_SSE2" ref="abd8b5180bde4bcd466c62213d231fbd7" args="(const word64 *data, size_t blocksRemainingInWord64, int tagPart)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>VHASH_Update_SSE2</b> (const word64 *data, size_t blocksRemainingInWord64, int tagPart)</td></tr>
<tr><td class="memTemplParams" colspan="2"><a class="anchor" id="aee86826a7402cba3406a279c8973e454"></a><!-- doxytag: member="VMAC_Base::VHASH_Update_Template" ref="aee86826a7402cba3406a279c8973e454" args="(const word64 *data, size_t blockRemainingInWord128)" -->
template&lt;bool T_128BitTag&gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><b>VHASH_Update_Template</b> (const word64 *data, size_t blockRemainingInWord128)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a93787d81c3829e86a146f1b83604c16b"></a><!-- doxytag: member="VMAC_Base::VHASH_Update" ref="a93787d81c3829e86a146f1b83604c16b" args="(const word64 *data, size_t blocksRemainingInWord128)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>VHASH_Update</b> (const word64 *data, size_t blocksRemainingInWord128)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a674767bdfe5ba30deaf057b0750f11a5"></a><!-- doxytag: member="VMAC_Base::m_polyState" ref="a674767bdfe5ba30deaf057b0750f11a5" args="()" -->
word64 *&#160;</td><td class="memItemRight" valign="bottom"><b>m_polyState</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4402ea236fc3f38e16952f0176a4e814"></a><!-- doxytag: member="VMAC_Base::SS1" ref="a4402ea236fc3f38e16952f0176a4e814" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>SS1</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0c11fd39efa91c1e18f96fef9fe842cd"></a><!-- doxytag: member="VMAC_Base::m_polyStateSize" ref="a0c11fd39efa91c1e18f96fef9fe842cd" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>m_polyStateSize</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd452fbdfcf6b297b27249e6788ecbec"></a><!-- doxytag: member="VMAC_Base::m_nhKey" ref="afd452fbdfcf6b297b27249e6788ecbec" args="()" -->
word64 *&#160;</td><td class="memItemRight" valign="bottom"><b>m_nhKey</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26b4a9d15712a40dd9f0d1be6641cc04"></a><!-- doxytag: member="VMAC_Base::SS2" ref="a26b4a9d15712a40dd9f0d1be6641cc04" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>SS2</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2732ee11b3331ca98884d8c90c7caf9a"></a><!-- doxytag: member="VMAC_Base::m_nhKeySize" ref="a2732ee11b3331ca98884d8c90c7caf9a" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>m_nhKeySize</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad3418eac61519aec8f052040558fca32"></a><!-- doxytag: member="VMAC_Base::m_data" ref="ad3418eac61519aec8f052040558fca32" args="()" -->
byte *&#160;</td><td class="memItemRight" valign="bottom"><b>m_data</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0b7600f411b97d32cdf9c8056b274951"></a><!-- doxytag: member="VMAC_Base::SS3" ref="a0b7600f411b97d32cdf9c8056b274951" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>SS3</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b82fd608623d40bcf254f9cd277e1c4"></a><!-- doxytag: member="VMAC_Base::m_dataSize" ref="a4b82fd608623d40bcf254f9cd277e1c4" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>m_dataSize</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22feef7bca0a7ddce65d05f47afedae3"></a><!-- doxytag: member="VMAC_Base::m_l3Key" ref="a22feef7bca0a7ddce65d05f47afedae3" args="()" -->
word64 *&#160;</td><td class="memItemRight" valign="bottom"><b>m_l3Key</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac2e620b097e9c837c0dad047846ebf62"></a><!-- doxytag: member="VMAC_Base::SS4" ref="ac2e620b097e9c837c0dad047846ebf62" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>SS4</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af94cc93d9937911e51ccf175875eba07"></a><!-- doxytag: member="VMAC_Base::m_l3KeySize" ref="af94cc93d9937911e51ccf175875eba07" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>m_l3KeySize</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae35d611e167eb767e073bc84484798e7"></a><!-- doxytag: member="VMAC_Base::m_nonce" ref="ae35d611e167eb767e073bc84484798e7" args="()" -->
byte *&#160;</td><td class="memItemRight" valign="bottom"><b>m_nonce</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a867c79b2ee59338b6b19d4bcc266c10f"></a><!-- doxytag: member="VMAC_Base::SS5" ref="a867c79b2ee59338b6b19d4bcc266c10f" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>SS5</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aff1ad199d2142494f18ecde219d481ab"></a><!-- doxytag: member="VMAC_Base::m_nonceSize" ref="aff1ad199d2142494f18ecde219d481ab" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>m_nonceSize</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a06d8287263e19935d1d8089876e6dc85"></a><!-- doxytag: member="VMAC_Base::m_pad" ref="a06d8287263e19935d1d8089876e6dc85" args="()" -->
byte *&#160;</td><td class="memItemRight" valign="bottom"><b>m_pad</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1beb23690d49797b0992865426fe62b"></a><!-- doxytag: member="VMAC_Base::SS6" ref="ae1beb23690d49797b0992865426fe62b" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>SS6</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3bb6519b055246fa32195e549d43afeb"></a><!-- doxytag: member="VMAC_Base::m_padSize" ref="a3bb6519b055246fa32195e549d43afeb" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>m_padSize</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7b56598051282b6062c032f55575f2b"></a><!-- doxytag: member="VMAC_Base::SST" ref="aa7b56598051282b6062c032f55575f2b" args="()" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>SST</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac68ec57bd4aa673bda236234af909390"></a><!-- doxytag: member="VMAC_Base::AllocateBlocks" ref="ac68ec57bd4aa673bda236234af909390" args="()" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>AllocateBlocks</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a33a8299a01976e215362f093589b9f6e"></a><!-- doxytag: member="VMAC_Base::GetBitCountHi" ref="a33a8299a01976e215362f093589b9f6e" args="() const" -->
word64&#160;</td><td class="memItemRight" valign="bottom"><b>GetBitCountHi</b> () const</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5fe17f6b8a18b047349b31931baa5965"></a><!-- doxytag: member="VMAC_Base::GetBitCountLo" ref="a5fe17f6b8a18b047349b31931baa5965" args="() const" -->
word64&#160;</td><td class="memItemRight" valign="bottom"><b>GetBitCountLo</b> () const</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a01f39339fa69510303ad401245df1037"></a><!-- doxytag: member="VMAC_Base::PadLastBlock" ref="a01f39339fa69510303ad401245df1037" args="(unsigned int lastBlockSize, byte padFirst=0x80)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>PadLastBlock</b> (unsigned int lastBlockSize, byte padFirst=0x80)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af4f5349f8ebacfde64bb24f2ce758775"></a><!-- doxytag: member="VMAC_Base::HashBlock" ref="af4f5349f8ebacfde64bb24f2ce758775" args="(const HashWordType *input)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>HashBlock</b> (const HashWordType *input)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2e3a8b3f8e5cf8599fdfb431d96518a5"></a><!-- doxytag: member="VMAC_Base::GetAlgorithm" ref="a2e3a8b3f8e5cf8599fdfb431d96518a5" args="() const " -->
const <a class="el" href="class_algorithm.html">Algorithm</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><b>GetAlgorithm</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32b2095542b18025814118734bf34da2"></a><!-- doxytag: member="VMAC_Base::ThrowIfInvalidKeyLength" ref="a32b2095542b18025814118734bf34da2" args="(size_t length)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>ThrowIfInvalidKeyLength</b> (size_t length)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae60d9774af66fc673fe6139f5880c477"></a><!-- doxytag: member="VMAC_Base::ThrowIfResynchronizable" ref="ae60d9774af66fc673fe6139f5880c477" args="()" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>ThrowIfResynchronizable</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac687add7d0a09c626d85b77714bbd114"></a><!-- doxytag: member="VMAC_Base::ThrowIfInvalidIV" ref="ac687add7d0a09c626d85b77714bbd114" args="(const byte *iv)" -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>ThrowIfInvalidIV</b> (const byte *iv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaae6c529f861c47193f3498719e2dc48"></a><!-- doxytag: member="VMAC_Base::ThrowIfInvalidIVLength" ref="aaae6c529f861c47193f3498719e2dc48" args="(int size)" -->
size_t&#160;</td><td class="memItemRight" valign="bottom"><b>ThrowIfInvalidIVLength</b> (int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66ce967c9b8717baa10b4bdb2312d08d"></a><!-- doxytag: member="VMAC_Base::GetIVAndThrowIfInvalid" ref="a66ce967c9b8717baa10b4bdb2312d08d" args="(const NameValuePairs &amp;params, size_t &amp;size)" -->
const byte *&#160;</td><td class="memItemRight" valign="bottom"><b>GetIVAndThrowIfInvalid</b> (const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params, size_t &amp;size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a719efcf12f0de461b951830b8131b36a"></a><!-- doxytag: member="VMAC_Base::AssertValidKeyLength" ref="a719efcf12f0de461b951830b8131b36a" args="(size_t length) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>AssertValidKeyLength</b> (size_t length) const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a584846215692150d99d63f8b7ccd58d8"></a><!-- doxytag: member="VMAC_Base::ThrowIfInvalidTruncatedSize" ref="a584846215692150d99d63f8b7ccd58d8" args="(size_t size) const " -->
void&#160;</td><td class="memItemRight" valign="bottom"><b>ThrowIfInvalidTruncatedSize</b> (size_t size) const </td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a41cc412babcdd32ca2fe2a3732ac8155"></a><!-- doxytag: member="VMAC_Base::m_aggregate" ref="a41cc412babcdd32ca2fe2a3732ac8155" args="" -->
<a class="el" href="class_sec_block.html">AlignedSecByteBlock</a>&#160;</td><td class="memItemRight" valign="bottom"><b>m_aggregate</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a1da3fa5eb3c7e7346a4d2f4ff16c881b"></a><!-- doxytag: member="VMAC_Base::m_is128" ref="a1da3fa5eb3c7e7346a4d2f4ff16c881b" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_is128</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a02596234f2eb210428573f3062244a0d"></a><!-- doxytag: member="VMAC_Base::m_padCached" ref="a02596234f2eb210428573f3062244a0d" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_padCached</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acee066bf89503f32699aba376c874fce"></a><!-- doxytag: member="VMAC_Base::m_isFirstBlock" ref="acee066bf89503f32699aba376c874fce" args="" -->
bool&#160;</td><td class="memItemRight" valign="bottom"><b>m_isFirstBlock</b></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a59b7e6dadc750dd324db269c8a5f59b9"></a><!-- doxytag: member="VMAC_Base::m_L1KeyLength" ref="a59b7e6dadc750dd324db269c8a5f59b9" args="" -->
int&#160;</td><td class="memItemRight" valign="bottom"><b>m_L1KeyLength</b></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock">
<p>Definition at line <a class="el" href="vmac_8h_source.html#l00010">10</a> of file <a class="el" href="vmac_8h_source.html">vmac.h</a>.</p>
</div><hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="abd5685ab3eaf6ec272f7e062c3194c6c"></a><!-- doxytag: member="VMAC_Base::GetNextIV" ref="abd5685ab3eaf6ec272f7e062c3194c6c" args="(RandomNumberGenerator &amp;rng, byte *IV)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void VMAC_Base::GetNextIV </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&#160;</td>
          <td class="paramname"><em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&#160;</td>
          <td class="paramname"><em>IV</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get a secure IV for the next message </p>
<p>This method should be called after you finish encrypting one message and are ready to start the next one. After calling it, you must call <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> or <a class="el" href="class_v_m_a_c___base.html#a986931f6b6e892e353dec13fb9f8542d" title="resynchronize with an IV. ivLength=-1 means use IVSize()">Resynchronize()</a> before using this object again. This method is not implemented on decryption objects. </p>

<p>Reimplemented from <a class="el" href="class_simple_keying_interface.html#a917224bb6df7431d6469e7a10feac5fa">SimpleKeyingInterface</a>.</p>

<p>Definition at line <a class="el" href="vmac_8cpp_source.html#l00093">93</a> of file <a class="el" href="vmac_8cpp_source.html">vmac.cpp</a>.</p>

</div>
</div>
<a class="anchor" id="adf3c29b3ef3af74788a58c7c49887fd7"></a><!-- doxytag: member="VMAC_Base::SetKey" ref="adf3c29b3ef3af74788a58c7c49887fd7" args="(const byte *key, size_t length, const NameValuePairs &amp;params=g_nullNameValuePairs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SimpleKeyingInterface::SetKey </td>
          <td>(</td>
          <td class="paramtype">const byte *&#160;</td>
          <td class="paramname"><em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&#160;</td>
          <td class="paramname"><em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;&#160;</td>
          <td class="paramname"><em>params</em> = <code><a class="el" href="cryptlib_8h.html#aa9048ef24353685fd0dcc4180c6884c2">g_nullNameValuePairs</a></code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>set or reset the key of this object </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">params</td><td>is used to specify Rounds, BlockSize, etc. </td></tr>
  </table>
  </dd>
</dl>

<p>Reimplemented in <a class="el" href="class_authenticated_symmetric_cipher_base.html#aea1353c1d0a94c3f81ebcf53f6b7ea57">AuthenticatedSymmetricCipherBase</a>, and <a class="el" href="class_e_c_b___one_way.html#aea389c964114b73390dd81d836124461">ECB_OneWay</a>.</p>

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

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00071">SimpleKeyingInterface::SetKeyWithIV()</a>, and <a class="el" href="cryptlib_8cpp_source.html#l00066">SimpleKeyingInterface::SetKeyWithRounds()</a>.</p>

</div>
</div>
<a class="anchor" id="ad263f4a96fa8b4e7d01fea8ccaae9d3b"></a><!-- doxytag: member="VMAC_Base::IsResynchronizable" ref="ad263f4a96fa8b4e7d01fea8ccaae9d3b" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool SimpleKeyingInterface::IsResynchronizable </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>returns whether this object can be resynchronized (i.e. supports initialization vectors) </p>
<p>If this function returns true, and no IV is passed to <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> and <a class="el" href="class_simple_keying_interface.html#a9c47590ef06335b34bdaf272fd37ef4d" title="returns whether this object can use structured IVs, for example a counter (in addition to ones return...">CanUseStructuredIVs()</a>==true, an IV of all 0's will be assumed. </p>

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

</div>
</div>
<a class="anchor" id="aa0b8c7a110d8968268fd02ec32b9a8e8"></a><!-- doxytag: member="VMAC_Base::Final" ref="aa0b8c7a110d8968268fd02ec32b9a8e8" args="(byte *digest)" -->
<div class="memitem">
<div class="memproto">
      <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><code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>compute hash for current message, then restart for a new message </p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>size of digest == <a class="el" href="class_hash_transformation.html#a9f42cc280bac76b884ad12615c0dabb5" title="size of the hash/digest/MAC returned by Final()">DigestSize()</a>. </dd></dl>

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

<p>Referenced by <a class="el" href="pwdbased_8h_source.html#l00086">PKCS5_PBKDF2_HMAC&lt; T &gt;::DeriveKey()</a>, <a class="el" href="randpool_8cpp_source.html#l00026">RandomPool::IncorporateEntropy()</a>, and <a class="el" href="hmac_8cpp_source.html#l00067">HMAC_Base::TruncatedFinal()</a>.</p>

</div>
</div>
<a class="anchor" id="a16c4aecd047015d513feef4ed5b929ba"></a><!-- doxytag: member="VMAC_Base::Verify" ref="a16c4aecd047015d513feef4ed5b929ba" args="(const byte *digest)" -->
<div class="memitem">
<div class="memproto">
      <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><code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>verify that digest is a valid digest for the current message, then reinitialize the object </p>
<p>Default implementation is to call <a class="el" href="class_hash_transformation.html#aa0b8c7a110d8968268fd02ec32b9a8e8" title="compute hash for current message, then restart for a new message">Final()</a> and do a bitwise comparison between its output and digest. </p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l00575">575</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="vmac_8h_source.html">vmac.h</a></li>
<li><a class="el" href="vmac_8cpp_source.html">vmac.cpp</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Sun Oct 16 2011 for Crypto++ by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>