Class ECFieldElement.F2m

java.lang.Object
org.bouncycastle.math.ec.ECFieldElement
org.bouncycastle.math.ec.ECFieldElement.F2m
All Implemented Interfaces:
ECConstants
Enclosing class:
ECFieldElement

public static class ECFieldElement.F2m
extends ECFieldElement
Class representing the Elements of the finite field F2m in polynomial basis (PB) representation. Both trinomial (TPB) and pentanomial (PPB) polynomial basis representations are supported. Gaussian normal basis (GNB) representation is not supported.
  • Field Details

    • GNB

      public static final int GNB
      Indicates gaussian normal basis representation (GNB). Number chosen according to X9.62. GNB is not implemented at present.
      See Also:
      Constant Field Values
    • TPB

      public static final int TPB
      Indicates trinomial basis representation (TPB). Number chosen according to X9.62.
      See Also:
      Constant Field Values
    • PPB

      public static final int PPB
      Indicates pentanomial basis representation (PPB). Number chosen according to X9.62.
      See Also:
      Constant Field Values
  • Constructor Details

    • F2m

      public F2m​(int m, int k1, int k2, int k3, BigInteger x)
      Constructor for PPB.
      Parameters:
      m - The exponent m of F2m.
      k1 - The integer k1 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
      k2 - The integer k2 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
      k3 - The integer k3 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
      x - The BigInteger representing the value of the field element.
    • F2m

      public F2m​(int m, int k, BigInteger x)
      Constructor for TPB.
      Parameters:
      m - The exponent m of F2m.
      k - The integer k where xm + xk + 1 represents the reduction polynomial f(z).
      x - The BigInteger representing the value of the field element.
  • Method Details

    • toBigInteger

      public BigInteger toBigInteger()
      Specified by:
      toBigInteger in class ECFieldElement
    • getFieldName

      public String getFieldName()
      Specified by:
      getFieldName in class ECFieldElement
    • getFieldSize

      public int getFieldSize()
      Specified by:
      getFieldSize in class ECFieldElement
    • checkFieldElements

      public static void checkFieldElements​(ECFieldElement a, ECFieldElement b)
      Checks, if the ECFieldElements a and b are elements of the same field F2m (having the same representation).
      Parameters:
      a - field element.
      b - field element to be compared.
      Throws:
      IllegalArgumentException - if a and b are not elements of the same field F2m (having the same representation).
    • add

      public ECFieldElement add​(ECFieldElement b)
      Specified by:
      add in class ECFieldElement
    • subtract

      public ECFieldElement subtract​(ECFieldElement b)
      Specified by:
      subtract in class ECFieldElement
    • multiply

      public ECFieldElement multiply​(ECFieldElement b)
      Specified by:
      multiply in class ECFieldElement
    • divide

      public ECFieldElement divide​(ECFieldElement b)
      Specified by:
      divide in class ECFieldElement
    • negate

      public ECFieldElement negate()
      Specified by:
      negate in class ECFieldElement
    • square

      public ECFieldElement square()
      Specified by:
      square in class ECFieldElement
    • invert

      public ECFieldElement invert()
      Specified by:
      invert in class ECFieldElement
    • sqrt

      public ECFieldElement sqrt()
      Specified by:
      sqrt in class ECFieldElement
    • getRepresentation

      public int getRepresentation()
      Returns:
      the representation of the field F2m, either of TPB (trinomial basis representation) or PPB (pentanomial basis representation).
    • getM

      public int getM()
      Returns:
      the degree m of the reduction polynomial f(z).
    • getK1

      public int getK1()
      Returns:
      TPB: The integer k where xm + xk + 1 represents the reduction polynomial f(z).
      PPB: The integer k1 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
    • getK2

      public int getK2()
      Returns:
      TPB: Always returns 0
      PPB: The integer k2 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
    • getK3

      public int getK3()
      Returns:
      TPB: Always set to 0
      PPB: The integer k3 where xm + xk3 + xk2 + xk1 + 1 represents the reduction polynomial f(z).
    • equals

      public boolean equals​(Object anObject)
      Description copied from class: Object
      Compares this instance with the specified object and indicates if they are equal. In order to be equal, o must represent the same object as this instance using a class-specific comparison. The general contract is that this comparison should be reflexive, symmetric, and transitive. Also, no object reference other than null is equal to null.

      The default implementation returns true only if this == o. See Writing a correct equals method if you intend implementing your own equals method.

      The general contract for the equals and Object.hashCode() methods is that if equals returns true for any two objects, then hashCode() must return the same value for these objects. This means that subclasses of Object usually override either both methods or neither of them.

      Overrides:
      equals in class Object
      Parameters:
      anObject - the object to compare this instance with.
      Returns:
      true if the specified object is equal to this Object; false otherwise.
      See Also:
      Object.hashCode()
    • hashCode

      public int hashCode()
      Description copied from class: Object
      Returns an integer hash code for this object. By contract, any two objects for which Object.equals(java.lang.Object) returns true must return the same hash code value. This means that subclasses of Object usually override both methods or neither method.

      Note that hash values must not change over time unless information used in equals comparisons also changes.

      See Writing a correct hashCode method if you intend implementing your own hashCode method.

      Overrides:
      hashCode in class Object
      Returns:
      this object's hash code.
      See Also:
      Object.equals(java.lang.Object)