AI-generated Key Takeaways
- 
          ECFieldF2mdefines an elliptic curve over a characteristic 2 finite field with 2^m elements.
- 
          It supports both normal and polynomial basis representations, with constructors allowing specification of the field size (m) and reduction polynomial. 
- 
          Provides methods to retrieve field size, representation parameters (m, reduction polynomial details), and perform equality checks. 
- 
          Inherits methods from Objectfor basic object operations and implementsECFieldto provide the field size.
- 
          Instances of ECFieldF2mare immutable, ensuring their properties remain constant after creation.
This immutable class defines an elliptic curve (EC) characteristic 2 finite field.
See Also
Public Constructor Summary
| 
                ECFieldF2m(int m)
                
                 Creates an elliptic curve characteristic 2 finite
 field which has 2^ melements with normal basis. | |
| 
                ECFieldF2m(int m, BigInteger rp)
                
                 Creates an elliptic curve characteristic 2 finite
 field which has 2^ melements with
 polynomial basis. | |
| 
                ECFieldF2m(int m, int[] ks)
                
                 Creates an elliptic curve characteristic 2 finite
 field which has 2^ melements with
 polynomial basis. | 
Public Method Summary
| boolean | |
| int | 
                getFieldSize()
                
                 Returns the field size in bits which is  mfor this characteristic 2 finite field. | 
| int | 
                getM()
                
                 Returns the value  mof this characteristic
 2 finite field. | 
| int[] | 
                getMidTermsOfReductionPolynomial()
                
                 Returns an integer array which contains the order of the
 middle term(s) of the reduction polynomial for polynomial
 basis or null for normal basis. | 
| BigInteger | 
                getReductionPolynomial()
                
                 Returns a BigInteger whose i-th bit corresponds to the
 i-th coefficient of the reduction polynomial for polynomial
 basis or null for normal basis. | 
| int | 
                hashCode()
                
                 Returns a hash code value for this characteristic 2
 finite field. | 
Inherited Method Summary
Public Constructors
public ECFieldF2m (int m)
Creates an elliptic curve characteristic 2 finite
 field which has 2^m elements with normal basis.
Parameters
| m | with 2^ mbeing the number of elements. | 
|---|
Throws
| IllegalArgumentException | if mis not positive. | 
|---|
public ECFieldF2m (int m, BigInteger rp)
Creates an elliptic curve characteristic 2 finite
 field which has 2^m elements with
 polynomial basis.
 The reduction polynomial for this field is based
 on rp whose i-th bit corresponds to
 the i-th coefficient of the reduction polynomial.
 Note: A valid reduction polynomial is either a
 trinomial (X^m + X^k + 1
 with m > k >= 1) or a
 pentanomial (X^m + X^k3
 + X^k2 + X^k1 + 1 with
 m > k3 > k2
 > k1 >= 1).
Parameters
| m | with 2^ mbeing the number of elements. | 
|---|---|
| rp | the BigInteger whose i-th bit corresponds to the i-th coefficient of the reduction polynomial. | 
Throws
| NullPointerException | if rpis null. | 
|---|---|
| IllegalArgumentException | if mis not positive, orrpdoes not represent
 a valid reduction polynomial. | 
public ECFieldF2m (int m, int[] ks)
Creates an elliptic curve characteristic 2 finite
 field which has 2^m elements with
 polynomial basis. The reduction polynomial for this
 field is based on ks whose content
 contains the order of the middle term(s) of the
 reduction polynomial.
 Note: A valid reduction polynomial is either a
 trinomial (X^m + X^k + 1
 with m > k >= 1) or a
 pentanomial (X^m + X^k3
 + X^k2 + X^k1 + 1 with
 m > k3 > k2
 > k1 >= 1), so ks should
 have length 1 or 3.
Parameters
| m | with 2^ mbeing the number of elements. | 
|---|---|
| ks | the order of the middle term(s) of the reduction polynomial. Contents of this array are copied to protect against subsequent modification. | 
Throws
| NullPointerException | if ksis null. | 
|---|---|
| IllegalArgumentException | if mis not positive, or the length ofksis neither 1 nor 3, or values inksare not betweenm-1 and 1 (inclusive)
 and in descending order. | 
Public Methods
public boolean equals (Object obj)
Compares this finite field for equality with the specified object.
Parameters
| obj | the object to be compared. | 
|---|
Returns
- true if objis an instance of ECFieldF2m and bothmand the reduction polynomial match, false otherwise.
public int getFieldSize ()
Returns the field size in bits which is m
 for this characteristic 2 finite field.
Returns
- the field size in bits.
public int getM ()
Returns the value m of this characteristic
 2 finite field.
Returns
- mwith 2^- mbeing the number of elements.
public int[] getMidTermsOfReductionPolynomial ()
Returns an integer array which contains the order of the middle term(s) of the reduction polynomial for polynomial basis or null for normal basis.
Returns
- an integer array which contains the order of the middle term(s) of the reduction polynomial for polynomial basis or null for normal basis. A new array is returned each time this method is called.
public BigInteger getReductionPolynomial ()
Returns a BigInteger whose i-th bit corresponds to the i-th coefficient of the reduction polynomial for polynomial basis or null for normal basis.
Returns
- a BigInteger whose i-th bit corresponds to the i-th coefficient of the reduction polynomial for polynomial basis or null for normal basis.
public int hashCode ()
Returns a hash code value for this characteristic 2 finite field.
Returns
- a hash code value.
