diff options
Diffstat (limited to 'bcprov/src/main/java/org/bouncycastle/math/field/GenericPolynomialExtensionField.java')
-rw-r--r-- | bcprov/src/main/java/org/bouncycastle/math/field/GenericPolynomialExtensionField.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/bcprov/src/main/java/org/bouncycastle/math/field/GenericPolynomialExtensionField.java b/bcprov/src/main/java/org/bouncycastle/math/field/GenericPolynomialExtensionField.java new file mode 100644 index 0000000..0b93a71 --- /dev/null +++ b/bcprov/src/main/java/org/bouncycastle/math/field/GenericPolynomialExtensionField.java @@ -0,0 +1,62 @@ +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); + } +} |