Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | File List | Class Members | File Members

gf2_32.h

00001 #ifndef CRYPTOPP_GF2_32_H 00002 #define CRYPTOPP_GF2_32_H 00003 00004 #include "cryptlib.h" 00005 00006 NAMESPACE_BEGIN(CryptoPP) 00007 00008 //! GF(2^32) with polynomial basis 00009 class GF2_32 00010 { 00011 public: 00012 typedef word32 Element; 00013 typedef int RandomizationParameter; 00014 00015 GF2_32(word32 modulus=0x0000008D) : m_modulus(modulus) {} 00016 00017 Element RandomElement(RandomNumberGenerator &rng, int ignored = 0) const 00018 {return rng.GenerateWord32();} 00019 00020 bool Equal(Element a, Element b) const 00021 {return a==b;} 00022 00023 Element Identity() const 00024 {return 0;} 00025 00026 Element Add(Element a, Element b) const 00027 {return a^b;} 00028 00029 Element& Accumulate(Element &a, Element b) const 00030 {return a^=b;} 00031 00032 Element Inverse(Element a) const 00033 {return a;} 00034 00035 Element Subtract(Element a, Element b) const 00036 {return a^b;} 00037 00038 Element& Reduce(Element &a, Element b) const 00039 {return a^=b;} 00040 00041 Element Double(Element a) const 00042 {return 0;} 00043 00044 Element MultiplicativeIdentity() const 00045 {return 1;} 00046 00047 Element Multiply(Element a, Element b) const; 00048 00049 Element Square(Element a) const 00050 {return Multiply(a, a);} 00051 00052 bool IsUnit(Element a) const 00053 {return a != 0;} 00054 00055 Element MultiplicativeInverse(Element a) const; 00056 00057 Element Divide(Element a, Element b) const 00058 {return Multiply(a, MultiplicativeInverse(b));} 00059 00060 private: 00061 word32 m_modulus; 00062 }; 00063 00064 NAMESPACE_END 00065 00066 #endif

Generated on Wed Jul 21 19:15:25 2004 for Crypto++ by doxygen 1.3.7-20040704