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

PolynomialMod2 Class Reference

#include <gf2n.h>

List of all members.


Detailed Description

Polynomial with Coefficients in GF(2).

Definition at line 17 of file gf2n.h.

ENUMS, EXCEPTIONS, and TYPEDEFS

typedef unsigned int RandomizationParameter

CREATORS

 PolynomialMod2 ()
 creates the zero polynomial
 PolynomialMod2 (const PolynomialMod2 &t)
 copy constructor
 PolynomialMod2 (word value, unsigned int bitLength=WORD_BITS)
 convert from word
 PolynomialMod2 (const byte *encodedPoly, unsigned int byteCount)
 convert from big-endian byte array
 PolynomialMod2 (BufferedTransformation &encodedPoly, unsigned int byteCount)
 convert from big-endian form stored in a BufferedTransformation
 PolynomialMod2 (RandomNumberGenerator &rng, unsigned int bitcount)
 create a random polynomial uniformly distributed over all polynomials with degree less than bitcount
PolynomialMod2 Monomial (unsigned i)
 return x^i
PolynomialMod2 Trinomial (unsigned t0, unsigned t1, unsigned t2)
 return x^t0 + x^t1 + x^t2
PolynomialMod2 Pentanomial (unsigned t0, unsigned t1, unsigned t2, unsigned int t3, unsigned int t4)
 return x^t0 + x^t1 + x^t2 + x^t3 + x^t4
PolynomialMod2 AllOnes (unsigned n)
 return x^(n-1) + ... + x + 1
const PolynomialMod2Zero ()
const PolynomialMod2One ()

ENCODE/DECODE

unsigned int MinEncodedSize () const
 minimum number of bytes to encode this polynomial
unsigned int Encode (byte *output, unsigned int outputLen) const
 encode in big-endian format
unsigned int Encode (BufferedTransformation &bt, unsigned int outputLen) const
void Decode (const byte *input, unsigned int inputLen)
void Decode (BufferedTransformation &bt, unsigned int inputLen)
void DEREncodeAsOctetString (BufferedTransformation &bt, unsigned int length) const
 encode value as big-endian octet string
void BERDecodeAsOctetString (BufferedTransformation &bt, unsigned int length)
 decode value as big-endian octet string

ACCESSORS

unsigned int BitCount () const
 number of significant bits = Degree() + 1
unsigned int ByteCount () const
 number of significant bytes = ceiling(BitCount()/8)
unsigned int WordCount () const
 number of significant words = ceiling(ByteCount()/sizeof(word))
bool GetBit (unsigned int n) const
 return the n-th bit, n=0 being the least significant bit
byte GetByte (unsigned int n) const
 return the n-th byte
signed int Degree () const
 the zero polynomial will return a degree of -1
unsigned int CoefficientCount () const
 degree + 1
int GetCoefficient (unsigned int i) const
 return coefficient for x^i
int operator[] (unsigned int i) const
 return coefficient for x^i
bool IsZero () const
bool Equals (const PolynomialMod2 &rhs) const

MANIPULATORS

PolynomialMod2operator= (const PolynomialMod2 &t)
PolynomialMod2operator &= (const PolynomialMod2 &t)
PolynomialMod2operator^= (const PolynomialMod2 &t)
PolynomialMod2operator+= (const PolynomialMod2 &t)
PolynomialMod2operator-= (const PolynomialMod2 &t)
PolynomialMod2operator *= (const PolynomialMod2 &t)
PolynomialMod2operator/= (const PolynomialMod2 &t)
PolynomialMod2operator%= (const PolynomialMod2 &t)
PolynomialMod2operator<<= (unsigned int)
PolynomialMod2operator>>= (unsigned int)
void Randomize (RandomNumberGenerator &rng, unsigned int bitcount)
void SetBit (unsigned int i, int value=1)
void SetByte (unsigned int n, byte value)
 set the n-th byte to value
void SetCoefficient (unsigned int i, int value)
void swap (PolynomialMod2 &a)

UNARY OPERATORS

bool operator! () const
PolynomialMod2 operator+ () const
PolynomialMod2 operator- () const

BINARY OPERATORS

PolynomialMod2 And (const PolynomialMod2 &b) const
PolynomialMod2 Xor (const PolynomialMod2 &b) const
PolynomialMod2 Plus (const PolynomialMod2 &b) const
PolynomialMod2 Minus (const PolynomialMod2 &b) const
PolynomialMod2 Times (const PolynomialMod2 &b) const
PolynomialMod2 DividedBy (const PolynomialMod2 &b) const
PolynomialMod2 Modulo (const PolynomialMod2 &b) const
PolynomialMod2 operator>> (unsigned int n) const
PolynomialMod2 operator<< (unsigned int n) const

OTHER ARITHMETIC FUNCTIONS

unsigned int Parity () const
 sum modulo 2 of all coefficients
bool IsIrreducible () const
 check for irreducibility
PolynomialMod2 Doubled () const
 is always zero since we're working modulo 2
PolynomialMod2 Squared () const
bool IsUnit () const
 only 1 is a unit
PolynomialMod2 MultiplicativeInverse () const
 return inverse if *this is a unit, otherwise return 0
PolynomialMod2 InverseMod (const PolynomialMod2 &) const
 calculate multiplicative inverse of *this mod n
PolynomialMod2 Gcd (const PolynomialMod2 &a, const PolynomialMod2 &n)
 greatest common divisor
void Divide (PolynomialMod2 &r, PolynomialMod2 &q, const PolynomialMod2 &a, const PolynomialMod2 &d)
 calculate r and q such that (a == d*q + r) && (deg(r) < deg(d))

INPUT/OUTPUT

std::ostream & operator<< (std::ostream &out, const PolynomialMod2 &a)


Constructor & Destructor Documentation

PolynomialMod2::PolynomialMod2 word  value,
unsigned int  bitLength = WORD_BITS
 

convert from word

value should be encoded with the least significant bit as coefficient to x^0 and most significant bit as coefficient to x^(WORD_BITS-1) bitLength denotes how much memory to allocate initiallyDefinition at line 22 of file gf2n.cpp.

References SecBlock< T, A >::size().


Member Function Documentation

unsigned int PolynomialMod2::MinEncodedSize  )  const [inline]
 

minimum number of bytes to encode this polynomial

MinEncodedSize of 0 is 1 Definition at line 77 of file gf2n.h.

unsigned int PolynomialMod2::Encode byte *  output,
unsigned int  outputLen
const
 

encode in big-endian format

if outputLen < MinEncodedSize, the most significant bytes will be dropped if outputLen > MinEncodedSize, the most significant bytes will be paddedDefinition at line 139 of file gf2n.cpp.

Referenced by DEREncodeAsOctetString().


The documentation for this class was generated from the following files:
Generated on Wed Jul 21 19:16:03 2004 for Crypto++ by doxygen 1.3.7-20040704