<!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++: gf2_32.h Source File</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 Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Class List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="namespacemembers.html">Namespace Members</a> | <a class="qindex" href="functions.html">Class Members</a> | <a class="qindex" href="globals.html">File Members</a></div> <h1>gf2_32.h</h1><pre class="fragment"><div>00001 <span class="preprocessor">#ifndef CRYPTOPP_GF2_32_H</span> 00002 <span class="preprocessor"></span><span class="preprocessor">#define CRYPTOPP_GF2_32_H</span> 00003 <span class="preprocessor"></span> 00004 <span class="preprocessor">#include "<a class="code" href="cryptlib_8h.html">cryptlib.h</a>"</span> 00005 00006 NAMESPACE_BEGIN(CryptoPP) 00007 00008 <span class="comment">//! GF(2^32) with polynomial basis</span> <a name="l00009"></a><a class="code" href="class_g_f2__32.html">00009</a> <span class="comment"></span>class <a class="code" href="class_g_f2__32.html">GF2_32</a> 00010 { 00011 <span class="keyword">public</span>: 00012 <span class="keyword">typedef</span> word32 Element; 00013 <span class="keyword">typedef</span> <span class="keywordtype">int</span> RandomizationParameter; 00014 00015 GF2_32(word32 modulus=0x0000008D) : m_modulus(modulus) {} 00016 00017 Element RandomElement(<a class="code" href="class_random_number_generator.html">RandomNumberGenerator</a> &rng, <span class="keywordtype">int</span> ignored = 0)<span class="keyword"> const</span> 00018 <span class="keyword"> </span>{<span class="keywordflow">return</span> rng.<a class="code" href="class_random_number_generator.html#_x917_r_n_ga3">GenerateWord32</a>();} 00019 00020 <span class="keywordtype">bool</span> Equal(Element a, Element b)<span class="keyword"> const</span> 00021 <span class="keyword"> </span>{<span class="keywordflow">return</span> a==b;} 00022 00023 Element Identity()<span class="keyword"> const</span> 00024 <span class="keyword"> </span>{<span class="keywordflow">return</span> 0;} 00025 00026 Element Add(Element a, Element b)<span class="keyword"> const</span> 00027 <span class="keyword"> </span>{<span class="keywordflow">return</span> a^b;} 00028 00029 Element& Accumulate(Element &a, Element b)<span class="keyword"> const</span> 00030 <span class="keyword"> </span>{<span class="keywordflow">return</span> a^=b;} 00031 00032 Element Inverse(Element a)<span class="keyword"> const</span> 00033 <span class="keyword"> </span>{<span class="keywordflow">return</span> a;} 00034 00035 Element Subtract(Element a, Element b)<span class="keyword"> const</span> 00036 <span class="keyword"> </span>{<span class="keywordflow">return</span> a^b;} 00037 00038 Element& Reduce(Element &a, Element b)<span class="keyword"> const</span> 00039 <span class="keyword"> </span>{<span class="keywordflow">return</span> a^=b;} 00040 00041 Element Double(Element a)<span class="keyword"> const</span> 00042 <span class="keyword"> </span>{<span class="keywordflow">return</span> 0;} 00043 00044 Element MultiplicativeIdentity()<span class="keyword"> const</span> 00045 <span class="keyword"> </span>{<span class="keywordflow">return</span> 1;} 00046 00047 Element Multiply(Element a, Element b) <span class="keyword">const</span>; 00048 00049 Element <a class="code" href="class_square.html">Square</a>(Element a)<span class="keyword"> const</span> 00050 <span class="keyword"> </span>{<span class="keywordflow">return</span> Multiply(a, a);} 00051 00052 <span class="keywordtype">bool</span> IsUnit(Element a)<span class="keyword"> const</span> 00053 <span class="keyword"> </span>{<span class="keywordflow">return</span> a != 0;} 00054 00055 Element MultiplicativeInverse(Element a) <span class="keyword">const</span>; 00056 00057 Element Divide(Element a, Element b)<span class="keyword"> const</span> 00058 <span class="keyword"> </span>{<span class="keywordflow">return</span> Multiply(a, MultiplicativeInverse(b));} 00059 00060 <span class="keyword">private</span>: 00061 word32 m_modulus; 00062 }; 00063 00064 NAMESPACE_END 00065 00066 <span class="preprocessor">#endif</span> </div></pre><hr size="1"><address style="align: right;"><small>Generated on Sun Nov 7 08:23:57 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>