Sophie

Sophie

distrib > Fedora > 13 > i386 > media > os > by-pkgid > 07dfcfe50d66c9a48a3c5e6c1693f12a > files > 1286

cryptopp-doc-5.6.1-0.1.svn479.fc13.i686.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://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"/>
<title>Crypto++: SAFER::Enc Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.1 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Classes</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="annotated.html"><span>Class&nbsp;List</span></a></li>
      <li><a href="classes.html"><span>Class&nbsp;Index</span></a></li>
      <li><a href="hierarchy.html"><span>Class&nbsp;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&nbsp;Members</span></a></li>
    </ul>
  </div>
  <div class="navpath"><a class="el" href="class_s_a_f_e_r.html">SAFER</a>::<a class="el" href="class_s_a_f_e_r_1_1_enc.html">Enc</a>
  </div>
</div>
<div class="contents">
<h1>SAFER::Enc Class Reference</h1><!-- doxytag: class="SAFER::Enc" --><!-- doxytag: inherits="SAFER::Base" --><div class="dynheader">
Inheritance diagram for SAFER::Enc:</div>
<div class="dynsection">
 <div class="center">
  <img src="class_s_a_f_e_r_1_1_enc.gif" usemap="#SAFER::Enc_map" alt=""/>
  <map id="SAFER::Enc_map" name="SAFER::Enc_map">
<area href="class_s_a_f_e_r_1_1_base.html" alt="SAFER::Base" shape="rect" coords="74,224,212,248"/>
<area href="class_block_cipher.html" alt="BlockCipher" shape="rect" coords="74,168,212,192"/>
<area href="class_simple_keying_interface.html" alt="SimpleKeyingInterface" shape="rect" coords="0,112,138,136"/>
<area href="class_block_transformation.html" alt="BlockTransformation" shape="rect" coords="148,112,286,136"/>
<area href="class_algorithm.html" alt="Algorithm" shape="rect" coords="148,56,286,80"/>
<area href="class_clonable.html" alt="Clonable" shape="rect" coords="148,0,286,24"/>
</map>
 </div>
</div>

<p><a href="class_s_a_f_e_r_1_1_enc-members.html">List of all members.</a></p>
<table border="0" cellpadding="0" cellspacing="0">
<tr><td colspan="2"><h2>Public Types</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom"><b>IV_Requirement</b> { <br/>
&nbsp;&nbsp;<b>UNIQUE_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 class="memItemLeft" align="right" valign="top">enum &nbsp;</td><td class="memItemRight" valign="bottom">{ <b>BT_InBlockIsCounter</b> = 1, 
<b>BT_DontIncrementInOutPointers</b> = 2, 
<b>BT_XorInput</b> = 4, 
<b>BT_ReverseDirection</b> = 8
 }</td></tr>
<tr><td colspan="2"><h2>Public Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a300fcdad081a887bcd9c37bb6e950b0d"></a><!-- doxytag: member="SAFER::Enc::ProcessAndXorBlock" ref="a300fcdad081a887bcd9c37bb6e950b0d" args="(const byte *inBlock, const byte *xorBlock, byte *outBlock) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_a_f_e_r_1_1_enc.html#a300fcdad081a887bcd9c37bb6e950b0d">ProcessAndXorBlock</a> (const byte *inBlock, const byte *xorBlock, byte *outBlock) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encrypt or decrypt inBlock, xor with xorBlock, and write to outBlock <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab76d562df30b5419ed2025b663b1c974"></a><!-- doxytag: member="SAFER::Enc::OptimalDataAlignment" ref="ab76d562df30b5419ed2025b663b1c974" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_s_a_f_e_r_1_1_base.html#ab76d562df30b5419ed2025b663b1c974">OptimalDataAlignment</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns how inputs and outputs should be aligned for optimal performance <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad403227c3c5f82315dbb3f13dd2ec868"></a><!-- doxytag: member="SAFER::Enc::UncheckedSetKey" ref="ad403227c3c5f82315dbb3f13dd2ec868" args="(const byte *userkey, unsigned int length, const NameValuePairs &amp;params)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>UncheckedSetKey</b> (const byte *userkey, unsigned int length, const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;params)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a2631c49dac4d5ec055c5dc88c6243578"></a><!-- doxytag: member="SAFER::Enc::MinKeyLength" ref="a2631c49dac4d5ec055c5dc88c6243578" args="() const =0" -->
virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a2631c49dac4d5ec055c5dc88c6243578">MinKeyLength</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns smallest valid key length in bytes */ <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae02fcb4e1f6141e728ae37612cde6fff"></a><!-- doxytag: member="SAFER::Enc::MaxKeyLength" ref="ae02fcb4e1f6141e728ae37612cde6fff" args="() const =0" -->
virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ae02fcb4e1f6141e728ae37612cde6fff">MaxKeyLength</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns largest valid key length in bytes */ <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae90dfc0bdfd13e214fd46e357ef64e98"></a><!-- doxytag: member="SAFER::Enc::DefaultKeyLength" ref="ae90dfc0bdfd13e214fd46e357ef64e98" args="() const =0" -->
virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ae90dfc0bdfd13e214fd46e357ef64e98">DefaultKeyLength</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns default (recommended) key length in bytes */ <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad8810586aaa034729b6db24e593a0ade"></a><!-- doxytag: member="SAFER::Enc::GetValidKeyLength" ref="ad8810586aaa034729b6db24e593a0ade" args="(size_t n) const =0" -->
virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ad8810586aaa034729b6db24e593a0ade">GetValidKeyLength</a> (size_t 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/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a024f23c0a094ee46094f69ffefb91d17"></a><!-- doxytag: member="SAFER::Enc::IsValidKeyLength" ref="a024f23c0a094ee46094f69ffefb91d17" args="(size_t n) const " -->
virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a024f23c0a094ee46094f69ffefb91d17">IsValidKeyLength</a> (size_t n) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns whether n is a valid key length <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</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> &amp;params=<a class="el" href="cryptlib_8h.html#ad3205973dd1afa14090a683154c1109c">g_nullNameValuePairs</a>)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">set or reset the key of this object  <a href="#adf3c29b3ef3af74788a58c7c49887fd7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0401f9c67930805180964bc02ae0ac1c"></a><!-- doxytag: member="SAFER::Enc::SetKeyWithRounds" ref="a0401f9c67930805180964bc02ae0ac1c" args="(const byte *key, size_t length, int rounds)" -->
void&nbsp;</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><td class="mdescLeft">&nbsp;</td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> object that just specifies "Rounds" <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b4e358c514fd743840967bc595a34c2"></a><!-- doxytag: member="SAFER::Enc::SetKeyWithIV" ref="a5b4e358c514fd743840967bc595a34c2" args="(const byte *key, size_t length, const byte *iv, size_t ivLength)" -->
void&nbsp;</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><td class="mdescLeft">&nbsp;</td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> object that just specifies "IV" <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac25e27eaeae2e909741c07de93caef49"></a><!-- doxytag: member="SAFER::Enc::SetKeyWithIV" ref="ac25e27eaeae2e909741c07de93caef49" args="(const byte *key, size_t length, const byte *iv)" -->
void&nbsp;</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><td class="mdescLeft">&nbsp;</td><td class="mdescRight">calls <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> with an <a class="el" href="class_name_value_pairs.html" title="interface for retrieving values given their names">NameValuePairs</a> object that just specifies "IV" <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a867b535e5c4a11704d0645272e8b03f9"></a><!-- doxytag: member="SAFER::Enc::IVRequirement" ref="a867b535e5c4a11704d0645272e8b03f9" args="() const =0" -->
virtual IV_Requirement&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a867b535e5c4a11704d0645272e8b03f9">IVRequirement</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns the minimal requirement for secure IVs <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ad263f4a96fa8b4e7d01fea8ccaae9d3b">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="#ad263f4a96fa8b4e7d01fea8ccaae9d3b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26680fc02b91534a522b5754cdcdcb46"></a><!-- doxytag: member="SAFER::Enc::CanUseRandomIVs" ref="a26680fc02b91534a522b5754cdcdcb46" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a26680fc02b91534a522b5754cdcdcb46">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/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a307463503d7a4400ffafe03a683e1dbb"></a><!-- doxytag: member="SAFER::Enc::CanUsePredictableIVs" ref="a307463503d7a4400ffafe03a683e1dbb" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a307463503d7a4400ffafe03a683e1dbb">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/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9c47590ef06335b34bdaf272fd37ef4d"></a><!-- doxytag: member="SAFER::Enc::CanUseStructuredIVs" ref="a9c47590ef06335b34bdaf272fd37ef4d" args="() const " -->
bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a9c47590ef06335b34bdaf272fd37ef4d">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/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac1b39967f6fac32188f9eeea81896c0c"></a><!-- doxytag: member="SAFER::Enc::IVSize" ref="ac1b39967f6fac32188f9eeea81896c0c" args="() const " -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><b>IVSize</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5b2090b3c27540aa3db0281406fedb38"></a><!-- doxytag: member="SAFER::Enc::DefaultIVLength" ref="a5b2090b3c27540aa3db0281406fedb38" args="() const " -->
unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a5b2090b3c27540aa3db0281406fedb38">DefaultIVLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns default length of IVs accepted by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4450efa449a2e04a31b6371821e650f9"></a><!-- doxytag: member="SAFER::Enc::MinIVLength" ref="a4450efa449a2e04a31b6371821e650f9" args="() const " -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a4450efa449a2e04a31b6371821e650f9">MinIVLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns minimal length of IVs accepted by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a308799c135440e57a583defe3860f02e"></a><!-- doxytag: member="SAFER::Enc::MaxIVLength" ref="a308799c135440e57a583defe3860f02e" args="() const " -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a308799c135440e57a583defe3860f02e">MaxIVLength</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns maximal length of IVs accepted by this object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae576137a46ca56005e82f1505cf3cccc"></a><!-- doxytag: member="SAFER::Enc::Resynchronize" ref="ae576137a46ca56005e82f1505cf3cccc" args="(const byte *iv, int ivLength=&#45;1)" -->
virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#ae576137a46ca56005e82f1505cf3cccc">Resynchronize</a> (const byte *iv, int ivLength=-1)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">resynchronize with an IV. ivLength=-1 means use IVSize() <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_simple_keying_interface.html#a917224bb6df7431d6469e7a10feac5fa">GetNextIV</a> (<a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;rng, byte *IV)</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">get a secure IV for the next message  <a href="#a917224bb6df7431d6469e7a10feac5fa"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_transformation.html#a2fefb3f4c6c6297c0c91fcbba9e4f4f3">ProcessBlock</a> (const byte *inBlock, byte *outBlock) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encrypt or decrypt one block  <a href="#a2fefb3f4c6c6297c0c91fcbba9e4f4f3"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a12cc1846de571557be0f82471e8904bf"></a><!-- doxytag: member="SAFER::Enc::ProcessBlock" ref="a12cc1846de571557be0f82471e8904bf" args="(byte *inoutBlock) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_transformation.html#a12cc1846de571557be0f82471e8904bf">ProcessBlock</a> (byte *inoutBlock) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encrypt or decrypt one block in place <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfdb78b033996020435c3dcffdca76ce"></a><!-- doxytag: member="SAFER::Enc::BlockSize" ref="adfdb78b033996020435c3dcffdca76ce" args="() const =0" -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_transformation.html#adfdb78b033996020435c3dcffdca76ce">BlockSize</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">block size of the cipher in bytes <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8d154fdac89307d9edbd2a5ab97fa080"></a><!-- doxytag: member="SAFER::Enc::IsPermutation" ref="a8d154fdac89307d9edbd2a5ab97fa080" args="() const " -->
virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_transformation.html#a8d154fdac89307d9edbd2a5ab97fa080">IsPermutation</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns true if this is a permutation (i.e. there is an inverse transformation) <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50f2565057bc9ba7bb70a98d9c9b39cd"></a><!-- doxytag: member="SAFER::Enc::IsForwardTransformation" ref="a50f2565057bc9ba7bb70a98d9c9b39cd" args="() const =0" -->
virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_transformation.html#a50f2565057bc9ba7bb70a98d9c9b39cd">IsForwardTransformation</a> () const =0</td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns true if this is an encryption object <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7aceb4c214d901e9cc416b05d40eb282"></a><!-- doxytag: member="SAFER::Enc::OptimalNumberOfParallelBlocks" ref="a7aceb4c214d901e9cc416b05d40eb282" args="() const " -->
virtual unsigned int&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_transformation.html#a7aceb4c214d901e9cc416b05d40eb282">OptimalNumberOfParallelBlocks</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">return number of blocks that can be processed in parallel, for bit-slicing implementations <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">virtual size_t&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_block_transformation.html#adcff119bb709c84bfaaab8d1871b018c">AdvancedProcessBlocks</a> (const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">encrypt and xor blocks according to flags (see FlagsForAdvancedProcessBlocks)  <a href="#adcff119bb709c84bfaaab8d1871b018c"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf4c2e7cf9a5c3bb1729e9d1126f0d7c"></a><!-- doxytag: member="SAFER::Enc::GetCipherDirection" ref="abf4c2e7cf9a5c3bb1729e9d1126f0d7c" args="() const " -->
<a class="el" href="cryptlib_8h.html#a353ccabf5ddc119a6a33e92f7b9961c7">CipherDir</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>GetCipherDirection</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acd21c6715add4884fa043eaf51655039"></a><!-- doxytag: member="SAFER::Enc::AlgorithmName" ref="acd21c6715add4884fa043eaf51655039" args="() const " -->
virtual std::string&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_algorithm.html#acd21c6715add4884fa043eaf51655039">AlgorithmName</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns name of this algorithm, not universally implemented yet <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a24b43349a71e1f98508eeb10b31a0a62"></a><!-- doxytag: member="SAFER::Enc::Clone" ref="a24b43349a71e1f98508eeb10b31a0a62" args="() const " -->
virtual <a class="el" href="class_clonable.html">Clonable</a> *&nbsp;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_clonable.html#a24b43349a71e1f98508eeb10b31a0a62">Clone</a> () const </td></tr>
<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">this is not implemented by most classes yet <br/></td></tr>
<tr><td colspan="2"><h2>Public Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adbdffb84a7518cb2b44378111a6ee69b"></a><!-- doxytag: member="SAFER::Enc::FlagsForAdvancedProcessBlocks" ref="adbdffb84a7518cb2b44378111a6ee69b" args="" -->
enum BlockTransformation:: { ... } &nbsp;</td><td class="memItemRight" valign="bottom"><b>FlagsForAdvancedProcessBlocks</b></td></tr>
<tr><td colspan="2"><h2>Protected Member Functions</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adb59675642f7dc5b55941ea1f6b03750"></a><!-- doxytag: member="SAFER::Enc::Strengthened" ref="adb59675642f7dc5b55941ea1f6b03750" args="() const =0" -->
virtual bool&nbsp;</td><td class="memItemRight" valign="bottom"><b>Strengthened</b> () const =0</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad91b5765499a85e5914d8401e28ffe2e"></a><!-- doxytag: member="SAFER::Enc::GetAlgorithm" ref="ad91b5765499a85e5914d8401e28ffe2e" args="() const " -->
const <a class="el" href="class_algorithm.html">Algorithm</a> &amp;&nbsp;</td><td class="memItemRight" valign="bottom"><b>GetAlgorithm</b> () const </td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32b2095542b18025814118734bf34da2"></a><!-- doxytag: member="SAFER::Enc::ThrowIfInvalidKeyLength" ref="a32b2095542b18025814118734bf34da2" args="(size_t length)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>ThrowIfInvalidKeyLength</b> (size_t length)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae60d9774af66fc673fe6139f5880c477"></a><!-- doxytag: member="SAFER::Enc::ThrowIfResynchronizable" ref="ae60d9774af66fc673fe6139f5880c477" args="()" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>ThrowIfResynchronizable</b> ()</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac687add7d0a09c626d85b77714bbd114"></a><!-- doxytag: member="SAFER::Enc::ThrowIfInvalidIV" ref="ac687add7d0a09c626d85b77714bbd114" args="(const byte *iv)" -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>ThrowIfInvalidIV</b> (const byte *iv)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aaae6c529f861c47193f3498719e2dc48"></a><!-- doxytag: member="SAFER::Enc::ThrowIfInvalidIVLength" ref="aaae6c529f861c47193f3498719e2dc48" args="(int size)" -->
size_t&nbsp;</td><td class="memItemRight" valign="bottom"><b>ThrowIfInvalidIVLength</b> (int size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a66ce967c9b8717baa10b4bdb2312d08d"></a><!-- doxytag: member="SAFER::Enc::GetIVAndThrowIfInvalid" ref="a66ce967c9b8717baa10b4bdb2312d08d" args="(const NameValuePairs &amp;params, size_t &amp;size)" -->
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, size_t &amp;size)</td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a719efcf12f0de461b951830b8131b36a"></a><!-- doxytag: member="SAFER::Enc::AssertValidKeyLength" ref="a719efcf12f0de461b951830b8131b36a" args="(size_t length) const " -->
void&nbsp;</td><td class="memItemRight" valign="bottom"><b>AssertValidKeyLength</b> (size_t length) const </td></tr>
<tr><td colspan="2"><h2>Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7a0b1cf722b42cbadc175cf6ff93366d"></a><!-- doxytag: member="SAFER::Enc::keySchedule" ref="a7a0b1cf722b42cbadc175cf6ff93366d" args="" -->
<a class="el" href="class_sec_block.html">SecByteBlock</a>&nbsp;</td><td class="memItemRight" valign="bottom"><b>keySchedule</b></td></tr>
<tr><td colspan="2"><h2>Static Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const byte&nbsp;</td><td class="memItemRight" valign="bottom"><b>exp_tab</b> [256]</td></tr>
<tr><td class="memItemLeft" align="right" valign="top">static const byte&nbsp;</td><td class="memItemRight" valign="bottom"><b>log_tab</b> [256]</td></tr>
</table>
<hr/><a name="_details"></a><h2>Detailed Description</h2>

<p>Definition at line <a class="el" href="safer_8h_source.html#l00030">30</a> of file <a class="el" href="safer_8h_source.html">safer.h</a>.</p>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="adf3c29b3ef3af74788a58c7c49887fd7"></a><!-- doxytag: member="SAFER::Enc::SetKey" ref="adf3c29b3ef3af74788a58c7c49887fd7" args="(const byte *key, size_t length, const NameValuePairs &amp;params=g_nullNameValuePairs)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SimpleKeyingInterface::SetKey </td>
          <td>(</td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>key</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_name_value_pairs.html">NameValuePairs</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>params</em> = <code><a class="el" href="cryptlib_8h.html#ad3205973dd1afa14090a683154c1109c">g_nullNameValuePairs</a></code></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

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

<p>Reimplemented in <a class="el" href="class_authenticated_symmetric_cipher_base.html#aea1353c1d0a94c3f81ebcf53f6b7ea57">AuthenticatedSymmetricCipherBase</a>, and <a class="el" href="class_e_c_b___one_way.html#aea389c964114b73390dd81d836124461">ECB_OneWay</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00053">53</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00064">SimpleKeyingInterface::SetKeyWithIV()</a>, and <a class="el" href="cryptlib_8cpp_source.html#l00059">SimpleKeyingInterface::SetKeyWithRounds()</a>.</p>

</div>
</div>
<a class="anchor" id="ad263f4a96fa8b4e7d01fea8ccaae9d3b"></a><!-- doxytag: member="SAFER::Enc::IsResynchronizable" ref="ad263f4a96fa8b4e7d01fea8ccaae9d3b" args="() const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool SimpleKeyingInterface::IsResynchronizable </td>
          <td>(</td>
          <td class="paramname"></td>
          <td>&nbsp;)&nbsp;</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>returns whether this object can be resynchronized (i.e. supports initialization vectors) </p>
<p>If this function returns true, and no IV is passed to <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> and <a class="el" href="class_simple_keying_interface.html#a9c47590ef06335b34bdaf272fd37ef4d" title="returns whether this object can use structured IVs, for example a counter (in addition...">CanUseStructuredIVs()</a>==true, an IV of all 0's will be assumed. </p>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l00393">393</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

</div>
</div>
<a class="anchor" id="a917224bb6df7431d6469e7a10feac5fa"></a><!-- doxytag: member="SAFER::Enc::GetNextIV" ref="a917224bb6df7431d6469e7a10feac5fa" args="(RandomNumberGenerator &amp;rng, byte *IV)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void SimpleKeyingInterface::GetNextIV </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_random_number_generator.html">RandomNumberGenerator</a> &amp;&nbsp;</td>
          <td class="paramname"> <em>rng</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>IV</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td><code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>get a secure IV for the next message </p>
<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 <a class="el" href="class_simple_keying_interface.html#adf3c29b3ef3af74788a58c7c49887fd7" title="set or reset the key of this object">SetKey()</a> or <a class="el" href="class_simple_keying_interface.html#ae576137a46ca56005e82f1505cf3cccc" title="resynchronize with an IV. ivLength=-1 means use IVSize()">Resynchronize()</a> before using this object again. This method is not implemented on decryption objects. </p>

<p>Reimplemented in <a class="el" href="class_v_m_a_c___base.html#abd5685ab3eaf6ec272f7e062c3194c6c">VMAC_Base</a>.</p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00129">129</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="cryptlib_8cpp_source.html#l00257">RandomNumberGenerator::GenerateBlock()</a>.</p>

</div>
</div>
<a class="anchor" id="a2fefb3f4c6c6297c0c91fcbba9e4f4f3"></a><!-- doxytag: member="SAFER::Enc::ProcessBlock" ref="a2fefb3f4c6c6297c0c91fcbba9e4f4f3" args="(const byte *inBlock, byte *outBlock) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void BlockTransformation::ProcessBlock </td>
          <td>(</td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>inBlock</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>outBlock</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>encrypt or decrypt one block </p>
<dl class="pre"><dt><b>Precondition:</b></dt><dd>size of inBlock and outBlock == <a class="el" href="class_block_transformation.html#adfdb78b033996020435c3dcffdca76ce" title="block size of the cipher in bytes">BlockSize()</a> </dd></dl>

<p>Definition at line <a class="el" href="cryptlib_8h_source.html#l00444">444</a> of file <a class="el" href="cryptlib_8h_source.html">cryptlib.h</a>.</p>

<p>Referenced by <a class="el" href="cryptlib_8cpp_source.html#l00134">BlockTransformation::AdvancedProcessBlocks()</a>, <a class="el" href="modes_8cpp_source.html#l00207">CBC_CTS_Decryption::ProcessLastBlock()</a>, <a class="el" href="modes_8cpp_source.html#l00166">CBC_CTS_Encryption::ProcessLastBlock()</a>, <a class="el" href="vmac_8cpp_source.html#l00099">VMAC_Base::Resynchronize()</a>, and <a class="el" href="cmac_8cpp_source.html#l00058">CMAC_Base::Update()</a>.</p>

</div>
</div>
<a class="anchor" id="adcff119bb709c84bfaaab8d1871b018c"></a><!-- doxytag: member="SAFER::Enc::AdvancedProcessBlocks" ref="adcff119bb709c84bfaaab8d1871b018c" args="(const byte *inBlocks, const byte *xorBlocks, byte *outBlocks, size_t length, word32 flags) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">size_t BlockTransformation::AdvancedProcessBlocks </td>
          <td>(</td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>inBlocks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const byte *&nbsp;</td>
          <td class="paramname"> <em>xorBlocks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">byte *&nbsp;</td>
          <td class="paramname"> <em>outBlocks</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">size_t&nbsp;</td>
          <td class="paramname"> <em>length</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">word32&nbsp;</td>
          <td class="paramname"> <em>flags</em></td><td>&nbsp;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td><td> const<code> [virtual, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>encrypt and xor blocks according to flags (see FlagsForAdvancedProcessBlocks) </p>
<p>/note If BT_InBlockIsCounter is set, last byte of inBlocks may be modified. </p>

<p>Definition at line <a class="el" href="cryptlib_8cpp_source.html#l00134">134</a> of file <a class="el" href="cryptlib_8cpp_source.html">cryptlib.cpp</a>.</p>

<p>References <a class="el" href="class_block_transformation.html#adfdb78b033996020435c3dcffdca76ce">BlockTransformation::BlockSize()</a>, <a class="el" href="class_block_transformation.html#a1904cf145e4c5c650dd7aff32f54e153">BlockTransformation::ProcessAndXorBlock()</a>, and <a class="el" href="cryptlib_8h_source.html#l00444">BlockTransformation::ProcessBlock()</a>.</p>

<p>Referenced by <a class="el" href="modes_8cpp_source.html#l00193">CBC_Decryption::ProcessData()</a>, <a class="el" href="modes_8cpp_source.html#l00153">CBC_Encryption::ProcessData()</a>, <a class="el" href="modes_8cpp_source.html#l00147">ECB_OneWay::ProcessData()</a>, <a class="el" href="cmac_8cpp_source.html#l00099">CMAC_Base::TruncatedFinal()</a>, <a class="el" href="cmac_8cpp_source.html#l00058">CMAC_Base::Update()</a>, and <a class="el" href="cbcmac_8cpp_source.html#l00016">CBC_MAC_Base::Update()</a>.</p>

</div>
</div>
<hr/><h2>Member Data Documentation</h2>
<a class="anchor" id="afc85e8b4c25fa113bfd17e030b376b33"></a><!-- doxytag: member="SAFER::Enc::exp_tab" ref="afc85e8b4c25fa113bfd17e030b376b33" args="[256]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const byte SAFER::Base::exp_tab<code> [static, protected, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> 
        {1, 45, 226, 147, 190, 69, 21, 174, 120, 3, 135, 164, 184, 56, 207, 63,
        8, 103, 9, 148, 235, 38, 168, 107, 189, 24, 52, 27, 187, 191, 114, 247,
        64, 53, 72, 156, 81, 47, 59, 85, 227, 192, 159, 216, 211, 243, 141, 177,
        255, 167, 62, 220, 134, 119, 215, 166, 17, 251, 244, 186, 146, 145, 100, 131,
        241, 51, 239, 218, 44, 181, 178, 43, 136, 209, 153, 203, 140, 132, 29, 20,
        129, 151, 113, 202, 95, 163, 139, 87, 60, 130, 196, 82, 92, 28, 232, 160,
        4, 180, 133, 74, 246, 19, 84, 182, 223, 12, 26, 142, 222, 224, 57, 252,
        32, 155, 36, 78, 169, 152, 158, 171, 242, 96, 208, 108, 234, 250, 199, 217,
        0, 212, 31, 110, 67, 188, 236, 83, 137, 254, 122, 93, 73, 201, 50, 194,
        249, 154, 248, 109, 22, 219, 89, 150, 68, 233, 205, 230, 70, 66, 143, 10,
        193, 204, 185, 101, 176, 210, 198, 172, 30, 65, 98, 41, 46, 14, 116, 80,
        2, 90, 195, 37, 123, 138, 42, 91, 240, 6, 13, 71, 111, 112, 157, 126,
        16, 206, 18, 39, 213, 76, 79, 214, 121, 48, 104, 54, 117, 125, 228, 237,
        128, 106, 144, 55, 162, 94, 118, 170, 197, 127, 61, 175, 165, 229, 25, 97,
        253, 77, 124, 183, 11, 238, 173, 75, 34, 245, 231, 115, 35, 33, 200, 5,
        225, 102, 221, 179, 88, 105, 99, 86, 15, 161, 49, 149, 23, 7, 58, 40}
</pre></div>
<p>Definition at line <a class="el" href="safer_8h_source.html#l00026">26</a> of file <a class="el" href="safer_8h_source.html">safer.h</a>.</p>

</div>
</div>
<a class="anchor" id="a4d810b8ff6a4970e23aa5fc1d7bc932b"></a><!-- doxytag: member="SAFER::Enc::log_tab" ref="a4d810b8ff6a4970e23aa5fc1d7bc932b" args="[256]" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const byte SAFER::Base::log_tab<code> [static, protected, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">
<b>Initial value:</b><div class="fragment"><pre class="fragment"> 
        {128, 0, 176, 9, 96, 239, 185, 253, 16, 18, 159, 228, 105, 186, 173, 248,
        192, 56, 194, 101, 79, 6, 148, 252, 25, 222, 106, 27, 93, 78, 168, 130,
        112, 237, 232, 236, 114, 179, 21, 195, 255, 171, 182, 71, 68, 1, 172, 37,
        201, 250, 142, 65, 26, 33, 203, 211, 13, 110, 254, 38, 88, 218, 50, 15,
        32, 169, 157, 132, 152, 5, 156, 187, 34, 140, 99, 231, 197, 225, 115, 198,
        175, 36, 91, 135, 102, 39, 247, 87, 244, 150, 177, 183, 92, 139, 213, 84,
        121, 223, 170, 246, 62, 163, 241, 17, 202, 245, 209, 23, 123, 147, 131, 188,
        189, 82, 30, 235, 174, 204, 214, 53, 8, 200, 138, 180, 226, 205, 191, 217,
        208, 80, 89, 63, 77, 98, 52, 10, 72, 136, 181, 86, 76, 46, 107, 158,
        210, 61, 60, 3, 19, 251, 151, 81, 117, 74, 145, 113, 35, 190, 118, 42,
        95, 249, 212, 85, 11, 220, 55, 49, 22, 116, 215, 119, 167, 230, 7, 219,
        164, 47, 70, 243, 97, 69, 103, 227, 12, 162, 59, 28, 133, 24, 4, 29,
        41, 160, 143, 178, 90, 216, 166, 126, 238, 141, 83, 75, 161, 154, 193, 14,
        122, 73, 165, 44, 129, 196, 199, 54, 43, 127, 67, 149, 51, 242, 108, 104,
        109, 240, 2, 40, 206, 221, 155, 234, 94, 153, 124, 20, 134, 207, 229, 66,
        184, 64, 120, 45, 58, 233, 100, 31, 146, 144, 125, 57, 111, 224, 137, 48}
</pre></div>
<p>Definition at line <a class="el" href="safer_8h_source.html#l00027">27</a> of file <a class="el" href="safer_8h_source.html">safer.h</a>.</p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="safer_8h_source.html">safer.h</a></li>
<li><a class="el" href="safer_8cpp_source.html">safer.cpp</a></li>
</ul>
</div>
<hr size="1"/><address style="text-align: right;"><small>Generated on 9 Dec 2009 for Crypto++ by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>