📄 class_h_m_a_c.html
字号:
<tr><td class="mdescLeft"> </td><td class="mdescRight">request space to write input into <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#a0b8c7a110d8968268fd02ec32b9a8e8">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="#a0b8c7a110d8968268fd02ec32b9a8e8"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="09c66b86bbe3c13ea9e8d74775696d42"></a><!-- doxytag: member="HMAC::BlockSize" ref="09c66b86bbe3c13ea9e8d74775696d42" args="() const" -->virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#09c66b86bbe3c13ea9e8d74775696d42">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></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="15944a7b920e2c24bd1cb67d0303dd2a"></a><!-- doxytag: member="HMAC::OptimalDataAlignment" ref="15944a7b920e2c24bd1cb67d0303dd2a" args="() const" -->virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#15944a7b920e2c24bd1cb67d0303dd2a">OptimalDataAlignment</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns how input should be aligned for optimal performance <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="f8124c4fca23b74bbdc43660bdae692c"></a><!-- doxytag: member="HMAC::CalculateDigest" ref="f8124c4fca23b74bbdc43660bdae692c" args="(byte *digest, const byte *input, size_t length)" -->virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#f8124c4fca23b74bbdc43660bdae692c">CalculateDigest</a> (byte *digest, const byte *input, size_t 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#afabefaf445b65d3ba0d8e1c0294afe5" title="process more input">Update()</a> and <a class="el" href="class_hash_transformation.html#a0b8c7a110d8968268fd02ec32b9a8e8" title="compute hash for current message, then restart for a new message">Final()</a> separately <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#16c4aecd047015d513feef4ed5b929ba">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="#16c4aecd047015d513feef4ed5b929ba"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="cad96df68e70d922683e5063057130b2"></a><!-- doxytag: member="HMAC::VerifyDigest" ref="cad96df68e70d922683e5063057130b2" args="(const byte *digest, const byte *input, size_t length)" -->virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#cad96df68e70d922683e5063057130b2">VerifyDigest</a> (const byte *digest, const byte *input, size_t 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#afabefaf445b65d3ba0d8e1c0294afe5" title="process more input">Update()</a> and <a class="el" href="class_hash_transformation.html#16c4aecd047015d513feef4ed5b929ba" title="verify that digest is a valid digest for the current message, then reinitialize the...">Verify()</a> separately <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0b6917657eaec935750fd83e28270d76"></a><!-- doxytag: member="HMAC::CalculateTruncatedDigest" ref="0b6917657eaec935750fd83e28270d76" args="(byte *digest, size_t digestSize, const byte *input, size_t length)" -->virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#0b6917657eaec935750fd83e28270d76">CalculateTruncatedDigest</a> (byte *digest, size_t digestSize, const byte *input, size_t length)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#f8124c4fca23b74bbdc43660bdae692c" title="use this if your input is in one piece and you don't want to call Update() and Final()...">CalculateDigest()</a> <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0f6069eadf492d970c3eb8cdf656e742"></a><!-- doxytag: member="HMAC::TruncatedVerify" ref="0f6069eadf492d970c3eb8cdf656e742" args="(const byte *digest, size_t digestLength)" -->virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#0f6069eadf492d970c3eb8cdf656e742">TruncatedVerify</a> (const byte *digest, size_t digestLength)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#16c4aecd047015d513feef4ed5b929ba" title="verify that digest is a valid digest for the current message, then reinitialize the...">Verify()</a> <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="7958e99717019e8b9f91672bdfe9e086"></a><!-- doxytag: member="HMAC::VerifyTruncatedDigest" ref="7958e99717019e8b9f91672bdfe9e086" args="(const byte *digest, size_t digestLength, const byte *input, size_t length)" -->virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#7958e99717019e8b9f91672bdfe9e086">VerifyTruncatedDigest</a> (const byte *digest, size_t digestLength, const byte *input, size_t length)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">truncated version of <a class="el" href="class_hash_transformation.html#cad96df68e70d922683e5063057130b2" title="use this if your input is in one piece and you don't want to call Update() and Verify()...">VerifyDigest()</a> <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="d0016ba2d505c23aa85aad49e6c19bb7"></a><!-- doxytag: member="HMAC::Clone" ref="d0016ba2d505c23aa85aad49e6c19bb7" args="() const" -->virtual <a class="el" href="class_clonable.html">Clonable</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#d0016ba2d505c23aa85aad49e6c19bb7">Clone</a> () const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">this is not implemented by most classes yet <br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="2229cdb9d7ac7e2cf3b02b39ae59ad77"></a><!-- doxytag: member="HMAC::IsValidKeyLength" ref="2229cdb9d7ac7e2cf3b02b39ae59ad77" args="(size_t n) const" -->virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#2229cdb9d7ac7e2cf3b02b39ae59ad77">IsValidKeyLength</a> (size_t n) const</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">returns whether n is a valid key length <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_simple_keying_interface.html#df3c29b3ef3af74788a58c7c49887fd7">SetKey</a> (const byte *key, size_t length, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &params=<a class="el" href="cryptlib_8h.html#d3205973dd1afa14090a683154c1109c">g_nullNameValuePairs</a>)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">set or reset the key of this object <a href="#df3c29b3ef3af74788a58c7c49887fd7"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="0401f9c67930805180964bc02ae0ac1c"></a><!-- doxytag: member="HMAC::SetKeyWithRounds" ref="0401f9c67930805180964bc02ae0ac1c" args="(const byte *key, size_t length, int rounds)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#0401f9c67930805180964bc02ae0ac1c">SetKeyWithRounds</a> (const byte *key, size_t length, int rounds)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#df3c29b3ef3af74788a58c7c49887fd7" 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" nowrap align="right" valign="top"><a class="anchor" name="c25e27eaeae2e909741c07de93caef49"></a><!-- doxytag: member="HMAC::SetKeyWithIV" ref="c25e27eaeae2e909741c07de93caef49" args="(const byte *key, size_t length, const byte *iv)" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#c25e27eaeae2e909741c07de93caef49">SetKeyWithIV</a> (const byte *key, size_t length, const byte *iv)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#df3c29b3ef3af74788a58c7c49887fd7" 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" nowrap align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#71039112353cc70e9859ebd95037cc1a">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) <a href="#71039112353cc70e9859ebd95037cc1a"></a><br></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="a09fd0893ac8c6068e07ce30bb55c1d9"></a><!-- doxytag: member="HMAC::CanUseRandomIVs" ref="a09fd0893ac8c6068e07ce30bb55c1d9" args="() const" -->bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a09fd0893ac8c6068e07ce30bb55c1d9">CanUseRandomIVs</a> () const</td></tr><tr><td class="mdescLeft"> </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" nowrap align="right" valign="top"><a class="anchor" name="b98803e8744b73663e7e9c872eef822b"></a><!-- doxytag: member="HMAC::CanUsePredictableIVs" ref="b98803e8744b73663e7e9c872eef822b" args="() const" -->bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#b98803e8744b73663e7e9c872eef822b">CanUsePredictableIVs</a> () const</td></tr><tr><td class="mdescLeft"> </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" nowrap align="right" valign="top"><a class="anchor" name="fbf7065f7db5439d471d1bcc260d3bd5"></a><!-- doxytag: member="HMAC::CanUseStructuredIVs" ref="fbf7065f7db5439d471d1bcc260d3bd5" args="() const" -->bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#fbf7065f7db5439d471d1bcc260d3bd5">CanUseStructuredIVs</a> () const</td></tr><tr><td class="mdescLeft"> </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" nowrap align="right" valign="top"><a class="anchor" name="8ee3f5f9c00d193bf9d8fd8aa46ccbb2"></a><!-- doxytag: member="HMAC::Resynchronize" ref="8ee3f5f9c00d193bf9d8fd8aa46ccbb2" args="(const byte *IV)" -->virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#8ee3f5f9c00d193bf9d8fd8aa46ccbb2">Resynchronize</a> (const byte *IV)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">resynchronize with an IV <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_simple_keying_interface.html#917224bb6df7431d6469e7a10feac5fa">GetNextIV</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, byte *IV)</td></tr><tr><td class="mdescLeft"> </td><td class="mdescRight">get a secure IV for the next message <a href="#917224bb6df7431d6469e7a10feac5fa"></a><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="04d21d622f4f8d0d469d9e9231f0c3f8"></a><!-- doxytag: member="HMAC::StaticAlgorithmName" ref="04d21d622f4f8d0d469d9e9231f0c3f8" args="()" -->static std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_a_c.html#04d21d622f4f8d0d469d9e9231f0c3f8">StaticAlgorithmName</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="5bf532b28513e7e1d3d7202fd044b4c9"></a><!-- doxytag: member="HMAC::StaticGetValidKeyLength" ref="5bf532b28513e7e1d3d7202fd044b4c9" args="(size_t n)" -->static size_t __cdecl </td><td class="memItemRight" valign="bottom"><a class="el" href="class_variable_key_length.html#5bf532b28513e7e1d3d7202fd044b4c9">StaticGetValidKeyLength</a> (size_t n)</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="d3fd5a049bc734daff8c1f2983863488"></a><!-- doxytag: member="HMAC::DIGESTSIZE" ref="d3fd5a049bc734daff8c1f2983863488" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_a_c.html#d3fd5a049bc734daff8c1f2983863488">DIGESTSIZE</a> = T::DIGESTSIZE</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="c0d6aa69389f52c26cbe95fceebf7f2c"></a><!-- doxytag: member="HMAC::BLOCKSIZE" ref="c0d6aa69389f52c26cbe95fceebf7f2c" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_a_c.html#c0d6aa69389f52c26cbe95fceebf7f2c">BLOCKSIZE</a> = T::BLOCKSIZE</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="ff5e41e92f02a8bb6a976b748e4e2ec9"></a><!-- doxytag: member="HMAC::MIN_KEYLENGTH" ref="ff5e41e92f02a8bb6a976b748e4e2ec9" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_variable_key_length.html#ff5e41e92f02a8bb6a976b748e4e2ec9">MIN_KEYLENGTH</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="26f33392d61edcaa678ae65002842d36"></a><!-- doxytag: member="HMAC::MAX_KEYLENGTH" ref="26f33392d61edcaa678ae65002842d36" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_variable_key_length.html#26f33392d61edcaa678ae65002842d36">MAX_KEYLENGTH</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="3788ee30b190bdc0c0e89d2721162614"></a><!-- doxytag: member="HMAC::DEFAULT_KEYLENGTH" ref="3788ee30b190bdc0c0e89d2721162614" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_variable_key_length.html#3788ee30b190bdc0c0e89d2721162614">DEFAULT_KEYLENGTH</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="caa6d8918bbd17c2da84e752df7bd285"></a><!-- doxytag: member="HMAC::KEYLENGTH_MULTIPLE" ref="caa6d8918bbd17c2da84e752df7bd285" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_variable_key_length.html#caa6d8918bbd17c2da84e752df7bd285">KEYLENGTH_MULTIPLE</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="efee62ae9b6dd90ede7211844235fc7b"></a><!-- doxytag: member="HMAC::IV_REQUIREMENT" ref="efee62ae9b6dd90ede7211844235fc7b" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_variable_key_length.html#efee62ae9b6dd90ede7211844235fc7b">IV_REQUIREMENT</a></td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e5687e4a40c5289764feac86eed81cc2"></a><!-- doxytag: member="HMAC::IV_LENGTH" ref="e5687e4a40c5289764feac86eed81cc2" args="" -->static const int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_variable_key_length.html#e5687e4a40c5289764feac86eed81cc2">IV_LENGTH</a></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="a5ec52ba47376b2ed7e707f649551c52"></a><!-- doxytag: member="HMAC::AccessIpad" ref="a5ec52ba47376b2ed7e707f649551c52" args="()" -->byte * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_a_c___base.html#a5ec52ba47376b2ed7e707f649551c52">AccessIpad</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="1eb74bfc58d11822a7bfe120d6be5ded"></a><!-- doxytag: member="HMAC::AccessOpad" ref="1eb74bfc58d11822a7bfe120d6be5ded" args="()" -->byte * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_a_c___base.html#1eb74bfc58d11822a7bfe120d6be5ded">AccessOpad</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="e434fa6e09440f0b64118c98fdc5cc2b"></a><!-- doxytag: member="HMAC::AccessInnerHash" ref="e434fa6e09440f0b64118c98fdc5cc2b" args="()" -->byte * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_h_m_a_c___base.html#e434fa6e09440f0b64118c98fdc5cc2b">AccessInnerHash</a> ()</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="64ba03d31c489dc32b50e00d377d8032"></a><!-- doxytag: member="HMAC::ThrowIfInvalidTruncatedSize" ref="64ba03d31c489dc32b50e00d377d8032" args="(size_t size) const" -->void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_hash_transformation.html#64ba03d31c489dc32b50e00d377d8032">ThrowIfInvalidTruncatedSize</a> (size_t size) const</td></tr><tr><td class="memItemLeft" nowrap align="right" valign="top"><a class="anchor" name="b6afcfe922c393cc1954d37fc4264637"></a><!-- doxytag: member="HMAC::GetAlgorithm" ref="b6afcfe922c393cc1954d37fc4264637" args="() const=0" -->virtual const <a class="el" href="class_algorithm.html">Algorithm</a> & </td><td class="memItemRight" valign="bottom"><b>GetAlgorithm</b> () const=0</td></tr>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -