<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://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"/> <meta http-equiv="X-UA-Compatible" content="IE=9"/> <meta name="generator" content="Doxygen 1.8.15"/> <meta name="viewport" content="width=device-width, initial-scale=1"/> <title>Crypto++: CBC_ModeBase Class Reference</title> <link href="tabs.css" rel="stylesheet" type="text/css"/> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="dynsections.js"></script> <link href="doxygen.css" rel="stylesheet" type="text/css" /> </head> <body> <div id="top"><!-- do not remove this div, it is closed by doxygen! --> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td id="projectalign" style="padding-left: 0.5em;"> <div id="projectname">Crypto++  <span id="projectnumber">7.0</span> </div> <div id="projectbrief">Free C++ class library of cryptographic schemes</div> </td> </tr> </tbody> </table> </div> <!-- end header part --> <!-- Generated by Doxygen 1.8.15 --> <script type="text/javascript" src="menudata.js"></script> <script type="text/javascript" src="menu.js"></script> <script type="text/javascript"> /* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&dn=gpl-2.0.txt GPL-v2 */ $(function() { initMenu('',false,false,'search.php','Search'); }); /* @license-end */</script> <div id="main-nav"></div> </div><!-- top --> <div class="header"> <div class="summary"> <a href="#pub-methods">Public Member Functions</a> | <a href="#pub-static-methods">Static Public Member Functions</a> | <a href="class_c_b_c___mode_base-members.html">List of all members</a> </div> <div class="headertitle"> <div class="title">CBC_ModeBase Class Reference</div> </div> </div><!--header--> <div class="contents"> <p>CBC block cipher mode of operation default implementation. <a href="class_c_b_c___mode_base.html#details">More...</a></p> <div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;"> <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for CBC_ModeBase:</div> <div id="dynsection-0-summary" class="dynsummary" style="display:block;"> </div> <div id="dynsection-0-content" class="dyncontent" style="display:none;"> <div class="center"> <img src="class_c_b_c___mode_base.png" usemap="#CBC_5FModeBase_map" alt=""/> <map id="CBC_5FModeBase_map" name="CBC_5FModeBase_map"> <area href="class_block_oriented_cipher_mode_base.html" title="Block cipher mode of operation default implementation." alt="BlockOrientedCipherModeBase" shape="rect" coords="100,280,290,304"/> <area href="class_cipher_mode_base.html" title="Block cipher mode of operation information." alt="CipherModeBase" shape="rect" coords="100,224,290,248"/> <area href="class_symmetric_cipher.html" title="Interface for one direction (encryption or decryption) of a stream cipher or cipher mode." alt="SymmetricCipher" shape="rect" coords="100,168,290,192"/> <area href="class_simple_keying_interface.html" title="Interface for algorithms that take byte strings as keys." alt="SimpleKeyingInterface" shape="rect" coords="0,112,190,136"/> <area href="class_stream_transformation.html" title="Interface for the data processing portion of stream ciphers." alt="StreamTransformation" shape="rect" coords="200,112,390,136"/> <area href="class_algorithm.html" title="Interface for all crypto algorithms." alt="Algorithm" shape="rect" coords="200,56,390,80"/> <area href="class_clonable.html" title="Interface for cloning objects." alt="Clonable" shape="rect" coords="200,0,390,24"/> <area href="class_c_b_c___decryption.html" title="CBC block cipher mode of operation decryption operation." alt="CBC_Decryption" shape="rect" coords="0,392,190,416"/> <area href="class_c_b_c___encryption.html" title="CBC block cipher mode of operation encryption operation." alt="CBC_Encryption" shape="rect" coords="200,392,390,416"/> <area href="class_c_b_c___c_t_s___decryption.html" title="CBC-CTS block cipher mode of operation decryption operation." alt="CBC_CTS_Decryption" shape="rect" coords="0,448,190,472"/> <area href="class_c_b_c___c_t_s___encryption.html" title="CBC-CTS block cipher mode of operation encryption operation." alt="CBC_CTS_Encryption" shape="rect" coords="200,448,390,472"/> </map> </div></div> <table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr class="memitem:a3e792aeeb087bde5258a676c3b157acf"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6e">IV_Requirement</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_b_c___mode_base.html#a3e792aeeb087bde5258a676c3b157acf">IVRequirement</a> () const</td></tr> <tr class="memdesc:a3e792aeeb087bde5258a676c3b157acf"><td class="mdescLeft"> </td><td class="mdescRight">Minimal requirement for secure IVs. <a href="#a3e792aeeb087bde5258a676c3b157acf">More...</a><br /></td></tr> <tr class="separator:a3e792aeeb087bde5258a676c3b157acf"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5afa761a6188f939aace9443096236a6"><td class="memItemLeft" align="right" valign="top"><a id="a5afa761a6188f939aace9443096236a6"></a> bool </td><td class="memItemRight" valign="bottom"><b>RequireAlignedInput</b> () const</td></tr> <tr class="separator:a5afa761a6188f939aace9443096236a6"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a43530a8977b63abdf11d35f971b29f30"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_c_b_c___mode_base.html#a43530a8977b63abdf11d35f971b29f30">MinLastBlockSize</a> () const</td></tr> <tr class="memdesc:a43530a8977b63abdf11d35f971b29f30"><td class="mdescLeft"> </td><td class="mdescRight">Provides the size of the last block. <a href="#a43530a8977b63abdf11d35f971b29f30">More...</a><br /></td></tr> <tr class="separator:a43530a8977b63abdf11d35f971b29f30"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_class_block_oriented_cipher_mode_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_block_oriented_cipher_mode_base')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_block_oriented_cipher_mode_base.html">BlockOrientedCipherModeBase</a></td></tr> <tr class="memitem:a1d095f1ee08abb9f03f0ed16a32c6b04 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_oriented_cipher_mode_base.html#a1d095f1ee08abb9f03f0ed16a32c6b04">UncheckedSetKey</a> (const byte *key, unsigned int length, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &params)</td></tr> <tr class="memdesc:a1d095f1ee08abb9f03f0ed16a32c6b04 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Sets the key for this object without performing parameter validation. <a href="class_block_oriented_cipher_mode_base.html#a1d095f1ee08abb9f03f0ed16a32c6b04">More...</a><br /></td></tr> <tr class="separator:a1d095f1ee08abb9f03f0ed16a32c6b04 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ade6a00d82e063bcee5d1db3cd294751c inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c">MandatoryBlockSize</a> () const</td></tr> <tr class="memdesc:ade6a00d82e063bcee5d1db3cd294751c inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Provides the mandatory block size of the cipher. <a href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c">More...</a><br /></td></tr> <tr class="separator:ade6a00d82e063bcee5d1db3cd294751c inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a7721eef9f8c5c0c4ca16048c41feed8f inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_oriented_cipher_mode_base.html#a7721eef9f8c5c0c4ca16048c41feed8f">IsRandomAccess</a> () const</td></tr> <tr class="memdesc:a7721eef9f8c5c0c4ca16048c41feed8f inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Determines whether the cipher supports random access. <a href="class_block_oriented_cipher_mode_base.html#a7721eef9f8c5c0c4ca16048c41feed8f">More...</a><br /></td></tr> <tr class="separator:a7721eef9f8c5c0c4ca16048c41feed8f inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a503746952c074403bf2d72374f3d6672 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_oriented_cipher_mode_base.html#a503746952c074403bf2d72374f3d6672">IsSelfInverting</a> () const</td></tr> <tr class="memdesc:a503746952c074403bf2d72374f3d6672 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Determines whether the cipher is self-inverting. <a href="class_block_oriented_cipher_mode_base.html#a503746952c074403bf2d72374f3d6672">More...</a><br /></td></tr> <tr class="separator:a503746952c074403bf2d72374f3d6672 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a3f08ba1e5fe34ab0cd379a54da828938 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_oriented_cipher_mode_base.html#a3f08ba1e5fe34ab0cd379a54da828938">IsForwardTransformation</a> () const</td></tr> <tr class="memdesc:a3f08ba1e5fe34ab0cd379a54da828938 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Determines if the cipher is being operated in its forward direction. <a href="class_block_oriented_cipher_mode_base.html#a3f08ba1e5fe34ab0cd379a54da828938">More...</a><br /></td></tr> <tr class="separator:a3f08ba1e5fe34ab0cd379a54da828938 inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af56879c9784d5f70120f46fb60941b9f inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_oriented_cipher_mode_base.html#af56879c9784d5f70120f46fb60941b9f">Resynchronize</a> (const byte *iv, int length=-1)</td></tr> <tr class="memdesc:af56879c9784d5f70120f46fb60941b9f inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Resynchronize with an IV. <a href="class_block_oriented_cipher_mode_base.html#af56879c9784d5f70120f46fb60941b9f">More...</a><br /></td></tr> <tr class="separator:af56879c9784d5f70120f46fb60941b9f inherit pub_methods_class_block_oriented_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_class_cipher_mode_base"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_cipher_mode_base')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_cipher_mode_base.html">CipherModeBase</a></td></tr> <tr class="memitem:aca95bcde5d8f5be6f45c216c1d7b21f6 inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_cipher_mode_base.html#aca95bcde5d8f5be6f45c216c1d7b21f6">MinKeyLength</a> () const</td></tr> <tr class="memdesc:aca95bcde5d8f5be6f45c216c1d7b21f6 inherit pub_methods_class_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Returns smallest valid key length. <a href="class_cipher_mode_base.html#aca95bcde5d8f5be6f45c216c1d7b21f6">More...</a><br /></td></tr> <tr class="separator:aca95bcde5d8f5be6f45c216c1d7b21f6 inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8e801b0482663c7feae7db35e31d2508 inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_cipher_mode_base.html#a8e801b0482663c7feae7db35e31d2508">MaxKeyLength</a> () const</td></tr> <tr class="memdesc:a8e801b0482663c7feae7db35e31d2508 inherit pub_methods_class_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Returns largest valid key length. <a href="class_cipher_mode_base.html#a8e801b0482663c7feae7db35e31d2508">More...</a><br /></td></tr> <tr class="separator:a8e801b0482663c7feae7db35e31d2508 inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9b16d528a9a2657a7efbd85e45a80571 inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_cipher_mode_base.html#a9b16d528a9a2657a7efbd85e45a80571">DefaultKeyLength</a> () const</td></tr> <tr class="memdesc:a9b16d528a9a2657a7efbd85e45a80571 inherit pub_methods_class_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Returns default key length. <a href="class_cipher_mode_base.html#a9b16d528a9a2657a7efbd85e45a80571">More...</a><br /></td></tr> <tr class="separator:a9b16d528a9a2657a7efbd85e45a80571 inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0d81c8b9da00b08f0696603e4992c57a inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_cipher_mode_base.html#a0d81c8b9da00b08f0696603e4992c57a">GetValidKeyLength</a> (size_t n) const</td></tr> <tr class="memdesc:a0d81c8b9da00b08f0696603e4992c57a inherit pub_methods_class_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Returns a valid key length for the algorithm. <a href="class_cipher_mode_base.html#a0d81c8b9da00b08f0696603e4992c57a">More...</a><br /></td></tr> <tr class="separator:a0d81c8b9da00b08f0696603e4992c57a inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a47431eef8c1e41afd62b99a9e9202b58 inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_cipher_mode_base.html#a47431eef8c1e41afd62b99a9e9202b58">IsValidKeyLength</a> (size_t n) const</td></tr> <tr class="memdesc:a47431eef8c1e41afd62b99a9e9202b58 inherit pub_methods_class_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Returns whether keylength is a valid key length. <a href="class_cipher_mode_base.html#a47431eef8c1e41afd62b99a9e9202b58">More...</a><br /></td></tr> <tr class="separator:a47431eef8c1e41afd62b99a9e9202b58 inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac534eff2d4e72b61cc848af0f94805de inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_cipher_mode_base.html#ac534eff2d4e72b61cc848af0f94805de">OptimalDataAlignment</a> () const</td></tr> <tr class="memdesc:ac534eff2d4e72b61cc848af0f94805de inherit pub_methods_class_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Provides input and output data alignment for optimal performance. <a href="class_cipher_mode_base.html#ac534eff2d4e72b61cc848af0f94805de">More...</a><br /></td></tr> <tr class="separator:ac534eff2d4e72b61cc848af0f94805de inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a07313a860fd63d27f9b7aeeb8c2b36c2 inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_cipher_mode_base.html#a07313a860fd63d27f9b7aeeb8c2b36c2">IVSize</a> () const</td></tr> <tr class="memdesc:a07313a860fd63d27f9b7aeeb8c2b36c2 inherit pub_methods_class_cipher_mode_base"><td class="mdescLeft"> </td><td class="mdescRight">Returns length of the IV accepted by this object. <a href="class_cipher_mode_base.html#a07313a860fd63d27f9b7aeeb8c2b36c2">More...</a><br /></td></tr> <tr class="separator:a07313a860fd63d27f9b7aeeb8c2b36c2 inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a9bccbd9e2c1a76282ddb6f1a79b3d80e inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top"><a id="a9bccbd9e2c1a76282ddb6f1a79b3d80e"></a> void </td><td class="memItemRight" valign="bottom"><b>SetCipher</b> (<a class="el" href="class_block_cipher.html">BlockCipher</a> &cipher)</td></tr> <tr class="separator:a9bccbd9e2c1a76282ddb6f1a79b3d80e inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a6bc4f26f7c59f484073d04829274875a inherit pub_methods_class_cipher_mode_base"><td class="memItemLeft" align="right" valign="top"><a id="a6bc4f26f7c59f484073d04829274875a"></a> void </td><td class="memItemRight" valign="bottom"><b>SetCipherWithIV</b> (<a class="el" href="class_block_cipher.html">BlockCipher</a> &cipher, const byte *iv, int feedbackSize=0)</td></tr> <tr class="separator:a6bc4f26f7c59f484073d04829274875a inherit pub_methods_class_cipher_mode_base"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_class_simple_keying_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_simple_keying_interface')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_simple_keying_interface.html">SimpleKeyingInterface</a></td></tr> <tr class="memitem:adf3c29b3ef3af74788a58c7c49887fd7 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">virtual void </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> &params=<a class="el" href="cryptlib_8h.html#a04be65ada92ccb1e6aac0d94b4cc394b">g_nullNameValuePairs</a>)</td></tr> <tr class="memdesc:adf3c29b3ef3af74788a58c7c49887fd7 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Sets or reset the key of this object. <a href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7">More...</a><br /></td></tr> <tr class="separator:adf3c29b3ef3af74788a58c7c49887fd7 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a0401f9c67930805180964bc02ae0ac1c inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">void </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 class="memdesc:a0401f9c67930805180964bc02ae0ac1c inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Sets or reset the key of this object. <a href="class_simple_keying_interface.html#a0401f9c67930805180964bc02ae0ac1c">More...</a><br /></td></tr> <tr class="separator:a0401f9c67930805180964bc02ae0ac1c inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a5b4e358c514fd743840967bc595a34c2 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">void </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 class="memdesc:a5b4e358c514fd743840967bc595a34c2 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Sets or reset the key of this object. <a href="class_simple_keying_interface.html#a5b4e358c514fd743840967bc595a34c2">More...</a><br /></td></tr> <tr class="separator:a5b4e358c514fd743840967bc595a34c2 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac25e27eaeae2e909741c07de93caef49 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">void </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 class="memdesc:ac25e27eaeae2e909741c07de93caef49 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Sets or reset the key of this object. <a href="class_simple_keying_interface.html#ac25e27eaeae2e909741c07de93caef49">More...</a><br /></td></tr> <tr class="separator:ac25e27eaeae2e909741c07de93caef49 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a71039112353cc70e9859ebd95037cc1a inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a71039112353cc70e9859ebd95037cc1a">IsResynchronizable</a> () const</td></tr> <tr class="memdesc:a71039112353cc70e9859ebd95037cc1a inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Determines if the object can be resynchronized. <a href="class_simple_keying_interface.html#a71039112353cc70e9859ebd95037cc1a">More...</a><br /></td></tr> <tr class="separator:a71039112353cc70e9859ebd95037cc1a inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa09fd0893ac8c6068e07ce30bb55c1d9 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#aa09fd0893ac8c6068e07ce30bb55c1d9">CanUseRandomIVs</a> () const</td></tr> <tr class="memdesc:aa09fd0893ac8c6068e07ce30bb55c1d9 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Determines if the object can use random IVs. <a href="class_simple_keying_interface.html#aa09fd0893ac8c6068e07ce30bb55c1d9">More...</a><br /></td></tr> <tr class="separator:aa09fd0893ac8c6068e07ce30bb55c1d9 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab98803e8744b73663e7e9c872eef822b inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ab98803e8744b73663e7e9c872eef822b">CanUsePredictableIVs</a> () const</td></tr> <tr class="memdesc:ab98803e8744b73663e7e9c872eef822b inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Determines if the object can use random but possibly predictable IVs. <a href="class_simple_keying_interface.html#ab98803e8744b73663e7e9c872eef822b">More...</a><br /></td></tr> <tr class="separator:ab98803e8744b73663e7e9c872eef822b inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:afbf7065f7db5439d471d1bcc260d3bd5 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#afbf7065f7db5439d471d1bcc260d3bd5">CanUseStructuredIVs</a> () const</td></tr> <tr class="memdesc:afbf7065f7db5439d471d1bcc260d3bd5 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Determines if the object can use structured IVs. <a href="class_simple_keying_interface.html#afbf7065f7db5439d471d1bcc260d3bd5">More...</a><br /></td></tr> <tr class="separator:afbf7065f7db5439d471d1bcc260d3bd5 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af2f7dd9da3a75651615b0ccae71f34a5 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#af2f7dd9da3a75651615b0ccae71f34a5">DefaultIVLength</a> () const</td></tr> <tr class="memdesc:af2f7dd9da3a75651615b0ccae71f34a5 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Provides the default size of an IV. <a href="class_simple_keying_interface.html#af2f7dd9da3a75651615b0ccae71f34a5">More...</a><br /></td></tr> <tr class="separator:af2f7dd9da3a75651615b0ccae71f34a5 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab94b9751aba4f3660accb673095180c0 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ab94b9751aba4f3660accb673095180c0">MinIVLength</a> () const</td></tr> <tr class="memdesc:ab94b9751aba4f3660accb673095180c0 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Provides the minimum size of an IV. <a href="class_simple_keying_interface.html#ab94b9751aba4f3660accb673095180c0">More...</a><br /></td></tr> <tr class="separator:ab94b9751aba4f3660accb673095180c0 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a8fc07e61d83ce9639d9b3608fb5dd8cb inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a8fc07e61d83ce9639d9b3608fb5dd8cb">MaxIVLength</a> () const</td></tr> <tr class="memdesc:a8fc07e61d83ce9639d9b3608fb5dd8cb inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Provides the maximum size of an IV. <a href="class_simple_keying_interface.html#a8fc07e61d83ce9639d9b3608fb5dd8cb">More...</a><br /></td></tr> <tr class="separator:a8fc07e61d83ce9639d9b3608fb5dd8cb inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac8277d1517add6fd455ca576bee57fe2 inherit pub_methods_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ac8277d1517add6fd455ca576bee57fe2">GetNextIV</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, byte *iv)</td></tr> <tr class="memdesc:ac8277d1517add6fd455ca576bee57fe2 inherit pub_methods_class_simple_keying_interface"><td class="mdescLeft"> </td><td class="mdescRight">Retrieves a secure IV for the next message. <a href="class_simple_keying_interface.html#ac8277d1517add6fd455ca576bee57fe2">More...</a><br /></td></tr> <tr class="separator:ac8277d1517add6fd455ca576bee57fe2 inherit pub_methods_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_class_stream_transformation"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_stream_transformation')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_stream_transformation.html">StreamTransformation</a></td></tr> <tr class="memitem:a8c9304fff5af593ee68d3cf0d33c06e9 inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_stream_transformation.html">StreamTransformation</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#a8c9304fff5af593ee68d3cf0d33c06e9">Ref</a> ()</td></tr> <tr class="memdesc:a8c9304fff5af593ee68d3cf0d33c06e9 inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Provides a reference to this object. <a href="class_stream_transformation.html#a8c9304fff5af593ee68d3cf0d33c06e9">More...</a><br /></td></tr> <tr class="separator:a8c9304fff5af593ee68d3cf0d33c06e9 inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af66ef64545279c01310718af3d627534 inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#af66ef64545279c01310718af3d627534">OptimalBlockSize</a> () const</td></tr> <tr class="memdesc:af66ef64545279c01310718af3d627534 inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Provides the input block size most efficient for this cipher. <a href="class_stream_transformation.html#af66ef64545279c01310718af3d627534">More...</a><br /></td></tr> <tr class="separator:af66ef64545279c01310718af3d627534 inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ab8422f6eee08fbc70069e222186e90de inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">virtual unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#ab8422f6eee08fbc70069e222186e90de">GetOptimalBlockSizeUsed</a> () const</td></tr> <tr class="memdesc:ab8422f6eee08fbc70069e222186e90de inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Provides the number of bytes used in the current block when processing at optimal block size. <a href="class_stream_transformation.html#ab8422f6eee08fbc70069e222186e90de">More...</a><br /></td></tr> <tr class="separator:ab8422f6eee08fbc70069e222186e90de inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a26feabde21bc4d1783195969733e3bb0 inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#a26feabde21bc4d1783195969733e3bb0">ProcessData</a> (byte *outString, const byte *inString, size_t length)=0</td></tr> <tr class="memdesc:a26feabde21bc4d1783195969733e3bb0 inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Encrypt or decrypt an array of bytes. <a href="class_stream_transformation.html#a26feabde21bc4d1783195969733e3bb0">More...</a><br /></td></tr> <tr class="separator:a26feabde21bc4d1783195969733e3bb0 inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:af48589443f77f4ed9ff185f9c1a26cbf inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">virtual size_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#af48589443f77f4ed9ff185f9c1a26cbf">ProcessLastBlock</a> (byte *outString, size_t outLength, const byte *inString, size_t inLength)</td></tr> <tr class="memdesc:af48589443f77f4ed9ff185f9c1a26cbf inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Encrypt or decrypt the last block of data. <a href="class_stream_transformation.html#af48589443f77f4ed9ff185f9c1a26cbf">More...</a><br /></td></tr> <tr class="separator:af48589443f77f4ed9ff185f9c1a26cbf inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a62db1393d64069b282e3d455b38cd0e5 inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">virtual bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#a62db1393d64069b282e3d455b38cd0e5">IsLastBlockSpecial</a> () const</td></tr> <tr class="memdesc:a62db1393d64069b282e3d455b38cd0e5 inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Determines if the last block receives special processing. <a href="class_stream_transformation.html#a62db1393d64069b282e3d455b38cd0e5">More...</a><br /></td></tr> <tr class="separator:a62db1393d64069b282e3d455b38cd0e5 inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:ac00f3fcc21f33f11c8efa4de67ff7774 inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#ac00f3fcc21f33f11c8efa4de67ff7774">ProcessString</a> (byte *inoutString, size_t length)</td></tr> <tr class="memdesc:ac00f3fcc21f33f11c8efa4de67ff7774 inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Encrypt or decrypt a string of bytes. <a href="class_stream_transformation.html#ac00f3fcc21f33f11c8efa4de67ff7774">More...</a><br /></td></tr> <tr class="separator:ac00f3fcc21f33f11c8efa4de67ff7774 inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a17951cb36412763e0d6bd9696177175d inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#a17951cb36412763e0d6bd9696177175d">ProcessString</a> (byte *outString, const byte *inString, size_t length)</td></tr> <tr class="memdesc:a17951cb36412763e0d6bd9696177175d inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Encrypt or decrypt a string of bytes. <a href="class_stream_transformation.html#a17951cb36412763e0d6bd9696177175d">More...</a><br /></td></tr> <tr class="separator:a17951cb36412763e0d6bd9696177175d inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a71a9bd33526fc7f227050075e7a78106 inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">byte </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#a71a9bd33526fc7f227050075e7a78106">ProcessByte</a> (byte input)</td></tr> <tr class="memdesc:a71a9bd33526fc7f227050075e7a78106 inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Encrypt or decrypt a byte. <a href="class_stream_transformation.html#a71a9bd33526fc7f227050075e7a78106">More...</a><br /></td></tr> <tr class="separator:a71a9bd33526fc7f227050075e7a78106 inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:aa60971c40c6cbcfb703ebe3d6495b6fc inherit pub_methods_class_stream_transformation"><td class="memItemLeft" align="right" valign="top">virtual void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_stream_transformation.html#aa60971c40c6cbcfb703ebe3d6495b6fc">Seek</a> (lword pos)</td></tr> <tr class="memdesc:aa60971c40c6cbcfb703ebe3d6495b6fc inherit pub_methods_class_stream_transformation"><td class="mdescLeft"> </td><td class="mdescRight">Seek to an absolute position. <a href="class_stream_transformation.html#aa60971c40c6cbcfb703ebe3d6495b6fc">More...</a><br /></td></tr> <tr class="separator:aa60971c40c6cbcfb703ebe3d6495b6fc inherit pub_methods_class_stream_transformation"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_class_algorithm"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_algorithm')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_algorithm.html">Algorithm</a></td></tr> <tr class="memitem:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#a1c77f5117ca2cd881baf26a364cfc606">Algorithm</a> (bool checkSelfTestStatus=true)</td></tr> <tr class="memdesc:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="mdescLeft"> </td><td class="mdescRight">Interface for all crypto algorithms. <a href="class_algorithm.html#a1c77f5117ca2cd881baf26a364cfc606">More...</a><br /></td></tr> <tr class="separator:a1c77f5117ca2cd881baf26a364cfc606 inherit pub_methods_class_algorithm"><td class="memSeparator" colspan="2"> </td></tr> <tr class="memitem:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="memItemLeft" align="right" valign="top">virtual std::string </td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#a4f31510a192d1121856efe8ad0a9b844">AlgorithmName</a> () const</td></tr> <tr class="memdesc:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="mdescLeft"> </td><td class="mdescRight">Provides the name of this algorithm. <a href="class_algorithm.html#a4f31510a192d1121856efe8ad0a9b844">More...</a><br /></td></tr> <tr class="separator:a4f31510a192d1121856efe8ad0a9b844 inherit pub_methods_class_algorithm"><td class="memSeparator" colspan="2"> </td></tr> <tr class="inherit_header pub_methods_class_clonable"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_class_clonable')"><img src="closed.png" alt="-"/> Public Member Functions inherited from <a class="el" href="class_clonable.html">Clonable</a></td></tr> <tr class="memitem:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="memItemLeft" align="right" valign="top">virtual <a class="el" href="class_clonable.html">Clonable</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#ad0016ba2d505c23aa85aad49e6c19bb7">Clone</a> () const</td></tr> <tr class="memdesc:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="mdescLeft"> </td><td class="mdescRight">Copies this object. <a href="class_clonable.html#ad0016ba2d505c23aa85aad49e6c19bb7">More...</a><br /></td></tr> <tr class="separator:ad0016ba2d505c23aa85aad49e6c19bb7 inherit pub_methods_class_clonable"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a> Static Public Member Functions</h2></td></tr> <tr class="memitem:a83a66593d4e130429070f78459317195"><td class="memItemLeft" align="right" valign="top"><a id="a83a66593d4e130429070f78459317195"></a> static const char * </td><td class="memItemRight" valign="bottom"><b>StaticAlgorithmName</b> ()</td></tr> <tr class="separator:a83a66593d4e130429070f78459317195"><td class="memSeparator" colspan="2"> </td></tr> </table><table class="memberdecls"> <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a> Additional Inherited Members</h2></td></tr> <tr class="inherit_header pub_types_class_simple_keying_interface"><td colspan="2" onclick="javascript:toggleInherit('pub_types_class_simple_keying_interface')"><img src="closed.png" alt="-"/> Public Types inherited from <a class="el" href="class_simple_keying_interface.html">SimpleKeyingInterface</a></td></tr> <tr class="memitem:a88201c180fbfaa9fef2715252546ad6e inherit pub_types_class_simple_keying_interface"><td class="memItemLeft" align="right" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6e">IV_Requirement</a> { <br />   <a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6ea1cc32e69fe4f385e54d9d482a2ab5a56">UNIQUE_IV</a> = 0, <a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6ea4520c4379ee3a1aed95a36e2235ba338">RANDOM_IV</a>, <a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6eaceff3ad4b12bcb6d7b61a5bd543a815c">UNPREDICTABLE_RANDOM_IV</a>, <a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6eab659bf6d2c470c50c14bfbab5b2d45ab">INTERNALLY_GENERATED_IV</a>, <br />   <a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6eac1d24de3dedd05c28516f452d3ace417">NOT_RESYNCHRONIZABLE</a> <br /> }</td></tr> <tr class="memdesc:a88201c180fbfaa9fef2715252546ad6e"><td class="mdescLeft"> </td><td class="mdescRight">Secure IVs requirements as enumerated values. <a href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6e">More...</a><br /></td></tr> <tr class="separator:a88201c180fbfaa9fef2715252546ad6e inherit pub_types_class_simple_keying_interface"><td class="memSeparator" colspan="2"> </td></tr> </table> <a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> <div class="textblock"><p>CBC block cipher mode of operation default implementation. </p> <p class="definition">Definition at line <a class="el" href="modes_8h_source.html#l00222">222</a> of file <a class="el" href="modes_8h_source.html">modes.h</a>.</p> </div><h2 class="groupheader">Member Function Documentation</h2> <a id="a3e792aeeb087bde5258a676c3b157acf"></a> <h2 class="memtitle"><span class="permalink"><a href="#a3e792aeeb087bde5258a676c3b157acf">◆ </a></span>IVRequirement()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname"><a class="el" href="class_simple_keying_interface.html#a88201c180fbfaa9fef2715252546ad6e">IV_Requirement</a> CBC_ModeBase::IVRequirement </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Minimal requirement for secure IVs. </p> <dl class="section return"><dt>Returns</dt><dd>the secure IV requirement of the algorithm </dd></dl> <p>Implements <a class="el" href="class_cipher_mode_base.html#aa79d2b3623c869ee47d00a94ca9c6dc5">CipherModeBase</a>.</p> <p class="definition">Definition at line <a class="el" href="modes_8h_source.html#l00227">227</a> of file <a class="el" href="modes_8h_source.html">modes.h</a>.</p> </div> </div> <a id="a43530a8977b63abdf11d35f971b29f30"></a> <h2 class="memtitle"><span class="permalink"><a href="#a43530a8977b63abdf11d35f971b29f30">◆ </a></span>MinLastBlockSize()</h2> <div class="memitem"> <div class="memproto"> <table class="mlabels"> <tr> <td class="mlabels-left"> <table class="memname"> <tr> <td class="memname">unsigned int CBC_ModeBase::MinLastBlockSize </td> <td>(</td> <td class="paramname"></td><td>)</td> <td> const</td> </tr> </table> </td> <td class="mlabels-right"> <span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td> </tr> </table> </div><div class="memdoc"> <p>Provides the size of the last block. </p> <dl class="section return"><dt>Returns</dt><dd>the minimum size of the last block</dd></dl> <p><a class="el" href="class_c_b_c___mode_base.html#a43530a8977b63abdf11d35f971b29f30" title="Provides the size of the last block.">MinLastBlockSize()</a> returns the minimum size of the last block. 0 indicates the last block is not special.</p> <p><a class="el" href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c" title="Provides the mandatory block size of the cipher.">MandatoryBlockSize()</a> enlists one of two behaviors. First, if <a class="el" href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c" title="Provides the mandatory block size of the cipher.">MandatoryBlockSize()</a> returns 1, then the cipher can be streamed and <a class="el" href="class_stream_transformation.html#a26feabde21bc4d1783195969733e3bb0" title="Encrypt or decrypt an array of bytes.">ProcessData()</a> is called with the tail bytes. Second, if <a class="el" href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c" title="Provides the mandatory block size of the cipher.">MandatoryBlockSize()</a> returns non-0, then the string of bytes is padded to <a class="el" href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c" title="Provides the mandatory block size of the cipher.">MandatoryBlockSize()</a> according to the padding mode. Then, <a class="el" href="class_stream_transformation.html#a26feabde21bc4d1783195969733e3bb0" title="Encrypt or decrypt an array of bytes.">ProcessData()</a> is called with the padded string of bytes.</p> <p>Some authenticated encryption modes are not expressed well with <a class="el" href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c" title="Provides the mandatory block size of the cipher.">MandatoryBlockSize()</a> and <a class="el" href="class_c_b_c___mode_base.html#a43530a8977b63abdf11d35f971b29f30" title="Provides the size of the last block.">MinLastBlockSize()</a>. For example, AES/OCB uses 16-byte blocks (MandatoryBlockSize = 16) and the last block requires special processing (MinLastBlockSize = 0). However, 0 is a valid last block size for OCB and the special processing is custom padding, and not standard PKCS padding. In response an unambiguous <a class="el" href="class_stream_transformation.html#a62db1393d64069b282e3d455b38cd0e5" title="Determines if the last block receives special processing.">IsLastBlockSpecial()</a> was added. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="class_stream_transformation.html#a26feabde21bc4d1783195969733e3bb0" title="Encrypt or decrypt an array of bytes.">ProcessData</a>, <a class="el" href="class_stream_transformation.html#af48589443f77f4ed9ff185f9c1a26cbf" title="Encrypt or decrypt the last block of data.">ProcessLastBlock</a>, <a class="el" href="class_block_oriented_cipher_mode_base.html#ade6a00d82e063bcee5d1db3cd294751c" title="Provides the mandatory block size of the cipher.">MandatoryBlockSize</a>, <a class="el" href="class_c_b_c___mode_base.html#a43530a8977b63abdf11d35f971b29f30" title="Provides the size of the last block.">MinLastBlockSize</a>, <a class="el" href="struct_block_padding_scheme_def.html" title="Padding schemes used for block ciphers.">BlockPaddingSchemeDef</a>, <a class="el" href="class_stream_transformation.html#a62db1393d64069b282e3d455b38cd0e5" title="Determines if the last block receives special processing.">IsLastBlockSpecial</a> </dd></dl> <p>Reimplemented from <a class="el" href="class_stream_transformation.html#a0b7c5bc41b9b5f6443ee32d65ebc044c">StreamTransformation</a>.</p> <p>Reimplemented in <a class="el" href="class_c_b_c___c_t_s___decryption.html#af00303e9a4d770c22b5f5a7553f51c3f">CBC_CTS_Decryption</a>, and <a class="el" href="class_c_b_c___c_t_s___encryption.html#a6f5fb8fb6c49bcaa75c923c38bd0ccbd">CBC_CTS_Encryption</a>.</p> <p class="definition">Definition at line <a class="el" href="modes_8h_source.html#l00229">229</a> of file <a class="el" href="modes_8h_source.html">modes.h</a>.</p> </div> </div> <hr/>The documentation for this class was generated from the following file:<ul> <li><a class="el" href="modes_8h_source.html">modes.h</a></li> </ul> </div><!-- contents --> <!-- start footer part --> <hr class="footer"/><address class="footer"><small> Generated on Wed Nov 27 2019 15:04:00 for Crypto++ by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/> </a> 1.8.15 </small></address> </body> </html>