# ECFieldF2m

public class **ECFieldF2m** extends [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)  
implements [ECField](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECField.html) This immutable class defines an elliptic curve (EC)
characteristic 2 finite field.

##### See Also

- `https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECField.html`

### Public Constructor Summary

|---|---|
|   | [ECFieldF2m](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#ECFieldF2m(int))(int m) Creates an elliptic curve characteristic 2 finite field which has 2\^`m` elements with normal basis. |
|   | [ECFieldF2m](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#ECFieldF2m(int,%20java.math.BigInteger))(int m, BigInteger rp) Creates an elliptic curve characteristic 2 finite field which has 2\^`m` elements with polynomial basis. |
|   | [ECFieldF2m](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#ECFieldF2m(int,%20int[]))(int m, int\[\] ks) Creates an elliptic curve characteristic 2 finite field which has 2\^`m` elements with polynomial basis. |

### Public Method Summary

|---|---|
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this finite field for equality with the specified object. |
| int | [getFieldSize](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#getFieldSize())() Returns the field size in bits which is `m` for this characteristic 2 finite field. |
| int | [getM](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#getM())() Returns the value `m` of this characteristic 2 finite field. |
| int\[\] | [getMidTermsOfReductionPolynomial](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#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](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#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](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECFieldF2m.html#hashCode())() Returns a hash code value for this characteristic 2 finite field. |

### Inherited Method Summary

From class [java.lang.Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html)

|---|---|
| [Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) | [clone](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#clone())() Creates and returns a copy of this `Object`. |
| boolean | [equals](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#equals(java.lang.Object))([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj) Compares this instance with the specified object and indicates if they are equal. |
| void | [finalize](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#finalize())() Invoked when the garbage collector has detected that this instance is no longer reachable. |
| final [Class](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html)\<?\> | [getClass](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#getClass())() Returns the unique instance of `https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Class.html` that represents this object's class. |
| int | [hashCode](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#hashCode())() Returns an integer hash code for this object. |
| final void | [notify](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notify())() Causes a thread which is waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| final void | [notifyAll](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#notifyAll())() Causes all threads which are waiting on this object's monitor (by means of calling one of the `wait()` methods) to be woken up. |
| [String](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/String.html) | [toString](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#toString())() Returns a string containing a concise, human-readable description of this object. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long,%20int))(long timeout, int nanos) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait(long))(long timeout) Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object or until the specified timeout expires. |
| final void | [wait](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html#wait())() Causes the calling thread to wait until another thread calls the `notify()` or `notifyAll()` method of this object. |

From interface [java.security.spec.ECField](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECField.html)

|---|---|
| abstract int | [getFieldSize](https://developers.google.com/j2objc/javadoc/jre/reference/java/security/spec/ECField.html#getFieldSize())() Returns the field size in bits. |

## 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\^`m` being the number of elements. |
|---|---|

##### Throws

| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if `m` is 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\^`m` being the number of elements. |
| rp | the BigInteger whose i-th bit corresponds to the i-th coefficient of the reduction polynomial. |
|---|---|

##### Throws

| [NullPointerException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | if `rp` is null. |
| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if `m` is not positive, or `rp` does 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\^`m` being 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](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/NullPointerException.html) | if `ks` is null. |
| [IllegalArgumentException](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/IllegalArgumentException.html) | if`m` is not positive, or the length of `ks` is neither 1 nor 3, or values in `ks` are not between `m`-1 and 1 (inclusive) and in descending order. |
|---|---|

## Public Methods

#### public boolean
**equals**
([Object](https://developers.google.com/j2objc/javadoc/jre/reference/java/lang/Object.html) obj)

Compares this finite field for equality with the
specified object.

##### Parameters

| obj | the object to be compared. |
|---|---|

##### Returns

- true if `obj` is an instance of ECFieldF2m and both `m` and 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

- `m` with 2\^`m` being 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.