Sophie

Sophie

distrib > Mandriva > 10.2 > i586 > media > contrib > by-pkgid > 7457b841ac8136d3a1a9d3d960c5252e > files > 51

libcryptopp-doc-5.2.1-2mdk.i586.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>Crypto++: ARC4_Base class Reference</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.7 -->
<div class="qindex"><a class="qindex" href="index.html">Main&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">Class&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">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
<h1>ARC4_Base Class Reference</h1><code>#include &lt;<a class="el" href="arc4_8h-source.html">arc4.h</a>&gt;</code>
<p>
<p>Inheritance diagram for ARC4_Base:
<p><center><img src="class_a_r_c4___base.png" usemap="#ARC4_Base_map" border="0" alt=""></center>
<map name="ARC4_Base_map">
<area href="class_variable_key_length.html" alt="VariableKeyLength< 16, 1, 256 >" shape="rect" coords="0,168,538,192">
<area href="class_random_number_generator.html" alt="RandomNumberGenerator" shape="rect" coords="548,168,1086,192">
<area href="class_symmetric_cipher.html" alt="SymmetricCipher" shape="rect" coords="1370,168,1908,192">
<area href="struct_symmetric_cipher_documentation.html" alt="SymmetricCipherDocumentation" shape="rect" coords="1918,168,2456,192">
<area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="548,112,1086,136">
<area href="class_stream_transformation.html" alt="StreamTransformation" shape="rect" coords="1096,112,1634,136">
<area href="class_simple_keying_interface.html" alt="SimpleKeyingInterface" shape="rect" coords="1644,112,2182,136">
<area href="class_clonable.html" alt="Clonable" shape="rect" coords="548,56,1086,80">
<area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="1096,56,1634,80">
<area href="class_clonable.html" alt="Clonable" shape="rect" coords="1096,0,1634,24">
<area href="class_m_a_r_c4___base.html" alt="MARC4_Base" shape="rect" coords="685,280,1223,304">
<area href="class_simple_keying_interface_impl.html" alt="SimpleKeyingInterfaceImpl< ARC4_Base, ARC4_Base >" shape="rect" coords="1233,280,1771,304">
<area href="class_simple_keying_interface_impl.html" alt="SimpleKeyingInterfaceImpl< MARC4_Base, MARC4_Base >" shape="rect" coords="685,336,1223,360">
<area href="class_algorithm_impl.html" alt="AlgorithmImpl< SimpleKeyingInterfaceImpl< ARC4_Base, ARC4_Base >, ARC4_Base >" shape="rect" coords="1233,336,1771,360">
<area href="class_algorithm_impl.html" alt="AlgorithmImpl< SimpleKeyingInterfaceImpl< MARC4_Base, MARC4_Base >, MARC4_Base >" shape="rect" coords="685,392,1223,416">
<area href="class_symmetric_cipher_final.html" alt="SymmetricCipherFinal< ARC4_Base >" shape="rect" coords="1233,392,1771,416">
<area href="class_symmetric_cipher_final.html" alt="SymmetricCipherFinal< MARC4_Base >" shape="rect" coords="685,448,1223,472">
<area href="class_a_r_c4.html" alt="ARC4" shape="rect" coords="1233,448,1771,472">
<area href="class_m_a_r_c4.html" alt="MARC4" shape="rect" coords="685,504,1223,528">
</map>
<a href="class_a_r_c4___base-members.html">List of all members.</a><hr><a name="_details"></a><h2>Detailed Description</h2>
_ 
<p>

<p>
Definition at line <a class="el" href="arc4_8h-source.html#l00009">9</a> of file <a class="el" href="arc4_8h-source.html">arc4.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><a class="anchor" name="_symmetric_cipher_final_3_01_a_r_c4___base_01_4w0" doxytag="ARC4_Base::Encryption" ></a>
typedef <a class="el" href="class_symmetric_cipher_final.html">SymmetricCipherFinal</a>&lt;<br>
 <a class="el" href="class_a_r_c4___base.html">ARC4_Base</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_a_r_c4___base_01_4w0">Encryption</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">implements the <a class="el" href="class_symmetric_cipher.html">SymmetricCipher</a> interface <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_a_r_c4___base_01_4w1" doxytag="ARC4_Base::Decryption" ></a>
typedef <a class="el" href="class_symmetric_cipher_final.html">SymmetricCipherFinal</a>&lt;<br>
 <a class="el" href="class_a_r_c4___base.html">ARC4_Base</a> &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_a_r_c4___base_01_4w1">Decryption</a></td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">implements the <a class="el" href="class_symmetric_cipher.html">SymmetricCipher</a> interface <br><br></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 class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a12" doxytag="ARC4_Base::GenerateByte" ></a>
byte&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a12">GenerateByte</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate new random byte and return it <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a13">DiscardBytes</a> (unsigned int n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate and discard n bytes  <a href="#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a13"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a14">ProcessData</a> (byte *outString, const byte *inString, unsigned int length)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encrypt or decrypt an array of bytes of specified length  <a href="#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a14"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a15" doxytag="ARC4_Base::IsRandomAccess" ></a>
bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a15">IsRandomAccess</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns whether this cipher supports random access <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a16" doxytag="ARC4_Base::IsSelfInverting" ></a>
bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a16">IsSelfInverting</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns whether this transformation is self-inverting (e.g. xor with a keystream) <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a17" doxytag="ARC4_Base::IsForwardTransformation" ></a>
bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a17">IsForwardTransformation</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns whether this is an encryption object <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_random_number_generator.html#_x917_r_n_ga2">GenerateBit</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate new random bit and return it  <a href="#_x917_r_n_ga2"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x917_r_n_ga3" doxytag="ARC4_Base::GenerateWord32" ></a>
virtual word32&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_random_number_generator.html#_x917_r_n_ga3">GenerateWord32</a> (word32 a=0, word32 b=0xffffffffL)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate a random 32 bit word in the range min to max, inclusive <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_random_number_generator.html#_x917_r_n_ga4">GenerateBlock</a> (byte *output, unsigned int size)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">generate random array of bytes  <a href="#_x917_r_n_ga4"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x917_r_n_ga6" doxytag="ARC4_Base::Shuffle" ></a>
template&lt;class IT&gt; void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_random_number_generator.html#_x917_r_n_ga6">Shuffle</a> (IT begin, IT end)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">randomly shuffle the specified array, resulting permutation is uniformly distributed <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_zlib_decompressora17" doxytag="ARC4_Base::AlgorithmName" ></a>
virtual std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_algorithm.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 class="anchor" name="_zlib_decompressora18" doxytag="ARC4_Base::Clone" ></a>
virtual <a class="el" href="class_clonable.html">Clonable</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_clonable.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 class="el" href="class_stream_transformation.html">StreamTransformation</a> &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a22">Ref</a> ()</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return a reference to this object,  <a href="#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a22"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a23" doxytag="ARC4_Base::MandatoryBlockSize" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a23">MandatoryBlockSize</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns block size, if input must be processed in blocks, otherwise 1 <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a24">OptimalBlockSize</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns the input block size that is most efficient for this cipher  <a href="#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a24"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a25" doxytag="ARC4_Base::GetOptimalBlockSizeUsed" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a25">GetOptimalBlockSizeUsed</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns how much of the current block is used up <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a26" doxytag="ARC4_Base::OptimalDataAlignment" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a26">OptimalDataAlignment</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns how input should be aligned for optimal performance <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a27">ProcessLastBlock</a> (byte *outString, const byte *inString, unsigned int length)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for ciphers where the last block of data is special, encrypt or decrypt the last block of data  <a href="#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a27"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a28" doxytag="ARC4_Base::MinLastBlockSize" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a28">MinLastBlockSize</a> () const</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns the minimum size of the last block, 0 indicating the last block is not special <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a29" doxytag="ARC4_Base::ProcessString" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a29">ProcessString</a> (byte *inoutString, unsigned int length)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">same as <a class="el" href="class_stream_transformation.html#_symmetric_ciphera5">ProcessData(inoutString, inoutString, length)</a> <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a30" doxytag="ARC4_Base::ProcessString" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a30">ProcessString</a> (byte *outString, const byte *inString, unsigned int length)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">same as <a class="el" href="class_stream_transformation.html#_symmetric_ciphera5">ProcessData(outString, inString, length)</a> <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a31" doxytag="ARC4_Base::ProcessByte" ></a>
byte&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a31">ProcessByte</a> (byte input)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">implemented as {<a class="el" href="class_stream_transformation.html#_symmetric_ciphera5">ProcessData(&amp;input, &amp;input, 1)</a>; return input;} <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a32" doxytag="ARC4_Base::Seek" ></a>
virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_stream_transformation.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a32">Seek</a> (lword n)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">for random access ciphers, seek to an absolute position <br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea17" doxytag="ARC4_Base::MinKeyLength" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea17">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 class="anchor" name="_x_m_a_c_c___basea18" doxytag="ARC4_Base::MaxKeyLength" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea18">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 class="anchor" name="_x_m_a_c_c___basea19" doxytag="ARC4_Base::DefaultKeyLength" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea19">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 class="anchor" name="_x_m_a_c_c___basea20" doxytag="ARC4_Base::GetValidKeyLength" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea20">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 class="anchor" name="_x_m_a_c_c___basea21" doxytag="ARC4_Base::IsValidKeyLength" ></a>
virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea21">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>virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea22">SetKey</a> (const byte *key, unsigned int length, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params=<a class="el" href="cryptlib_8h.html#a3">g_nullNameValuePairs</a>)=0</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set or reset the key of this object  <a href="#_x_m_a_c_c___basea22"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea23" doxytag="ARC4_Base::SetKeyWithRounds" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea23">SetKeyWithRounds</a> (const byte *key, unsigned int length, int rounds)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">calls SetKey() 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 class="anchor" name="_x_m_a_c_c___basea24" doxytag="ARC4_Base::SetKeyWithIV" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea24">SetKeyWithIV</a> (const byte *key, unsigned int length, const byte *iv)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">calls SetKey() 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 class="anchor" name="_x_m_a_c_c___basea25" doxytag="ARC4_Base::IVRequirement" ></a>
virtual IV_Requirement&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea25">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_simple_keying_interface.html#_x_m_a_c_c___basea26">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)  <a href="#_x_m_a_c_c___basea26"></a><br><br></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___basea27" doxytag="ARC4_Base::CanUseRandomIVs" ></a>
bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea27">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 class="anchor" name="_x_m_a_c_c___basea28" doxytag="ARC4_Base::CanUsePredictableIVs" ></a>
bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea28">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 class="anchor" name="_x_m_a_c_c___basea29" doxytag="ARC4_Base::CanUseStructuredIVs" ></a>
bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea29">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 class="anchor" name="_x_m_a_c_c___basea30" doxytag="ARC4_Base::IVSize" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea30">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 class="anchor" name="_x_m_a_c_c___basea31" doxytag="ARC4_Base::Resynchronize" ></a>
virtual void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="class_simple_keying_interface.html#_x_m_a_c_c___basea31">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_simple_keying_interface.html#_x_m_a_c_c___basea32">GetNextIV</a> (byte *IV)</td></tr>

<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a secure IV for the next message  <a href="#_x_m_a_c_c___basea32"></a><br><br></td></tr>
<tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_simple_keying_interface_impl_3_01_a_r_c4___base_00_01_a_r_c4___base_01_4e0" doxytag="ARC4_Base::StaticAlgorithmName" ></a>
const char *&nbsp;</td><td class="memItemRight" valign=bottom><b>StaticAlgorithmName</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_variable_key_lengthe0" doxytag="ARC4_Base::StaticGetValidKeyLength" ></a>
unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><b>StaticGetValidKeyLength</b> (unsigned int n)</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="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4b3" doxytag="ARC4_Base::UncheckedSetKey" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><b>UncheckedSetKey</b> (const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params, const byte *key, unsigned int length, const byte *iv)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_a_r_c4___base_01_4b3" doxytag="ARC4_Base::GetDefaultDiscardBytes" ></a>
virtual unsigned int&nbsp;</td><td class="memItemRight" valign=bottom><b>GetDefaultDiscardBytes</b> () const</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___baseb11" doxytag="ARC4_Base::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 class="anchor" name="_x_m_a_c_c___baseb12" doxytag="ARC4_Base::ThrowIfResynchronizable" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><b>ThrowIfResynchronizable</b> ()</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___baseb13" doxytag="ARC4_Base::ThrowIfInvalidIV" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><b>ThrowIfInvalidIV</b> (const byte *iv)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___baseb14" doxytag="ARC4_Base::GetIVAndThrowIfInvalid" ></a>
const byte *&nbsp;</td><td class="memItemRight" valign=bottom><b>GetIVAndThrowIfInvalid</b> (const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params)</td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_x_m_a_c_c___baseb15" doxytag="ARC4_Base::AssertValidKeyLength" ></a>
void&nbsp;</td><td class="memItemRight" valign=bottom><b>AssertValidKeyLength</b> (unsigned int length) const</td></tr>

<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4p0" doxytag="ARC4_Base::m_state" ></a>
FixedSizeSecBlock&lt; byte, 256 &gt;&nbsp;</td><td class="memItemRight" valign=bottom><b>m_state</b></td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4p1" doxytag="ARC4_Base::m_x" ></a>
byte&nbsp;</td><td class="memItemRight" valign=bottom><b>m_x</b></td></tr>

<tr><td class="memItemLeft" nowrap align=right valign=top><a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4p2" doxytag="ARC4_Base::m_y" ></a>
byte&nbsp;</td><td class="memItemRight" valign=bottom><b>m_y</b></td></tr>

</table>
<hr><h2>Member Function Documentation</h2>
<a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a13" doxytag="ARC4_Base::DiscardBytes" ></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 ARC4_Base::DiscardBytes           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">unsigned int&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>n</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
generate and discard n bytes 
<p>
Default implementation is to call <a class="el" href="class_a_r_c4___base.html#_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a12">GenerateByte()</a> n times. 
<p>
Reimplemented from <a class="el" href="class_random_number_generator.html#_x917_r_n_ga5">RandomNumberGenerator</a>.
<p>
Definition at line <a class="el" href="arc4_8cpp-source.html#l00097">97</a> of file <a class="el" href="arc4_8cpp-source.html">arc4.cpp</a>.
<p>
References <a class="el" href="arc4_8cpp-source.html#l00097">DiscardBytes()</a>.
<p>
Referenced by <a class="el" href="arc4_8cpp-source.html#l00097">DiscardBytes()</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a14" doxytag="ARC4_Base::ProcessData" ></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 ARC4_Base::ProcessData           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">byte *&nbsp;</td>
          <td class="mdname" nowrap> <em>outString</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const byte *&nbsp;</td>
          <td class="mdname" nowrap> <em>inString</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap> <em>length</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [virtual]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
encrypt or decrypt an array of bytes of specified length 
<p>
<dl compact><dt><b>Note:</b></dt><dd>either inString == outString, or they don't overlap </dd></dl>

<p>
Implements <a class="el" href="class_stream_transformation.html#_symmetric_ciphera5">StreamTransformation</a>.
<p>
Definition at line <a class="el" href="arc4_8cpp-source.html#l00068">68</a> of file <a class="el" href="arc4_8cpp-source.html">arc4.cpp</a>.
<p>
References <a class="el" href="arc4_8cpp-source.html#l00068">ProcessData()</a>.
<p>
Referenced by <a class="el" href="arc4_8cpp-source.html#l00068">ProcessData()</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_x917_r_n_ga2" doxytag="ARC4_Base::GenerateBit" ></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"> unsigned int RandomNumberGenerator::GenerateBit           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [virtual, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
generate new random bit and return it 
<p>
Default implementation is to call <a class="el" href="class_random_number_generator.html#_random_number_generatora0">GenerateByte()</a> and return its parity. 
<p>
Reimplemented in <a class="el" href="class_public_blum_blum_shub.html#_public_blum_blum_shuba1">PublicBlumBlumShub</a>.
<p>
Definition at line <a class="el" href="cryptlib_8cpp-source.html#l00111">111</a> of file <a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a>.
<p>
References <a class="el" href="class_random_number_generator.html#_random_number_generatora0">RandomNumberGenerator::GenerateByte()</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_x917_r_n_ga4" doxytag="ARC4_Base::GenerateBlock" ></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 RandomNumberGenerator::GenerateBlock           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">byte *&nbsp;</td>
          <td class="mdname" nowrap> <em>output</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap> <em>size</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [virtual, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
generate random array of bytes 
<p>
Default implementation is to call <a class="el" href="class_random_number_generator.html#_random_number_generatora0">GenerateByte()</a> size times. 
<p>
Reimplemented in <a class="el" href="class_nonblocking_rng.html#_nonblocking_rnga3">NonblockingRng</a>, <a class="el" href="class_blocking_rng.html#_blocking_rnga3">BlockingRng</a>, and <a class="el" href="class_random_pool.html#_random_poola7">RandomPool</a>.
<p>
Definition at line <a class="el" href="cryptlib_8cpp-source.html#l00116">116</a> of file <a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a>.
<p>
References <a class="el" href="cryptlib_8cpp-source.html#l00116">RandomNumberGenerator::GenerateBlock()</a>, and <a class="el" href="class_random_number_generator.html#_random_number_generatora0">RandomNumberGenerator::GenerateByte()</a>.
<p>
Referenced by <a class="el" href="cryptlib_8cpp-source.html#l00116">RandomNumberGenerator::GenerateBlock()</a>, and <a class="el" href="gfpcrypt_8cpp-source.html#l00026">DL_GroupParameters_DSA::GenerateRandom()</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a22" doxytag="ARC4_Base::Ref" ></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"> <a class="el" href="class_stream_transformation.html">StreamTransformation</a>&amp; StreamTransformation::Ref           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [inline, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
return a reference to this object, 
<p>
This function is useful for passing a temporary StreamTransformation object to a function that takes a non-const reference. 
<p>
Definition at line <a class="el" href="cryptlib_8h-source.html#l00464">464</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a24" doxytag="ARC4_Base::OptimalBlockSize" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> virtual unsigned int StreamTransformation::OptimalBlockSize           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const<code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
returns the input block size that is most efficient for this cipher 
<p>
<dl compact><dt><b>Note:</b></dt><dd>optimal input length is n * OptimalBlockSize() - GetOptimalBlockSizeUsed() for any n &gt; 0 </dd></dl>

<p>
Definition at line <a class="el" href="cryptlib_8h-source.html#l00471">471</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_symmetric_cipher_final_3_01_m_a_r_c4___base_01_4a27" doxytag="ARC4_Base::ProcessLastBlock" ></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 StreamTransformation::ProcessLastBlock           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">byte *&nbsp;</td>
          <td class="mdname" nowrap> <em>outString</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const byte *&nbsp;</td>
          <td class="mdname" nowrap> <em>inString</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap> <em>length</em></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [virtual, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
for ciphers where the last block of data is special, encrypt or decrypt the last block of data 
<p>
For now the only use of this function is for CBC-CTS mode. 
<p>
Definition at line <a class="el" href="cryptlib_8cpp-source.html#l00101">101</a> of file <a class="el" href="cryptlib_8cpp-source.html">cryptlib.cpp</a>.
<p>
References <a class="el" href="cryptlib_8h-source.html#l00467">StreamTransformation::MandatoryBlockSize()</a>, <a class="el" href="cryptlib_8h-source.html#l00486">StreamTransformation::MinLastBlockSize()</a>, <a class="el" href="class_stream_transformation.html#_symmetric_ciphera5">StreamTransformation::ProcessData()</a>, and <a class="el" href="cryptlib_8cpp-source.html#l00101">StreamTransformation::ProcessLastBlock()</a>.
<p>
Referenced by <a class="el" href="cryptlib_8cpp-source.html#l00101">StreamTransformation::ProcessLastBlock()</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_x_m_a_c_c___basea22" doxytag="ARC4_Base::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"> virtual void SimpleKeyingInterface::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>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>unsigned int&nbsp;</td>
          <td class="mdname" nowrap> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="md" nowrap align="right"></td>
          <td></td>
          <td class="md" nowrap>const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;&nbsp;</td>
          <td class="mdname" nowrap> <em>params</em> = <code><a class="el" href="cryptlib_8h.html#a3">g_nullNameValuePairs</a></code></td>
        </tr>
        <tr>
          <td></td>
          <td class="md">)&nbsp;</td>
          <td class="md" colspan="2"><code> [pure virtual, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
set or reset the key of this object 
<p>
<dl compact><dt><b>Parameters:</b></dt><dd>
  <table border="0" cellspacing="2" cellpadding="0">
    <tr><td></td><td valign=top><em>params</em>&nbsp;</td><td>is used to specify Rounds, BlockSize, etc </td></tr>
  </table>
</dl>

<p>
Implemented in <a class="el" href="class_hermetic_hash_function_m_a_c.html#_hermetic_hash_function_m_a_ca0">HermeticHashFunctionMAC&lt; T_Hash, T_Info &gt;</a>, and <a class="el" href="class_hermetic_hash_function_m_a_c.html#_hermetic_hash_function_m_a_ca0">HermeticHashFunctionMAC&lt; PanamaHash&lt; B &gt; &gt;</a>.
<p>
Referenced by <a class="el" href="cryptlib_8cpp-source.html#l00055">SimpleKeyingInterface::SetKeyWithIV()</a>, and <a class="el" href="cryptlib_8cpp-source.html#l00050">SimpleKeyingInterface::SetKeyWithRounds()</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_x_m_a_c_c___basea26" doxytag="ARC4_Base::IsResynchronizable" ></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"> bool SimpleKeyingInterface::IsResynchronizable           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="mdname1" valign="top" nowrap>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
returns whether this object can be resynchronized (i.e. supports initialization vectors) 
<p>
If this function returns true, and no IV is passed to SetKey() and CanUseStructuredIVs()==true, an IV of all 0's will be assumed. 
<p>
Definition at line <a class="el" href="cryptlib_8h-source.html#l00384">384</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>.    </td>
  </tr>
</table>
<a class="anchor" name="_x_m_a_c_c___basea32" doxytag="ARC4_Base::GetNextIV" ></a><p>
<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
  <tr>
    <td class="mdRow">
      <table cellpadding="0" cellspacing="0" border="0">
        <tr>
          <td class="md" nowrap valign="top"> virtual void SimpleKeyingInterface::GetNextIV           </td>
          <td class="md" valign="top">(&nbsp;</td>
          <td class="md" nowrap valign="top">byte *&nbsp;</td>
          <td class="mdname1" valign="top" nowrap> <em>IV</em>          </td>
          <td class="md" valign="top">&nbsp;)&nbsp;</td>
          <td class="md" nowrap><code> [inline, virtual, inherited]</code></td>
        </tr>
      </table>
    </td>
  </tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
  <tr>
    <td>
      &nbsp;
    </td>
    <td>

<p>
get a secure IV for the next message 
<p>
This method should be called after you finish encrypting one message and are ready to start the next one. After calling it, you must call SetKey() or Resynchronize() before using this object again. This method is not implemented on decryption objects. 
<p>
Definition at line <a class="el" href="cryptlib_8h-source.html#l00400">400</a> of file <a class="el" href="cryptlib_8h-source.html">cryptlib.h</a>.    </td>
  </tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="arc4_8h-source.html">arc4.h</a><li><a class="el" href="arc4_8cpp-source.html">arc4.cpp</a></ul>
<hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:24:00 2004 for Crypto++ by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 ></a> 1.3.7 </small></address>
</body>
</html>