<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>Crypto++: HAVAL class Reference</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <!-- Generated by Doxygen 1.3.7 --> <div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div> <h1>HAVAL Class Reference</h1><code>#include <<a class="el" href="haval_8h-source.html">haval.h</a>></code> <p> <p>Inheritance diagram for HAVAL: <p><center><img src="class_h_a_v_a_l.png" usemap="#HAVAL_map" border="0" alt=""></center> <map name="HAVAL_map"> <area href="class_iterated_hash.html" alt="IteratedHash< word32, LittleEndian, 128 >" shape="rect" coords="390,280,770,304"> <area href="class_iterated_hash_base2.html" alt="IteratedHashBase2< word32, LittleEndian, HashTransformation >" shape="rect" coords="390,224,770,248"> <area href="class_iterated_hash_base.html" alt="IteratedHashBase< word32, HashTransformation >" shape="rect" coords="390,168,770,192"> <area href="class_hash_transformation.html" alt="HashTransformation" shape="rect" coords="390,112,770,136"> <area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="390,56,770,80"> <area href="class_clonable.html" alt="Clonable" shape="rect" coords="390,0,770,24"> <area href="class_h_a_v_a_l3.html" alt="HAVAL3" shape="rect" coords="0,392,380,416"> <area href="class_h_a_v_a_l4.html" alt="HAVAL4" shape="rect" coords="390,392,770,416"> <area href="class_h_a_v_a_l5.html" alt="HAVAL5" shape="rect" coords="780,392,1160,416"> </map> <a href="class_h_a_v_a_l-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2> <a href="http://www.weidai.com/scan-mirror/md.html#HAVAL">HAVAL</a> <p> <p> Definition at line <a class="el" href="haval_8h-source.html#l00009">9</a> of file <a class="el" href="haval_8h-source.html">haval.h</a>.<table border=0 cellpadding=0 cellspacing=0> <tr><td></td></tr> <tr><td colspan=2><br><h2>Public Types</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom>{ <b>DIGESTSIZE</b> = 32, <b>HAVAL_VERSION</b> = 1 }</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2w0" doxytag="HAVAL::ByteOrderClass" ></a> typedef LittleEndian </td><td class="memItemRight" valign=bottom><b>ByteOrderClass</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2w1" doxytag="HAVAL::HashWordType" ></a> typedef <a class="el" href="class_iterated_hash_base.html">IteratedHashBase</a><<br> word32, <a class="el" href="class_hash_transformation.html">HashTransformation</a> <br> >::HashWordType </td><td class="memItemRight" valign=bottom><b>HashWordType</b></td></tr> <tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_la0" doxytag="HAVAL::HAVAL" ></a> </td><td class="memItemRight" valign=bottom><a class="el" href="class_h_a_v_a_l.html#_h_a_v_a_la0">HAVAL</a> (unsigned int digestSize=DIGESTSIZE, unsigned int passes=3)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">digestSize can be 16, 20, 24, 28, or 32 (Default=32)<br> pass can be 3, 4 or 5 (Default=3) <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5a1" doxytag="HAVAL::TruncatedFinal" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_h_a_v_a_l.html#_h_a_v_a_l5a1">TruncatedFinal</a> (byte *hash, unsigned int size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of Final() <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5a2" doxytag="HAVAL::DigestSize" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_h_a_v_a_l.html#_h_a_v_a_l5a2">DigestSize</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">size of the hash returned by Final() <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5a3" doxytag="HAVAL::AlgorithmName" ></a> std::string </td><td class="memItemRight" valign=bottom><a class="el" href="class_h_a_v_a_l.html#_h_a_v_a_l5a3">AlgorithmName</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2a1" doxytag="HAVAL::BlockSize" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_iterated_hash_base.html#_iterated_hash_base2a1">BlockSize</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">block size of underlying compression function, or 0 if not block based <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2a2" doxytag="HAVAL::OptimalBlockSize" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_iterated_hash_base.html#_iterated_hash_base2a2">OptimalBlockSize</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">input to Update() should have length a multiple of this for optimal speed <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2a3" doxytag="HAVAL::OptimalDataAlignment" ></a> unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_iterated_hash_base.html#_iterated_hash_base2a3">OptimalDataAlignment</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">returns how input should be aligned for optimal performance <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2a4" doxytag="HAVAL::Update" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_iterated_hash_base.html#_iterated_hash_base2a4">Update</a> (const byte *input, unsigned int length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">process more input <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2a5" doxytag="HAVAL::CreateUpdateSpace" ></a> byte * </td><td class="memItemRight" valign=bottom><a class="el" href="class_iterated_hash_base.html#_iterated_hash_base2a5">CreateUpdateSpace</a> (unsigned int &size)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">request space to write input into <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2a6" doxytag="HAVAL::Restart" ></a> void </td><td class="memItemRight" valign=bottom><a class="el" href="class_iterated_hash_base.html#_iterated_hash_base2a6">Restart</a> ()</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">discard the current state, and restart with a new message <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea7">Final</a> (byte *digest)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">compute hash for current message, then restart for a new message <a href="#_x_m_a_c_c___basea7"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea9" doxytag="HAVAL::CalculateDigest" ></a> virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea9">CalculateDigest</a> (byte *digest, const byte *input, unsigned int length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">use this if your input is in one piece and you don't want to call Update() and Final() separately <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea10">Verify</a> (const byte *digest)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">verify that digest is a valid digest for the current message, then reinitialize the object <a href="#_x_m_a_c_c___basea10"></a><br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea11" doxytag="HAVAL::VerifyDigest" ></a> virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea11">VerifyDigest</a> (const byte *digest, const byte *input, unsigned int length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">use this if your input is in one piece and you don't want to call Update() and Verify() separately <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea12" doxytag="HAVAL::CalculateTruncatedDigest" ></a> virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea12">CalculateTruncatedDigest</a> (byte *digest, unsigned int digestSize, const byte *input, unsigned int length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of CalculateDigest() <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea13" doxytag="HAVAL::TruncatedVerify" ></a> virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">TruncatedVerify</a> (const byte *digest, unsigned int digestLength)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of Verify() <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea14" doxytag="HAVAL::VerifyTruncatedDigest" ></a> virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea14">VerifyTruncatedDigest</a> (const byte *digest, unsigned int digestLength, const byte *input, unsigned int length)</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of VerifyDigest() <br><br></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_zlib_decompressora18" doxytag="HAVAL::Clone" ></a> virtual <a class="el" href="class_clonable.html">Clonable</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="class_clonable.html#_zlib_decompressora18">Clone</a> () const</td></tr> <tr><td class="mdescLeft"> </td><td class="mdescRight">this is not implemented by most classes yet <br><br></td></tr> <tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5e1" doxytag="HAVAL::StaticAlgorithmName" ></a> const char * </td><td class="memItemRight" valign=bottom><b>StaticAlgorithmName</b> ()</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2e0" doxytag="HAVAL::CorrectEndianess" ></a> void </td><td class="memItemRight" valign=bottom><b>CorrectEndianess</b> (HashWordType *out, const HashWordType *in, unsigned int byteCount)</td></tr> <tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hashs0" doxytag="HAVAL::cryptopp_assert___LINE__" ></a> CompileAssert<((BLOCKSIZE <br> &(BLOCKSIZE-1))==0) </td><td class="memItemRight" valign=bottom><b>cryptopp_assert___LINE__</b> )</td></tr> <tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5b0" doxytag="HAVAL::Init" ></a> void </td><td class="memItemRight" valign=bottom><b>Init</b> ()</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5b1" doxytag="HAVAL::Tailor" ></a> void </td><td class="memItemRight" valign=bottom><b>Tailor</b> (unsigned int FPTLEN)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5b2" doxytag="HAVAL::HashEndianCorrectedBlock" ></a> void </td><td class="memItemRight" valign=bottom><b>HashEndianCorrectedBlock</b> (const word32 *in)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b0" doxytag="HAVAL::HashBlock" ></a> void </td><td class="memItemRight" valign=bottom><b>HashBlock</b> (const HashWordType *input)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b9" doxytag="HAVAL::HashBlock" ></a> virtual void </td><td class="memItemRight" valign=bottom><b>HashBlock</b> (const word32 *input)=0</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b1" doxytag="HAVAL::HashEndianCorrectedBlock" ></a> virtual void </td><td class="memItemRight" valign=bottom><b>HashEndianCorrectedBlock</b> (const HashWordType *data)=0</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b2" doxytag="HAVAL::SetBlockSize" ></a> void </td><td class="memItemRight" valign=bottom><b>SetBlockSize</b> (unsigned int blockSize)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b3" doxytag="HAVAL::SetStateSize" ></a> void </td><td class="memItemRight" valign=bottom><b>SetStateSize</b> (unsigned int stateSize)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b4" doxytag="HAVAL::GetBitCountHi" ></a> word32 </td><td class="memItemRight" valign=bottom><b>GetBitCountHi</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b5" doxytag="HAVAL::GetBitCountLo" ></a> word32 </td><td class="memItemRight" valign=bottom><b>GetBitCountLo</b> () const</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b6" doxytag="HAVAL::HashMultipleBlocks" ></a> virtual unsigned int </td><td class="memItemRight" valign=bottom><b>HashMultipleBlocks</b> (const word32 *input, unsigned int length)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2b7" doxytag="HAVAL::PadLastBlock" ></a> void </td><td class="memItemRight" valign=bottom><b>PadLastBlock</b> (unsigned int lastBlockSize, byte padFirst=0x80)</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___baseb10" doxytag="HAVAL::ThrowIfInvalidTruncatedSize" ></a> void </td><td class="memItemRight" valign=bottom><b>ThrowIfInvalidTruncatedSize</b> (unsigned int size) const</td></tr> <tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5p0" doxytag="HAVAL::digestSize" ></a> const unsigned int </td><td class="memItemRight" valign=bottom><b>digestSize</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5p1" doxytag="HAVAL::pass" ></a> const unsigned int </td><td class="memItemRight" valign=bottom><b>pass</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2p0" doxytag="HAVAL::m_data" ></a> <a class="el" href="class_sec_block.html">SecBlock</a>< word32 > </td><td class="memItemRight" valign=bottom><b>m_data</b></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_iterated_hash_base2p1" doxytag="HAVAL::m_digest" ></a> <a class="el" href="class_sec_block.html">SecBlock</a>< word32 > </td><td class="memItemRight" valign=bottom><b>m_digest</b></td></tr> <tr><td colspan=2><br><h2>Static Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5t0" doxytag="HAVAL::wi2" ></a> const unsigned int </td><td class="memItemRight" valign=bottom><b>wi2</b> [32] = { 5,14,26,18,11,28, 7,16, 0,23,20,22, 1,10, 4, 8,30, 3,21, 9,17,24,29, 6,19,12,15,13, 2,25,31,27}</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5t1" doxytag="HAVAL::wi3" ></a> const unsigned int </td><td class="memItemRight" valign=bottom><b>wi3</b> [32] = {19, 9, 4,20,28,17, 8,22,29,14,25,12,24,30,16,26,31,15, 7, 3, 1, 0,18,27,13, 6,21,10,23,11, 5, 2}</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5t2" doxytag="HAVAL::wi4" ></a> const unsigned int </td><td class="memItemRight" valign=bottom><b>wi4</b> [32] = {24, 4, 0,14, 2, 7,28,23,26, 6,30,20,18,25,19, 3,22,11,31,21, 8,27,12, 9, 1,29, 5,15,17,10,16,13}</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_h_a_v_a_l5t3" doxytag="HAVAL::wi5" ></a> const unsigned int </td><td class="memItemRight" valign=bottom><b>wi5</b> [32] = {27, 3,21,26,17,11,20,29,19, 0,12, 7,13, 8,31,10, 5, 9,14,30,18, 6,28,24, 2,23,16,22, 4, 1,25,15}</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>const word32 </td><td class="memItemRight" valign=bottom><b>mc2</b> [32]</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>const word32 </td><td class="memItemRight" valign=bottom><b>mc3</b> [32]</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>const word32 </td><td class="memItemRight" valign=bottom><b>mc4</b> [32]</td></tr> <tr><td class="memItemLeft" nowrap align=right valign=top>const word32 </td><td class="memItemRight" valign=bottom><b>mc5</b> [32]</td></tr> </table> <hr><h2>Member Function Documentation</h2> <a class="anchor" name="_x_m_a_c_c___basea7" doxytag="HAVAL::Final" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual void HashTransformation::Final </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">byte * </td> <td class="mdname1" valign="top" nowrap> <em>digest</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> compute hash for current message, then restart for a new message <p> <dl compact><dt><b>Precondition:</b></dt><dd>size of digest == DigestSize(). </dd></dl> <p> Definition at line <a class="el" href="cryptlib_8h-source.html#l00532">532</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>. <p> Referenced by <a class="el" href="pwdbased_8h-source.html#l00085">PKCS5_PBKDF2_HMAC< T >::DeriveKey()</a>, <a class="el" href="filters_8cpp-source.html#l00662">HashFilter::Put2()</a>, and <a class="el" href="hmac_8cpp-source.html#l00065">HMAC_Base::TruncatedFinal()</a>. </td> </tr> </table> <a class="anchor" name="_x_m_a_c_c___basea10" doxytag="HAVAL::Verify" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> virtual bool HashTransformation::Verify </td> <td class="md" valign="top">( </td> <td class="md" nowrap valign="top">const byte * </td> <td class="mdname1" valign="top" nowrap> <em>digest</em> </td> <td class="md" valign="top"> ) </td> <td class="md" nowrap><code> [inline, virtual, inherited]</code></td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> verify that digest is a valid digest for the current message, then reinitialize the object <p> Default implementation is to call Final() and do a bitwise comparison between its output and digest. <p> Definition at line <a class="el" href="cryptlib_8h-source.html#l00558">558</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>. </td> </tr> </table> <hr><h2>Member Data Documentation</h2> <a class="anchor" name="_h_a_v_a_l5t4" doxytag="HAVAL::mc2" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const word32 HAVAL::mc2<code> [static, protected]</code> </td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Initial value:</b><pre class="fragment"><div> { 0x452821E6, 0x38D01377, 0xBE5466CF, 0x34E90C6C, 0xC0AC29B7, 0xC97C50DD, 0x3F84D5B5, 0xB5470917 , 0x9216D5D9, 0x8979FB1B, 0xD1310BA6, 0x98DFB5AC, 0x2FFD72DB, 0xD01ADFB7, 0xB8E1AFED, 0x6A267E96 , 0xBA7C9045, 0xF12C7F99, 0x24A19947, 0xB3916CF7, 0x0801F2E2, 0x858EFC16, 0x636920D8, 0x71574E69 , 0xA458FEA3, 0xF4933D7E, 0x0D95748F, 0x728EB658, 0x718BCD58, 0x82154AEE, 0x7B54A41D, 0xC25A59B5} </div></pre> <p> Definition at line <a class="el" href="haval_8cpp-source.html#l00213">213</a> of file <a class="el" href="haval_8cpp-source.html">haval.cpp</a>. </td> </tr> </table> <a class="anchor" name="_h_a_v_a_l5t5" doxytag="HAVAL::mc3" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const word32 HAVAL::mc3<code> [static, protected]</code> </td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Initial value:</b><pre class="fragment"><div> { 0x9C30D539,0x2AF26013,0xC5D1B023,0x286085F0,0xCA417918,0xB8DB38EF,0x8E79DCB0,0x603A180E, 0x6C9E0E8B,0xB01E8A3E,0xD71577C1,0xBD314B27,0x78AF2FDA,0x55605C60,0xE65525F3,0xAA55AB94, 0x57489862,0x63E81440,0x55CA396A,0x2AAB10B6,0xB4CC5C34,0x1141E8CE,0xA15486AF,0x7C72E993, 0xB3EE1411,0x636FBC2A,0x2BA9C55D,0x741831F6,0xCE5C3E16,0x9B87931E,0xAFD6BA33,0x6C24CF5C} </div></pre> <p> Definition at line <a class="el" href="haval_8cpp-source.html#l00219">219</a> of file <a class="el" href="haval_8cpp-source.html">haval.cpp</a>. </td> </tr> </table> <a class="anchor" name="_h_a_v_a_l5t6" doxytag="HAVAL::mc4" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const word32 HAVAL::mc4<code> [static, protected]</code> </td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Initial value:</b><pre class="fragment"><div> { 0x7A325381,0x28958677,0x3B8F4898,0x6B4BB9AF,0xC4BFE81B,0x66282193,0x61D809CC,0xFB21A991, 0x487CAC60,0x5DEC8032,0xEF845D5D,0xE98575B1,0xDC262302,0xEB651B88,0x23893E81,0xD396ACC5, 0x0F6D6FF3,0x83F44239,0x2E0B4482,0xA4842004,0x69C8F04A,0x9E1F9B5E,0x21C66842,0xF6E96C9A, 0x670C9C61,0xABD388F0,0x6A51A0D2,0xD8542F68,0x960FA728,0xAB5133A3,0x6EEF0B6C,0x137A3BE4} </div></pre> <p> Definition at line <a class="el" href="haval_8cpp-source.html#l00225">225</a> of file <a class="el" href="haval_8cpp-source.html">haval.cpp</a>. </td> </tr> </table> <a class="anchor" name="_h_a_v_a_l5t7" doxytag="HAVAL::mc5" ></a><p> <table class="mdTable" width="100%" cellpadding="2" cellspacing="0"> <tr> <td class="mdRow"> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td class="md" nowrap valign="top"> const word32 HAVAL::mc5<code> [static, protected]</code> </td> </tr> </table> </td> </tr> </table> <table cellspacing=5 cellpadding=0 border=0> <tr> <td> </td> <td> <p> <b>Initial value:</b><pre class="fragment"><div> { 0xBA3BF050,0x7EFB2A98,0xA1F1651D,0x39AF0176,0x66CA593E,0x82430E88,0x8CEE8619,0x456F9FB4, 0x7D84A5C3,0x3B8B5EBE,0xE06F75D8,0x85C12073,0x401A449F,0x56C16AA6,0x4ED3AA62,0x363F7706, 0x1BFEDF72,0x429B023D,0x37D0D724,0xD00A1248,0xDB0FEAD3,0x49F1C09B,0x075372C9,0x80991B7B, 0x25D479D8,0xF6E8DEF7,0xE3FE501A,0xB6794C3B,0x976CE0BD,0x04C006BA,0xC1A94FB6,0x409F60C4} </div></pre> <p> Definition at line <a class="el" href="haval_8cpp-source.html#l00231">231</a> of file <a class="el" href="haval_8cpp-source.html">haval.cpp</a>. </td> </tr> </table> <hr>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="haval_8h-source.html">haval.h</a><li><a class="el" href="haval_8cpp-source.html">haval.cpp</a></ul> <hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:24:04 2004 for Crypto++ by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address> </body> </html>