📄 class_panama_m_a_c___base.html
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>Crypto++: TemplatePanamaMAC_Base< B > class Reference</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.2 --><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">Compound 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">Compound Members</a> | <a class="qindex" href="globals.html">File Members</a></div><h1>PanamaMAC_Base< B > Class Template Reference</h1><code>#include <<a class="el" href="panama_8h-source.html">panama.h</a>></code><p><p>Inheritance diagram for PanamaMAC_Base< B >:<p><center><img src="class_panama_m_a_c___base.png" usemap="#PanamaMAC_Base< B >_map" border="0" alt=""></center><map name="PanamaMAC_Base< B >_map"><area href="class_panama_hash.html" alt="PanamaHash< B >" shape="rect" coords="210,336,620,360"><area href="class_variable_key_length.html" alt="VariableKeyLength< 32, 0, UINT_MAX >" shape="rect" coords="630,336,1040,360"><area href="class_message_authentication_code.html" alt="MessageAuthenticationCode" shape="rect" coords="1050,336,1460,360"><area href="class_panama.html" alt="Panama< B >" shape="rect" coords="0,280,410,304"><area href="class_iterated_hash.html" alt="IteratedHash< word32, NativeByteOrder, 32 >" shape="rect" coords="420,280,830,304"><area href="class_hash_transformation.html" alt="HashTransformation" shape="rect" coords="840,280,1250,304"><area href="class_simple_keying_interface.html" alt="SimpleKeyingInterface" shape="rect" coords="1260,280,1670,304"><area href="class_iterated_hash_base2.html" alt="IteratedHashBase2< word32, NativeByteOrder, HashTransformation >" shape="rect" coords="420,224,830,248"><area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="840,224,1250,248"><area href="class_clonable.html" alt="Clonable" shape="rect" coords="840,168,1250,192"><area href="class_hash_transformation.html" alt="HashTransformation" shape="rect" coords="420,112,830,136"><area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="420,56,830,80"><area href="class_clonable.html" alt="Clonable" shape="rect" coords="420,0,830,24"></map><a href="class_panama_m_a_c___base-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2><h3>template<class B = LittleEndian><br> class PanamaMAC_Base< B ></h3><p><p>Definition at line <a class="el" href="panama_8h-source.html#l00045">45</a> of file <a class="el" href="panama_8h-source.html">panama.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 }</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_iterated_hash_base2w0" doxytag="PanamaMAC_Base::ByteOrderClass"></a>typedef NativeByteOrder </td><td class="memItemRight" valign=bottom><b>ByteOrderClass</b></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_iterated_hash_base2w1" doxytag="PanamaMAC_Base::HashWordType"></a>typedef IteratedHashBase<<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 class="memItemLeft" nowrap align=right valign=top>enum </td><td class="memItemRight" valign=bottom><b>IV_Requirement</b> { <br> <b>STRUCTURED_IV</b> = 0, <b>RANDOM_IV</b>, <b>UNPREDICTABLE_RANDOM_IV</b>, <b>INTERNALLY_GENERATED_IV</b>, <br> <b>NOT_RESYNCHRONIZABLE</b><br> }</td></tr><tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_panama_m_a_c___basea0" doxytag="PanamaMAC_Base::UncheckedSetKey"></a>void </td><td class="memItemRight" valign=bottom><b>UncheckedSetKey</b> (const byte *userKey, unsigned int keylength)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_panama_m_a_c___basea1" doxytag="PanamaMAC_Base::DigestSize"></a>unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_panama_m_a_c___basea1">DigestSize</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">size of the hash returned by <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_panama_m_a_c___basea2" doxytag="PanamaMAC_Base::TruncatedFinal"></a>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_panama_m_a_c___basea2">TruncatedFinal</a> (byte *hash, unsigned int size)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_iterated_hash_base2a3" doxytag="PanamaMAC_Base::OptimalBlockSize"></a>unsigned int </td><td class="memItemRight" valign=bottom><b>OptimalBlockSize</b> () const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_iterated_hash_base2a4" doxytag="PanamaMAC_Base::Update"></a>void </td><td class="memItemRight" valign=bottom><b>Update</b> (const byte *input, unsigned int length)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_iterated_hash_base2a5" doxytag="PanamaMAC_Base::CreateUpdateSpace"></a>byte * </td><td class="memItemRight" valign=bottom><b>CreateUpdateSpace</b> (unsigned int &size)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_iterated_hash_base2a6" doxytag="PanamaMAC_Base::Restart"></a>void </td><td class="memItemRight" valign=bottom><b>Restart</b> ()</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea13">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 </em> <a href="#_x_m_a_c_c___basea13"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea14" doxytag="PanamaMAC_Base::CalculateDigest"></a>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea14">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 <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> and <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea13">Final()</a> 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_panama_m_a_c___base.html#_x_m_a_c_c___basea15">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 </em> <a href="#_x_m_a_c_c___basea15"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea16" doxytag="PanamaMAC_Base::VerifyDigest"></a>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea16">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 <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> and <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea15">Verify()</a> separately <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea17" doxytag="PanamaMAC_Base::CalculateTruncatedDigest"></a>virtual void </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea17">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 <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea14">CalculateDigest()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca17" doxytag="PanamaMAC_Base::TruncatedVerify"></a>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_ca17">TruncatedVerify</a> (const byte *digest, unsigned int digestLength)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea15">Verify()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea18" doxytag="PanamaMAC_Base::VerifyTruncatedDigest"></a>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea18">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 <a class="el" href="class_hash_transformation.html#_x_m_a_c_c___basea16">VerifyDigest()</a> <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_zlib_decompressora17" doxytag="PanamaMAC_Base::AlgorithmName"></a>virtual std::string </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_zlib_decompressora17">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 name="_zlib_decompressora18" doxytag="PanamaMAC_Base::Clone"></a>virtual <a class="el" href="class_clonable.html">Clonable</a> * </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.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 class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea21" doxytag="PanamaMAC_Base::MinKeyLength"></a>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea21">MinKeyLength</a> () const=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns smallest valid key length in bytes */ <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea22" doxytag="PanamaMAC_Base::MaxKeyLength"></a>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea22">MaxKeyLength</a> () const=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns largest valid key length in bytes */ <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea23" doxytag="PanamaMAC_Base::DefaultKeyLength"></a>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea23">DefaultKeyLength</a> () const=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns default (recommended) key length in bytes */ <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea24" doxytag="PanamaMAC_Base::GetValidKeyLength"></a>virtual unsigned int </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea24">GetValidKeyLength</a> (unsigned int n) const=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns the smallest valid key length in bytes that is >= min(n, GetMaxKeyLength()) <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea25" doxytag="PanamaMAC_Base::IsValidKeyLength"></a>virtual bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea25">IsValidKeyLength</a> (unsigned int n) const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns whether n is a valid key length <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_panama_m_a_c___base.html#_x_m_a_c_c___basea26">SetKey</a> (const byte *key, unsigned int length, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &params=<a class="el" href="cryptlib_8h.html#a3">g_nullNameValuePairs</a>)=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">set or reset the key of this object </em> <a href="#_x_m_a_c_c___basea26"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea27" doxytag="PanamaMAC_Base::SetKeyWithRounds"></a>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea27">SetKeyWithRounds</a> (const byte *key, unsigned int length, int rounds)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea26">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> object that just specifies "Rounds" <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea28" doxytag="PanamaMAC_Base::SetKeyWithIV"></a>void </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea28">SetKeyWithIV</a> (const byte *key, unsigned int length, const byte *iv)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea26">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> object that just specifies "IV" <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea29" doxytag="PanamaMAC_Base::IVRequirement"></a>virtual IV_Requirement </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea29">IVRequirement</a> () const=0</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns the minimal requirement for secure IVs <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>bool </td><td class="memItemRight" valign=bottom><a class="el" href="class_panama_m_a_c___base.html#_x_m_a_c_c___basea30">IsResynchronizable</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns whether this object can be resynchronized (i.e. supports initialization vectors) </em> <a href="#_x_m_a_c_c___basea30"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea31" doxytag="PanamaMAC_Base::CanUseRandomIVs"></a>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -