Crypto++ 8.9
Free C++ class library of cryptographic schemes
|
Polynomial with Coefficients in GF(2) More...
#include <gf2n.h>
Classes | |
class | DivideByZero |
Exception thrown when divide by zero is encountered. More... | |
ENUMS, EXCEPTIONS, and TYPEDEFS | |
typedef unsigned int | RandomizationParameter |
INPUT/OUTPUT | |
class | GF2NT |
class | GF2NT233 |
std::ostream & | operator<< (std::ostream &out, const PolynomialMod2 &a) |
CREATORS | |
PolynomialMod2 () | |
Construct the zero polynomial. | |
PolynomialMod2 (const PolynomialMod2 &t) | |
Copy construct a PolynomialMod2. | |
PolynomialMod2 (word value, size_t bitLength=WORD_BITS) | |
Construct a PolynomialMod2 from a word. | |
PolynomialMod2 (const byte *encodedPoly, size_t byteCount) | |
Construct a PolynomialMod2 from big-endian byte array. | |
PolynomialMod2 (BufferedTransformation &encodedPoly, size_t byteCount) | |
Construct a PolynomialMod2 from big-endian form stored in a BufferedTransformation. | |
PolynomialMod2 (RandomNumberGenerator &rng, size_t bitcount) | |
Create a uniformly distributed random polynomial. | |
static PolynomialMod2 | Monomial (size_t i) |
Provides x^i. | |
static PolynomialMod2 | Trinomial (size_t t0, size_t t1, size_t t2) |
Provides x^t0 + x^t1 + x^t2. | |
static PolynomialMod2 | Pentanomial (size_t t0, size_t t1, size_t t2, size_t t3, size_t t4) |
Provides x^t0 + x^t1 + x^t2 + x^t3 + x^t4. | |
static PolynomialMod2 | AllOnes (size_t n) |
Provides x^(n-1) + ... + x + 1. | |
static const PolynomialMod2 & | Zero () |
The Zero polinomial. | |
static const PolynomialMod2 & | One () |
The One polinomial. | |
ENCODE/DECODE | |
unsigned int | MinEncodedSize () const |
minimum number of bytes to encode this polynomial | |
void | Encode (byte *output, size_t outputLen) const |
encode in big-endian format | |
void | Encode (BufferedTransformation &bt, size_t outputLen) const |
void | Decode (const byte *input, size_t inputLen) |
void | Decode (BufferedTransformation &bt, size_t inputLen) |
void | DEREncodeAsOctetString (BufferedTransformation &bt, size_t length) const |
encode value as big-endian octet string | |
void | BERDecodeAsOctetString (BufferedTransformation &bt, size_t 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 (size_t n) const |
return the n-th bit, n=0 being the least significant bit | |
byte | GetByte (size_t 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 (size_t 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 | |
PolynomialMod2 & | operator= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator&= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator^= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator+= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator-= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator*= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator/= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator%= (const PolynomialMod2 &t) |
PolynomialMod2 & | operator<<= (unsigned int) |
PolynomialMod2 & | operator>>= (unsigned int) |
void | Randomize (RandomNumberGenerator &rng, size_t bitcount) |
void | SetBit (size_t i, int value=1) |
void | SetByte (size_t n, byte value) |
set the n-th byte to value | |
void | SetCoefficient (size_t 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 | |
static PolynomialMod2 | Gcd (const PolynomialMod2 &a, const PolynomialMod2 &n) |
greatest common divisor | |
static 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)) | |
Construct a PolynomialMod2 from a 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 initially
|
inline |
Construct a PolynomialMod2 from big-endian byte array.
|
inline |
Construct a PolynomialMod2 from big-endian form stored in a BufferedTransformation.
|
inline |
|
static |
Provides x^i.
|
static |
Provides x^t0 + x^t1 + x^t2.
t0 > t1 > t2.
|
static |
Provides x^t0 + x^t1 + x^t2 + x^t3 + x^t4.
t0 > t1 > t2 > t3 > t4.
|
static |
Provides x^(n-1) + ... + x + 1.
|
static |
The Zero polinomial.
|
static |
The One polinomial.
|
inline |
void PolynomialMod2::Encode | ( | byte * | output, |
size_t | 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 padded
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |