⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 class_x_m_a_c_c.html

📁 Crypto++是一个非常强大的密码学库,主要是功能全
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!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++:  TemplateXMACC&lt; T &gt; 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&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Compound&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Compound&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><h1>XMACC&lt; T &gt; Class Template Reference</h1><code>#include &lt;<a class="el" href="xormac_8h-source.html">xormac.h</a>&gt;</code><p><p>Inheritance diagram for XMACC&lt; T &gt;:<p><center><img src="class_x_m_a_c_c.png" usemap="#XMACC< T >_map" border="0" alt=""></center><map name="XMACC< T >_map"><area href="class_message_authentication_code_final_template.html" alt="MessageAuthenticationCodeFinalTemplate< XMACC_Base< T > >" shape="rect" coords="199,224,587,248"><area href="class_message_authentication_code.html" alt="MessageAuthenticationCode" shape="rect" coords="199,168,587,192"><area href="class_hash_transformation.html" alt="HashTransformation" shape="rect" coords="0,112,388,136"><area href="class_simple_keying_interface.html" alt="SimpleKeyingInterface" shape="rect" coords="398,112,786,136"><area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="0,56,388,80"><area href="class_clonable.html" alt="Clonable" shape="rect" coords="0,0,388,24"></map><a href="class_x_m_a_c_c-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2><h3>template&lt;class T&gt;<br> class XMACC&lt; T &gt;</h3><a href="http://www.weidai.com/scan-mirror/mac.html#XMAC">XMAC</a> <p>If you need to generate MACs with XMACC (instead of just verifying them), you must save the counter before destroying an XMACC object and reinitialize it the next time you create an XMACC with the same key. Start counter at 0 when using a key for the first time. <p><p>Definition at line <a class="el" href="xormac_8h-source.html#l00063">63</a> of file <a class="el" href="xormac_8h-source.html">xormac.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 &nbsp;</td><td class="memItemRight" valign=bottom><b>IV_Requirement</b> { <br>&nbsp;&nbsp;<b>STRUCTURED_IV</b> =  0, <b>RANDOM_IV</b>, <b>UNPREDICTABLE_RANDOM_IV</b>, <b>INTERNALLY_GENERATED_IV</b>, <br>&nbsp;&nbsp;<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="_x_m_a_c_ca1" doxytag="XMACC::XMACC"></a>&nbsp;</td><td class="memItemRight" valign=bottom><b>XMACC</b> (const byte *key, word32 counter=0xffffffff)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_message_authentication_code_final_templatea3">SetKey</a> (const byte *key, unsigned int length, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;param=<a class="el" href="cryptlib_8h.html#a3">g_nullNameValuePairs</a>)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set or reset the key of this object </em> <a href="#_message_authentication_code_final_templatea3"></a><em><br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_message_authentication_code_final_templatea4" doxytag="XMACC::Clone"></a><a class="el" href="class_clonable.html">Clonable</a> *&nbsp;</td><td class="memItemRight" valign=bottom><b>Clone</b> ()</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_zlib_decompressora18" doxytag="XMACC::Clone"></a>virtual <a class="el" href="class_clonable.html">Clonable</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_zlib_decompressora18">Clone</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</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_ca5" doxytag="XMACC::Update"></a>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca5">Update</a> (const byte *input, unsigned int length)=0</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">process more input <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca6" doxytag="XMACC::CreateUpdateSpace"></a>virtual byte *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca6">CreateUpdateSpace</a> (unsigned int &amp;size)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">request space to write input into <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea13">Final</a> (byte *digest)</td></tr><tr><td class="mdescLeft">&nbsp;</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_ca8" doxytag="XMACC::Restart"></a>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca8">Restart</a> ()</td></tr><tr><td class="mdescLeft">&nbsp;</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><a name="_x_m_a_c_ca9" doxytag="XMACC::DigestSize"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca9">DigestSize</a> () const=0</td></tr><tr><td class="mdescLeft">&nbsp;</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="_x_m_a_c_ca10" doxytag="XMACC::BlockSize"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca10">BlockSize</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</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 name="_x_m_a_c_ca11" doxytag="XMACC::OptimalBlockSize"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca11">OptimalBlockSize</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">input to <a class="el" href="class_hash_transformation.html#_x_m_a_c_ca5">Update()</a> should have length a multiple of this for optimal speed <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea14" doxytag="XMACC::CalculateDigest"></a>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea14">CalculateDigest</a> (byte *digest, const byte *input, unsigned int length)</td></tr><tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea15">Verify</a> (const byte *digest)</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::VerifyDigest"></a>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea16">VerifyDigest</a> (const byte *digest, const byte *input, unsigned int length)</td></tr><tr><td class="mdescLeft">&nbsp;</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_ca15" doxytag="XMACC::TruncatedFinal"></a>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca15">TruncatedFinal</a> (byte *digest, unsigned int digestSize)=0</td></tr><tr><td class="mdescLeft">&nbsp;</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="_x_m_a_c_c___basea17" doxytag="XMACC::CalculateTruncatedDigest"></a>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.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">&nbsp;</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="XMACC::TruncatedVerify"></a>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca17">TruncatedVerify</a> (const byte *digest, unsigned int digestLength)</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::VerifyTruncatedDigest"></a>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.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">&nbsp;</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="XMACC::AlgorithmName"></a>virtual std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_zlib_decompressora17">AlgorithmName</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</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="_x_m_a_c_c___basea21" doxytag="XMACC::MinKeyLength"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea21">MinKeyLength</a> () const=0</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::MaxKeyLength"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea22">MaxKeyLength</a> () const=0</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::DefaultKeyLength"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea23">DefaultKeyLength</a> () const=0</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::GetValidKeyLength"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea24">GetValidKeyLength</a> (unsigned int n) const=0</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns the smallest valid key length in bytes that is &gt;= 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="XMACC::IsValidKeyLength"></a>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea25">IsValidKeyLength</a> (unsigned int n) const</td></tr><tr><td class="mdescLeft">&nbsp;</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><a name="_x_m_a_c_c___basea27" doxytag="XMACC::SetKeyWithRounds"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea27">SetKeyWithRounds</a> (const byte *key, unsigned int length, int rounds)</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::SetKeyWithIV"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea28">SetKeyWithIV</a> (const byte *key, unsigned int length, const byte *iv)</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::IVRequirement"></a>virtual IV_Requirement&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea29">IVRequirement</a> () const=0</td></tr><tr><td class="mdescLeft">&nbsp;</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&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea30">IsResynchronizable</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</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="XMACC::CanUseRandomIVs"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea31">CanUseRandomIVs</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns whether this object can use random IVs (in addition to ones returned by GetNextIV) <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea32" doxytag="XMACC::CanUsePredictableIVs"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea32">CanUsePredictableIVs</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns whether this object can use random but possibly predictable IVs (in addition to ones returned by GetNextIV) <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___basea33" doxytag="XMACC::CanUseStructuredIVs"></a>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_c___basea33">CanUseStructuredIVs</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns whether this object can use structured IVs, for example a counter (in addition to ones returned by GetNextIV) <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca32" doxytag="XMACC::IVSize"></a>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca32">IVSize</a> () const</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns size of IVs used by this object <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_ca33" doxytag="XMACC::Resynchronize"></a>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca33">Resynchronize</a> (const byte *IV)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">resynchronize with an IV <br><br></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_x_m_a_c_c.html#_x_m_a_c_ca34">GetNextIV</a> (byte *IV)</td></tr><tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a secure IV for the next message </em> <a href="#_x_m_a_c_ca34"></a><em><br><br></td></tr><tr><td colspan=2><br><h2>Protected Member Functions</h2></td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___baseb7" doxytag="XMACC::ThrowIfInvalidTruncatedSize"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>ThrowIfInvalidTruncatedSize</b> (unsigned int size) const</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___baseb8" doxytag="XMACC::ThrowIfInvalidKeyLength"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>ThrowIfInvalidKeyLength</b> (const <a class="el" href="class_algorithm.html">Algorithm</a> &amp;algorithm, unsigned int length)</td></tr><tr><td class="memItemLeft" nowrap align=right valign=top><a name="_x_m_a_c_c___baseb9" doxytag="XMACC::AssertValidKeyLength"></a>void&nbsp;</td><td class="memItemRight" valign=bottom><b>AssertValidKeyLength</b> (unsigned int length) const</td></tr></table><hr><h2>Member Function Documentation</h2><a name="_message_authentication_code_final_templatea3" doxytag="XMACC::SetKey"></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"> void <a class="el" href="class_message_authentication_code_final_template.html">MessageAuthenticationCodeFinalTemplate</a>&lt; XMACC_Base&lt; T &gt; , XMACC_Base&lt; T &gt;   &gt;::SetKey </td>          <td class="md" valign="top">(&nbsp;</td>          <td class="md" nowrap valign="top">const byte *&nbsp;</td>          <td class="mdname" nowrap> <em>key</em>, </td>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -