GF2mField (Bouncy Castle Library 1.54 API Specification)
Date: 2015-12-29

org.bouncycastle.pqc.math.linearalgebra

## Class GF2mField

- java.lang.Object
- - org.bouncycastle.pqc.math.linearalgebra.GF2mField

-     public class GF2mField
      extends java.lang.Object

  This class describes operations with elements from the finite field F = GF(2^m). ( GF(2^m)= GF(2)[A] where A is a root of irreducible polynomial with degree m, each field element B has a polynomial basis representation, i.e. it is represented by a different binary polynomial of degree less than m, B = poly(A) ) All operations are defined only for field with 1< m <32. For the representation of field elements the map f: F->Z, poly(A)->poly(2) is used, where integers have the binary representation. For example: A^7+A^3+A+1 -> (00...0010001011)=139 Also for elements type Integer is used.
  See Also:
    `PolynomialRingGF2`

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `GF2mField(byte[] enc)`
    `GF2mField(GF2mField field)`
    `GF2mField(int degree)` create a finite field GF(2^m)
    `GF2mField(int degree, int poly)` create a finite field GF(2^m) with the fixed field polynomial

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `add(int a, int b)` Return sum of two elements
    `java.lang.String` | `elementToStr(int a)`
    `boolean` | `equals(java.lang.Object other)` checks if given object is equal to this field.
    `int` | `exp(int a, int k)` compute exponentiation a^k
    `int` | `getDegree()` return degree of the field
    `byte[]` | `getEncoded()` return the encoded form of this field
    `int` | `getPolynomial()` return the field polynomial
    `int` | `getRandomElement(java.security.SecureRandom sr)` create a random field element using PRNG sr
    `int` | `getRandomNonZeroElement()` create a random non-zero field element
    `int` | `getRandomNonZeroElement(java.security.SecureRandom sr)` create a random non-zero field element using PRNG sr
    `int` | `hashCode()`
    `int` | `inverse(int a)` compute the multiplicative inverse of a
    `boolean` | `isElementOfThisField(int e)`
    `int` | `mult(int a, int b)` Return product of two elements
    `int` | `sqRoot(int a)` compute the square root of an integer
    `java.lang.String` | `toString()` Returns a human readable form of this field.

    - ### Methods inherited from class java.lang.Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### GF2mField

          public GF2mField(int degree)

      create a finite field GF(2^m)
      Parameters:
        `degree` - the degree of the field

    - #### GF2mField

          public GF2mField(int degree,
                   int poly)

      create a finite field GF(2^m) with the fixed field polynomial
      Parameters:
        `degree` - the degree of the field
        `poly` - the field polynomial

    - #### GF2mField

          public GF2mField(byte[] enc)

    - #### GF2mField

          public GF2mField(GF2mField field)

  - ### Method Detail

    - #### getDegree

          public int getDegree()

      return degree of the field
      Returns:
        degree of the field

    - #### getPolynomial

          public int getPolynomial()

      return the field polynomial
      Returns:
        the field polynomial

    - #### getEncoded

          public byte[] getEncoded()

      return the encoded form of this field
      Returns:
        the field in byte array form

    - #### add

          public int add(int a,
                int b)

      Return sum of two elements
      Parameters:
        `a` -
        `b` -
      Returns:
        a+b

    - #### mult

          public int mult(int a,
                 int b)

      Return product of two elements
      Parameters:
        `a` -
        `b` -
      Returns:
        a*b

    - #### exp

          public int exp(int a,
                int k)

      compute exponentiation a^k
      Parameters:
        `a` - a field element a
        `k` - k degree
      Returns:
        a^k

    - #### inverse

          public int inverse(int a)

      compute the multiplicative inverse of a
      Parameters:
        `a` - a field element a
      Returns:
        a-1

    - #### sqRoot

          public int sqRoot(int a)

      compute the square root of an integer
      Parameters:
        `a` - a field element a
      Returns:
        a1/2

    - #### getRandomElement

          public int getRandomElement(java.security.SecureRandom sr)

      create a random field element using PRNG sr
      Parameters:
        `sr` - SecureRandom
      Returns:
        a random element

    - #### getRandomNonZeroElement

          public int getRandomNonZeroElement()

      create a random non-zero field element
      Returns:
        a random element

    - #### getRandomNonZeroElement

          public int getRandomNonZeroElement(java.security.SecureRandom sr)

      create a random non-zero field element using PRNG sr
      Parameters:
        `sr` - SecureRandom
      Returns:
        a random non-zero element

    - #### isElementOfThisField

          public boolean isElementOfThisField(int e)

      Returns:
        true if e is encoded element of this field and false otherwise

    - #### elementToStr

          public java.lang.String elementToStr(int a)

    - #### equals

          public boolean equals(java.lang.Object other)

      checks if given object is equal to this field.

      The method returns false whenever the given object is not GF2m.

      Overrides:
        `equals` in class `java.lang.Object`
      Parameters:
        `other` - object
      Returns:
        true or false

    - #### hashCode

          public int hashCode()

      Overrides:
        `hashCode` in class `java.lang.Object`

    - #### toString

          public java.lang.String toString()

      Returns a human readable form of this field.
      Overrides:
        `toString` in class `java.lang.Object`
      Returns:
        a human readable form of this field.