<!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++: GF2NP 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.7.3 --> <div id="top"> <div id="titlearea"> <table cellspacing="0" cellpadding="0"> <tbody> <tr style="height: 56px;"> <td style="padding-left: 0.5em;"> <div id="projectname">Crypto++</div> </td> </tr> </tbody> </table> </div> <div id="navrow1" class="tabs"> <ul class="tablist"> <li><a href="index.html"><span>Main 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 id="navrow2" class="tabs2"> <ul class="tablist"> <li><a href="annotated.html"><span>Class List</span></a></li> <li><a href="classes.html"><span>Class Index</span></a></li> <li><a href="hierarchy.html"><span>Class Hierarchy</span></a></li> <li><a href="functions.html"><span>Class Members</span></a></li> </ul> </div> </div> <div class="header"> <div class="summary"> <a href="#pub-types">Public Types</a> | <a href="#pub-methods">Public Member Functions</a> | <a href="#pro-attribs">Protected Attributes</a> </div> <div class="headertitle"> <h1>GF2NP Class Reference</h1> </div> </div> <div class="contents"> <!-- doxytag: class="GF2NP" --><!-- doxytag: inherits="QuotientRing< EuclideanDomainOf< PolynomialMod2 > >" --> <p>GF(2^n) with Polynomial Basis. <a href="#_details">More...</a></p> <p><code>#include <<a class="el" href="gf2n_8h_source.html">gf2n.h</a>></code></p> <div class="dynheader"> Inheritance diagram for GF2NP:</div> <div class="dyncontent"> <div class="center"> <img src="class_g_f2_n_p.png" usemap="#GF2NP_map" alt=""/> <map id="GF2NP_map" name="GF2NP_map"> <area href="class_quotient_ring.html" alt="QuotientRing< EuclideanDomainOf< PolynomialMod2 > >" shape="rect" coords="203,112,600,136"/> <area href="class_abstract_ring.html" alt="AbstractRing< EuclideanDomainOf< PolynomialMod2 >::Element >" shape="rect" coords="203,56,600,80"/> <area href="class_abstract_group.html" alt="AbstractGroup< EuclideanDomainOf< PolynomialMod2 >::Element >" shape="rect" coords="203,0,600,24"/> <area href="class_g_f2_n_p_p.html" alt="GF2NPP" shape="rect" coords="0,224,397,248"/> <area href="class_g_f2_n_t.html" alt="GF2NT" shape="rect" coords="407,224,804,248"/> </map> </div></div> <p><a href="class_g_f2_n_p-members.html">List of all members.</a></p> <table class="memberdecls"> <tr><td colspan="2"><h2><a name="pub-types"></a> Public Types</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aeba485b8efc03cb16525c389519833e1"></a><!-- doxytag: member="GF2NP::EuclideanDomain" ref="aeba485b8efc03cb16525c389519833e1" args="" --> typedef <a class="el" href="class_euclidean_domain_of.html">EuclideanDomainOf</a><br class="typebreak"/> < <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> > </td><td class="memItemRight" valign="bottom"><b>EuclideanDomain</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5fc43636ce1b8ab3c8aa4ec309242e0"></a><!-- doxytag: member="GF2NP::Element" ref="aa5fc43636ce1b8ab3c8aa4ec309242e0" args="" --> typedef <a class="el" href="class_euclidean_domain_of.html">EuclideanDomainOf</a><br class="typebreak"/> < <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> >::Element </td><td class="memItemRight" valign="bottom"><b>Element</b></td></tr> <tr><td colspan="2"><h2><a name="pub-methods"></a> Public Member Functions</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a17c7806095a9fa5ed8da633cc166a3f2"></a><!-- doxytag: member="GF2NP::GF2NP" ref="a17c7806095a9fa5ed8da633cc166a3f2" args="(const PolynomialMod2 &modulus)" -->  </td><td class="memItemRight" valign="bottom"><b>GF2NP</b> (const <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> &modulus)</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7bdb8cf98bfc95e88eb10405e5ad16f"></a><!-- doxytag: member="GF2NP::Clone" ref="aa7bdb8cf98bfc95e88eb10405e5ad16f" args="() const " --> virtual <a class="el" href="class_g_f2_n_p.html">GF2NP</a> * </td><td class="memItemRight" valign="bottom"><b>Clone</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac29895f70ffbceeaa3f9460cdaae3685"></a><!-- doxytag: member="GF2NP::DEREncode" ref="ac29895f70ffbceeaa3f9460cdaae3685" args="(BufferedTransformation &bt) const " --> virtual void </td><td class="memItemRight" valign="bottom"><b>DEREncode</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &bt) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a50111212053796f53b1b35b4678b1ede"></a><!-- doxytag: member="GF2NP::DEREncodeElement" ref="a50111212053796f53b1b35b4678b1ede" args="(BufferedTransformation &out, const Element &a) const " --> void </td><td class="memItemRight" valign="bottom"><b>DEREncodeElement</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &out, const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae673a1ae624ac618c3d8d413620ed81c"></a><!-- doxytag: member="GF2NP::BERDecodeElement" ref="ae673a1ae624ac618c3d8d413620ed81c" args="(BufferedTransformation &in, Element &a) const " --> void </td><td class="memItemRight" valign="bottom"><b>BERDecodeElement</b> (<a class="el" href="class_buffered_transformation.html">BufferedTransformation</a> &in, Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae4767ac33544de4fbc449d3bbe17715e"></a><!-- doxytag: member="GF2NP::Equal" ref="ae4767ac33544de4fbc449d3bbe17715e" args="(const Element &a, const Element &b) const " --> bool </td><td class="memItemRight" valign="bottom"><b>Equal</b> (const Element &a, const Element &b) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eb48ee2cd703818c84d531308e47546"></a><!-- doxytag: member="GF2NP::IsUnit" ref="a4eb48ee2cd703818c84d531308e47546" args="(const Element &a) const " --> bool </td><td class="memItemRight" valign="bottom"><b>IsUnit</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a97725ab6dd770b220e9f67d1b1c0e8d1"></a><!-- doxytag: member="GF2NP::MaxElementBitLength" ref="a97725ab6dd770b220e9f67d1b1c0e8d1" args="() const " --> unsigned int </td><td class="memItemRight" valign="bottom"><b>MaxElementBitLength</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6287e6aaf7478f86fcb3862f8a96ad22"></a><!-- doxytag: member="GF2NP::MaxElementByteLength" ref="a6287e6aaf7478f86fcb3862f8a96ad22" args="() const " --> unsigned int </td><td class="memItemRight" valign="bottom"><b>MaxElementByteLength</b> () const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3773fda3605db932623a4a3138498040"></a><!-- doxytag: member="GF2NP::SquareRoot" ref="a3773fda3605db932623a4a3138498040" args="(const Element &a) const " --> Element </td><td class="memItemRight" valign="bottom"><b>SquareRoot</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a201782096f78be22d4a0532643e0a0fd"></a><!-- doxytag: member="GF2NP::HalfTrace" ref="a201782096f78be22d4a0532643e0a0fd" args="(const Element &a) const " --> Element </td><td class="memItemRight" valign="bottom"><b>HalfTrace</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a349a067c766caf6b98678d51cfa1de03"></a><!-- doxytag: member="GF2NP::SolveQuadraticEquation" ref="a349a067c766caf6b98678d51cfa1de03" args="(const Element &a) const " --> Element </td><td class="memItemRight" valign="bottom"><b>SolveQuadraticEquation</b> (const Element &a) const </td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6aba5afdb504051dddeb9704bd02c490"></a><!-- doxytag: member="GF2NP::GetDomain" ref="a6aba5afdb504051dddeb9704bd02c490" args="() const" --> const <a class="el" href="class_euclidean_domain_of.html">EuclideanDomain</a> & </td><td class="memItemRight" valign="bottom"><b>GetDomain</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a79d382173484c284cac62d8fb341e68d"></a><!-- doxytag: member="GF2NP::GetModulus" ref="a79d382173484c284cac62d8fb341e68d" args="() const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>GetModulus</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af569e328dd07b9c1758633c742ca178e"></a><!-- doxytag: member="GF2NP::Identity" ref="af569e328dd07b9c1758633c742ca178e" args="() const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>Identity</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a455b3ef5b970e6f9af4e7b947dc3e89e"></a><!-- doxytag: member="GF2NP::Add" ref="a455b3ef5b970e6f9af4e7b947dc3e89e" args="(const Element &a, const Element &b) const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>Add</b> (const Element &a, const Element &b) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a516445c6cd0a881edc97de6fc99ea4a7"></a><!-- doxytag: member="GF2NP::Accumulate" ref="a516445c6cd0a881edc97de6fc99ea4a7" args="(Element &a, const Element &b) const" --> Element & </td><td class="memItemRight" valign="bottom"><b>Accumulate</b> (Element &a, const Element &b) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a32a8f4858aa802ef080984b5a00be015"></a><!-- doxytag: member="GF2NP::Inverse" ref="a32a8f4858aa802ef080984b5a00be015" args="(const Element &a) const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>Inverse</b> (const Element &a) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a84eadc2e3d6c726ce402a5bf4ec854df"></a><!-- doxytag: member="GF2NP::Subtract" ref="a84eadc2e3d6c726ce402a5bf4ec854df" args="(const Element &a, const Element &b) const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>Subtract</b> (const Element &a, const Element &b) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3f91d1daa995dbe41f7526d88c377977"></a><!-- doxytag: member="GF2NP::Reduce" ref="a3f91d1daa995dbe41f7526d88c377977" args="(Element &a, const Element &b) const" --> Element & </td><td class="memItemRight" valign="bottom"><b>Reduce</b> (Element &a, const Element &b) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8789051cffe054f0edf5e9ac7d9cb686"></a><!-- doxytag: member="GF2NP::Double" ref="a8789051cffe054f0edf5e9ac7d9cb686" args="(const Element &a) const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>Double</b> (const Element &a) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a76393d59a5d54a8138ecf9a12bc03f84"></a><!-- doxytag: member="GF2NP::MultiplicativeIdentity" ref="a76393d59a5d54a8138ecf9a12bc03f84" args="() const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>MultiplicativeIdentity</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9743b3bec9033de1243205cb0178a8a0"></a><!-- doxytag: member="GF2NP::Multiply" ref="a9743b3bec9033de1243205cb0178a8a0" args="(const Element &a, const Element &b) const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>Multiply</b> (const Element &a, const Element &b) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa4b1b1638b50483bf4904fc909f54883"></a><!-- doxytag: member="GF2NP::Square" ref="aa4b1b1638b50483bf4904fc909f54883" args="(const Element &a) const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>Square</b> (const Element &a) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac4188ae1dccb83f17c118748afd60df8"></a><!-- doxytag: member="GF2NP::MultiplicativeInverse" ref="ac4188ae1dccb83f17c118748afd60df8" args="(const Element &a) const" --> const Element & </td><td class="memItemRight" valign="bottom"><b>MultiplicativeInverse</b> (const Element &a) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a847f1d958a70c9caf1713321a6055c52"></a><!-- doxytag: member="GF2NP::operator==" ref="a847f1d958a70c9caf1713321a6055c52" args="(const QuotientRing< EuclideanDomainOf< PolynomialMod2 > > &rhs) const" --> bool </td><td class="memItemRight" valign="bottom"><b>operator==</b> (const <a class="el" href="class_quotient_ring.html">QuotientRing</a>< <a class="el" href="class_euclidean_domain_of.html">EuclideanDomainOf</a>< <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> > > &rhs) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a3240b133d9df74c34868c11901b304fe"></a><!-- doxytag: member="GF2NP::Divide" ref="a3240b133d9df74c34868c11901b304fe" args="(const Element &a, const Element &b) const" --> virtual const Element & </td><td class="memItemRight" valign="bottom"><b>Divide</b> (const Element &a, const Element &b) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a23be7c80484bc46fd8beaa0a6aefa66d"></a><!-- doxytag: member="GF2NP::Exponentiate" ref="a23be7c80484bc46fd8beaa0a6aefa66d" args="(const Element &a, const Integer &e) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>Exponentiate</b> (const Element &a, const <a class="el" href="class_integer.html">Integer</a> &e) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acbe859e24ea6ee1e22ed2a1261f7f9d0"></a><!-- doxytag: member="GF2NP::CascadeExponentiate" ref="acbe859e24ea6ee1e22ed2a1261f7f9d0" args="(const Element &x, const Integer &e1, const Element &y, const Integer &e2) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>CascadeExponentiate</b> (const Element &x, const <a class="el" href="class_integer.html">Integer</a> &e1, const Element &y, const <a class="el" href="class_integer.html">Integer</a> &e2) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a56b1047d5e1c57d9b3c52e20af464cfe"></a><!-- doxytag: member="GF2NP::SimultaneousExponentiate" ref="a56b1047d5e1c57d9b3c52e20af464cfe" args="(Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const" --> virtual void </td><td class="memItemRight" valign="bottom"><b>SimultaneousExponentiate</b> (Element *results, const Element &base, const <a class="el" href="class_integer.html">Integer</a> *exponents, unsigned int exponentsCount) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab48b7bf4c39d1b2bd06ac92e71e0b905"></a><!-- doxytag: member="GF2NP::MultiplicativeGroup" ref="ab48b7bf4c39d1b2bd06ac92e71e0b905" args="() const" --> virtual const <a class="el" href="class_abstract_group.html">AbstractGroup</a><br class="typebreak"/> < <a class="el" href="class_euclidean_domain_of.html">EuclideanDomainOf</a><br class="typebreak"/> < <a class="el" href="class_polynomial_mod2.html">PolynomialMod2</a> >::Element > & </td><td class="memItemRight" valign="bottom"><b>MultiplicativeGroup</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac571ac9b67ad9b7ef893c715b1ec2f43"></a><!-- doxytag: member="GF2NP::InversionIsFast" ref="ac571ac9b67ad9b7ef893c715b1ec2f43" args="() const" --> virtual bool </td><td class="memItemRight" valign="bottom"><b>InversionIsFast</b> () const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf1b8d510593fd5a9e8111580107741b"></a><!-- doxytag: member="GF2NP::ScalarMultiply" ref="abf1b8d510593fd5a9e8111580107741b" args="(const Element &a, const Integer &e) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>ScalarMultiply</b> (const Element &a, const <a class="el" href="class_integer.html">Integer</a> &e) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aca3e1ca578003aff2595cc8d73522894"></a><!-- doxytag: member="GF2NP::CascadeScalarMultiply" ref="aca3e1ca578003aff2595cc8d73522894" args="(const Element &x, const Integer &e1, const Element &y, const Integer &e2) const" --> virtual Element </td><td class="memItemRight" valign="bottom"><b>CascadeScalarMultiply</b> (const Element &x, const <a class="el" href="class_integer.html">Integer</a> &e1, const Element &y, const <a class="el" href="class_integer.html">Integer</a> &e2) const</td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a00a5cd4b22aab947ec107ec93ad13122"></a><!-- doxytag: member="GF2NP::SimultaneousMultiply" ref="a00a5cd4b22aab947ec107ec93ad13122" args="(Element *results, const Element &base, const Integer *exponents, unsigned int exponentsCount) const" --> virtual void </td><td class="memItemRight" valign="bottom"><b>SimultaneousMultiply</b> (Element *results, const Element &base, const <a class="el" href="class_integer.html">Integer</a> *exponents, unsigned int exponentsCount) const</td></tr> <tr><td colspan="2"><h2><a name="pro-attribs"></a> Protected Attributes</h2></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ade49365898ce399a879beb3f409b4e5b"></a><!-- doxytag: member="GF2NP::m" ref="ade49365898ce399a879beb3f409b4e5b" args="" --> unsigned int </td><td class="memItemRight" valign="bottom"><b>m</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afa96b7fc70b6b3abbc3a1eca196d7b6c"></a><!-- doxytag: member="GF2NP::m_domain" ref="afa96b7fc70b6b3abbc3a1eca196d7b6c" args="" --> <a class="el" href="class_euclidean_domain_of.html">EuclideanDomain</a> </td><td class="memItemRight" valign="bottom"><b>m_domain</b></td></tr> <tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a07127b18d71b1a503e29436fce18e5b4"></a><!-- doxytag: member="GF2NP::m_modulus" ref="a07127b18d71b1a503e29436fce18e5b4" args="" --> Element </td><td class="memItemRight" valign="bottom"><b>m_modulus</b></td></tr> </table> <hr/><a name="_details"></a><h2>Detailed Description</h2> <div class="textblock"><p>GF(2^n) with Polynomial Basis. </p> <p>Definition at line <a class="el" href="gf2n_8h_source.html#l00281">281</a> of file <a class="el" href="gf2n_8h_source.html">gf2n.h</a>.</p> </div><hr/>The documentation for this class was generated from the following files:<ul> <li><a class="el" href="gf2n_8h_source.html">gf2n.h</a></li> <li><a class="el" href="gf2n_8cpp_source.html">gf2n.cpp</a></li> </ul> </div> <hr class="footer"/><address class="footer"><small>Generated on Tue Feb 8 2011 for Crypto++ by  <a href="http://www.doxygen.org/index.html"> <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.3 </small></address> </body> </html>