java.lang.Object
org.bouncycastle.pqc.legacy.math.linearalgebra.GF2nField
Direct Known Subclasses:
GF2nONBField, GF2nPolynomialField

public abstract class GF2nField extends Object
This abstract class defines the finite field GF(2n). It holds the extension degree n, the characteristic, the irreducible fieldpolynomial and conversion matrices. GF2nField is implemented by the classes GF2nPolynomialField and GF2nONBField.
See Also:
  • Field Details

    • random

      protected final SecureRandom random
    • mDegree

      protected int mDegree
      the degree of this field
    • fieldPolynomial

      protected GF2Polynomial fieldPolynomial
      the irreducible fieldPolynomial stored in normal order (also for ONB)
    • fields

      protected Vector fields
      holds a list of GF2nFields to which elements have been converted and thus a COB-Matrix exists
    • matrices

      protected Vector matrices
      the COB matrices
  • Constructor Details

  • Method Details

    • getDegree

      public final int getDegree()
      Returns the degree n of this field.
      Returns:
      the degree n of this field
    • getFieldPolynomial

      public final GF2Polynomial getFieldPolynomial()
      Returns the fieldpolynomial as a new Bitstring.
      Returns:
      a copy of the fieldpolynomial as a new Bitstring
    • equals

      public final boolean equals(Object other)
      Decides whether the given object other is the same as this field.
      Overrides:
      equals in class Object
      Parameters:
      other - another object
      Returns:
      (this = = other)
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
      Returns:
      the hash code of this field
    • getRandomRoot

      protected abstract GF2nElement getRandomRoot(GF2Polynomial B0FieldPolynomial)
      Computes a random root from the given irreducible fieldpolynomial according to IEEE 1363 algorithm A.5.6. This cal take very long for big degrees.
      Parameters:
      B0FieldPolynomial - the fieldpolynomial if the other basis as a Bitstring
      Returns:
      a random root of BOFieldPolynomial in representation according to this field
      See Also:
      • "P1363 A.5.6, p103f"
    • computeCOBMatrix

      protected abstract void computeCOBMatrix(GF2nField B1)
      Computes the change-of-basis matrix for basis conversion according to 1363. The result is stored in the lists fields and matrices.
      Parameters:
      B1 - the GF2nField to convert to
      See Also:
      • "P1363 A.7.3, p111ff"
    • computeFieldPolynomial

      protected abstract void computeFieldPolynomial()
      Computes the fieldpolynomial. This can take a long time for big degrees.
    • invertMatrix

      protected final GF2Polynomial[] invertMatrix(GF2Polynomial[] matrix)
      Inverts the given matrix represented as bitstrings.
      Parameters:
      matrix - the matrix to invert as a Bitstring[]
      Returns:
      matrix^(-1)
    • convert

      public final GF2nElement convert(GF2nElement elem, GF2nField basis) throws RuntimeException
      Converts the given element in representation according to this field to a new element in representation according to B1 using the change-of-basis matrix calculated by computeCOBMatrix.
      Parameters:
      elem - the GF2nElement to convert
      basis - the basis to convert elem to
      Returns:
      elem converted to a new element representation according to basis
      Throws:
      RuntimeException
      See Also: