org.bouncycastle.math.field.GenericPolynomialExtensionField Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bcprov-ext-jdk15on Show documentation
Show all versions of bcprov-ext-jdk15on Show documentation
The Bouncy Castle Crypto package is a Java implementation of cryptographic algorithms. This jar contains JCE provider and lightweight API for the Bouncy Castle Cryptography APIs for JDK 1.5 to JDK 1.8. Note: this package includes the NTRU encryption algorithms.
The newest version!
package org.bouncycastle.math.field;
import java.math.BigInteger;
import org.bouncycastle.util.Integers;
class GenericPolynomialExtensionField implements PolynomialExtensionField
{
protected final FiniteField subfield;
protected final Polynomial minimalPolynomial;
GenericPolynomialExtensionField(FiniteField subfield, Polynomial polynomial)
{
this.subfield = subfield;
this.minimalPolynomial = polynomial;
}
public BigInteger getCharacteristic()
{
return subfield.getCharacteristic();
}
public int getDimension()
{
return subfield.getDimension() * minimalPolynomial.getDegree();
}
public FiniteField getSubfield()
{
return subfield;
}
public int getDegree()
{
return minimalPolynomial.getDegree();
}
public Polynomial getMinimalPolynomial()
{
return minimalPolynomial;
}
public boolean equals(Object obj)
{
if (this == obj)
{
return true;
}
if (!(obj instanceof GenericPolynomialExtensionField))
{
return false;
}
GenericPolynomialExtensionField other = (GenericPolynomialExtensionField)obj;
return subfield.equals(other.subfield) && minimalPolynomial.equals(other.minimalPolynomial);
}
public int hashCode()
{
return subfield.hashCode()
^ Integers.rotateLeft(minimalPolynomial.hashCode(), 16);
}
}