diff options
author | Peter Dettman <peter.dettman@bouncycastle.org> | 2015-03-26 14:01:31 +0700 |
---|---|---|
committer | Peter Dettman <peter.dettman@bouncycastle.org> | 2015-03-26 14:01:31 +0700 |
commit | 37ebe56013377b5d5aaa2bf8b15ca9d8ea68d3ed (patch) | |
tree | 955a80d556306fe0deb98d8ccaa5f82084015221 /crypto/src/math | |
parent | Merge branch 'mpsinfo-duplicatedigest' (diff) | |
download | BouncyCastle.NET-ed25519-37ebe56013377b5d5aaa2bf8b15ca9d8ea68d3ed.tar.xz |
F2mCurve cleanup
Diffstat (limited to 'crypto/src/math')
-rw-r--r-- | crypto/src/math/ec/ECAlgorithms.cs | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/crypto/src/math/ec/ECAlgorithms.cs b/crypto/src/math/ec/ECAlgorithms.cs index a1349a9e0..5d60de40f 100644 --- a/crypto/src/math/ec/ECAlgorithms.cs +++ b/crypto/src/math/ec/ECAlgorithms.cs @@ -10,14 +10,23 @@ namespace Org.BouncyCastle.Math.EC { public static bool IsF2mCurve(ECCurve c) { - IFiniteField field = c.Field; + return IsF2mField(c.Field); + } + + public static bool IsF2mField(IFiniteField field) + { return field.Dimension > 1 && field.Characteristic.Equals(BigInteger.Two) && field is IPolynomialExtensionField; } public static bool IsFpCurve(ECCurve c) { - return c.Field.Dimension == 1; + return IsFpField(c.Field); + } + + public static bool IsFpField(IFiniteField field) + { + return field.Dimension == 1; } public static ECPoint SumOfMultiplies(ECPoint[] ps, BigInteger[] ks) @@ -61,10 +70,9 @@ namespace Org.BouncyCastle.Math.EC Q = ImportPoint(cp, Q); // Point multiplication for Koblitz curves (using WTNAF) beats Shamir's trick - if (cp is F2mCurve) { - F2mCurve f2mCurve = (F2mCurve) cp; - if (f2mCurve.IsKoblitz) + AbstractF2mCurve f2mCurve = cp as AbstractF2mCurve; + if (f2mCurve != null && f2mCurve.IsKoblitz) { return ValidatePoint(P.Multiply(a).Add(Q.Multiply(b))); } |