java.lang.Object
org.bouncycastle.pqc.legacy.math.linearalgebra.GF2nElement
All Implemented Interfaces:
GFElement
Direct Known Subclasses:
GF2nONBElement, GF2nPolynomialElement

public abstract class GF2nElement extends Object implements GFElement
This abstract class implements an element of the finite field GF(2)n in either optimal normal basis representation (ONB) or in polynomial representation. It is extended by the classes GF2nONBElement and GF2nPolynomialElement .
See Also:
  • Field Details

    • mField

      protected GF2nField mField
      holds a pointer to this element's corresponding field.
    • mDegree

      protected int mDegree
      holds the extension degree n of this element's corresponding field.
  • Constructor Details

    • GF2nElement

      public GF2nElement()
  • Method Details

    • clone

      public abstract Object clone()
      Specified by:
      clone in interface GFElement
      Overrides:
      clone in class Object
      Returns:
      a copy of this GF2nElement
    • testRightmostBit

      public abstract boolean testRightmostBit()
      Returns whether the rightmost bit of the bit representation is set. This is needed for data conversion according to 1363.
      Returns:
      true if the rightmost bit of this element is set
    • getField

      public final GF2nField getField()
      Returns the field of this element.
      Returns:
      the field of this element
    • increase

      public abstract GF2nElement increase()
      Returns this element + 1.
      Returns:
      this + 1
    • increaseThis

      public abstract void increaseThis()
      Increases this element by one.
    • subtract

      public final GFElement subtract(GFElement minuend)
      Compute the difference of this element and minuend.
      Specified by:
      subtract in interface GFElement
      Parameters:
      minuend - the minuend
      Returns:
      this - minuend (newly created)
    • subtractFromThis

      public final void subtractFromThis(GFElement minuend)
      Compute the difference of this element and minuend, overwriting this element.
      Specified by:
      subtractFromThis in interface GFElement
      Parameters:
      minuend - the minuend
    • square

      public abstract GF2nElement square()
      Returns this element to the power of 2.
      Returns:
      this2
    • squareThis

      public abstract void squareThis()
      Squares this element.
    • squareRoot

      public abstract GF2nElement squareRoot()
      Compute the square root of this element and return the result in a new GF2nElement.
      Returns:
      this1/2 (newly created)
    • squareRootThis

      public abstract void squareRootThis()
      Compute the square root of this element.
    • convert

      public final GF2nElement convert(GF2nField basis)
      Performs a basis transformation of this element to the given GF2nField basis.
      Parameters:
      basis - the GF2nField representation to transform this element to
      Returns:
      this element in the representation of basis
    • trace

      public abstract int trace()
      Returns the trace of this element.
      Returns:
      the trace of this element
    • solveQuadraticEquation

      public abstract GF2nElement solveQuadraticEquation() throws RuntimeException
      Solves a quadratic equation.
      Let z2 + z = this. Then this method returns z.
      Returns:
      z with z2 + z = this
      Throws:
      RuntimeException