Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/humla-spongycastle.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'core/src/test/java/org/spongycastle/math/ec/test/TnafTest.java')
-rw-r--r--core/src/test/java/org/spongycastle/math/ec/test/TnafTest.java152
1 files changed, 152 insertions, 0 deletions
diff --git a/core/src/test/java/org/spongycastle/math/ec/test/TnafTest.java b/core/src/test/java/org/spongycastle/math/ec/test/TnafTest.java
new file mode 100644
index 00000000..bd527c6f
--- /dev/null
+++ b/core/src/test/java/org/spongycastle/math/ec/test/TnafTest.java
@@ -0,0 +1,152 @@
+//package org.spongycastle.math.ec.test;
+//
+//import java.math.BigInteger;
+//import java.util.Random;
+//
+//import junit.framework.TestCase;
+//
+//import org.spongycastle.asn1.sec.SECNamedCurves;
+//import org.spongycastle.asn1.x9.X9ECParameters;
+//import org.spongycastle.math.ec.ECCurve;
+//import org.spongycastle.math.ec.ECPoint;
+//import org.spongycastle.math.ec.NafL2RMultiplier;
+//import org.spongycastle.math.ec.ReferenceMultiplier;
+//import org.spongycastle.math.ec.WNafL2RMultiplier;
+//import org.spongycastle.math.ec.WTauNafMultiplier;
+//
+//public class TnafTest extends TestCase
+//{
+// private Random m_rand = new Random();
+//
+// private String ecPointToString(ECPoint p) {
+// StringBuffer sb = new StringBuffer("x = ");
+// sb.append(p.getX().toBigInteger().toString());
+// sb.append("; y = ");
+// sb.append(p.getY().toBigInteger().toString());
+// return sb.toString();
+// }
+//
+// private ECPoint repeatedMultiply(ECPoint p, BigInteger k)
+// {
+// ECPoint result = p.multiply(k);
+// for (int i = 1; i < 10; ++i)
+// {
+// ECPoint check = p.multiply(k);
+// assertEquals(result, check);
+// }
+// return result;
+// }
+//
+// private void implTestMultiplyTnaf(String curveName) {
+// X9ECParameters x9ECParameters = SECNamedCurves.getByName(curveName);
+//
+// ECCurve.F2m curve = (ECCurve.F2m)x9ECParameters.getCurve();
+// BigInteger n = curve.getN();
+//
+// // The generator is multiplied by random b to get random q
+// BigInteger b = new BigInteger(n.bitLength(), m_rand);
+// ECPoint g = x9ECParameters.getG();
+// ECPoint.F2m p = (ECPoint.F2m)g.multiply(b);
+//
+// BigInteger k = new BigInteger(n.bitLength(), m_rand);
+// long now1 = System.currentTimeMillis();
+// p.setECMultiplier(new WTauNafMultiplier());
+// ECPoint refRWTnaf = repeatedMultiply(p, k);
+// long now2 = System.currentTimeMillis();
+// p.setECMultiplier(new WNafL2RMultiplier());
+// ECPoint refWnaf = repeatedMultiply(p, k);
+// long now3 = System.currentTimeMillis();
+// p.setECMultiplier(new NafL2RMultiplier());
+// ECPoint refFpNaf = repeatedMultiply(p, k);
+// long now4 = System.currentTimeMillis();
+// p.setECMultiplier(new ReferenceMultiplier());
+// ECPoint reference = repeatedMultiply(p, k);
+// long now5 = System.currentTimeMillis();
+//
+// assertEquals("WTNAF multiplication is incorrect", refRWTnaf, reference);
+// assertEquals("FPNAF multiplication is incorrect", refFpNaf, reference);
+// assertEquals("WNAF multiplication is incorrect", refWnaf, reference);
+//
+// System.out.println(curveName + ": Multiply WTNAF took millis: " + (now2 - now1));
+// System.out.println(curveName + ": Multiply WNAF took millis: " + (now3 - now2));
+// System.out.println(curveName + ": Multiply FPNAF took millis: " + (now4 - now3));
+// System.out.println(curveName + ": Multiply REFE took millis: " + (now5 - now4));
+//
+//// System.out.println(curveName + ": refRWTnaf = " + ecPointToString(refRWTnaf));
+//// System.out.println(curveName + ": refWnaf = " + ecPointToString(refWnaf));
+//// System.out.println(curveName + ": refFpNaf = " + ecPointToString(refFpNaf));
+//// System.out.println(curveName + ": reference = " + ecPointToString(reference) + "\n");
+// System.out.println();
+// }
+//
+// public void testMultiplyTnaf() {
+// System.out.println("\n\n\n***** Start test multiplications on F2m (Koblitz) *****");
+// implTestMultiplyTnaf("sect163k1");
+// implTestMultiplyTnaf("sect233k1");
+// implTestMultiplyTnaf("sect239k1");
+// implTestMultiplyTnaf("sect283k1");
+// implTestMultiplyTnaf("sect409k1");
+// implTestMultiplyTnaf("sect571k1");
+// }
+//
+// private void implTestMultiplyWnaf(String curveName) {
+// X9ECParameters x9ECParameters = SECNamedCurves.getByName(curveName);
+//
+// BigInteger r = x9ECParameters.getN();
+//
+// // The generator is multiplied by random b to get random q
+// BigInteger b = new BigInteger(r.bitLength(), m_rand);
+// ECPoint g = x9ECParameters.getG();
+// ECPoint p = g.multiply(b);
+//
+// BigInteger k = new BigInteger(r.bitLength(), m_rand);
+// long now1 = System.currentTimeMillis();
+// p.setECMultiplier(new WNafL2RMultiplier());
+// ECPoint refWnaf = repeatedMultiply(p, k);
+// long now2 = System.currentTimeMillis();
+// p.setECMultiplier(new NafL2RMultiplier());
+// ECPoint refFpNaf = repeatedMultiply(p, k);
+// long now3 = System.currentTimeMillis();
+// p.setECMultiplier(new ReferenceMultiplier());
+// ECPoint reference = repeatedMultiply(p, k);
+// long now4 = System.currentTimeMillis();
+//
+// assertEquals("WNAF multiplication is incorrect", refWnaf, reference);
+// assertEquals("FPNAF multiplication is incorrect", refFpNaf, reference);
+//
+// System.out.println(curveName + ": Multiply WNAF took millis: " + (now2 - now1));
+// System.out.println(curveName + ": Multiply FPNAF took millis: " + (now3 - now2));
+// System.out.println(curveName + ": Multiply REFE took millis: " + (now4 - now3));
+//
+//// System.out.println(curveName + ": refWnaf = " + ecPointToString(refWnaf));
+//// System.out.println(curveName + ": refFpNaf = " + ecPointToString(refFpNaf));
+//// System.out.println(curveName + ": reference = " + ecPointToString(reference));
+// System.out.println();
+// }
+//
+// public void testMultiplyWnaf() {
+// System.out.println("\n\n\n***** Start test multiplications on F2m *****");
+// implTestMultiplyWnaf("sect113r1");
+// implTestMultiplyWnaf("sect113r2");
+// implTestMultiplyWnaf("sect131r1");
+// implTestMultiplyWnaf("sect131r2");
+// implTestMultiplyWnaf("sect163r1");
+// implTestMultiplyWnaf("sect163r2");
+// implTestMultiplyWnaf("sect193r1");
+// implTestMultiplyWnaf("sect193r2");
+// implTestMultiplyWnaf("sect233r1");
+// implTestMultiplyWnaf("sect283r1");
+// implTestMultiplyWnaf("sect409r1");
+// implTestMultiplyWnaf("sect571r1");
+//
+// System.out.println("\n\n\n***** Start test multiplications on Fp *****");
+// implTestMultiplyWnaf("secp112r1");
+// implTestMultiplyWnaf("secp128r1");
+// implTestMultiplyWnaf("secp160r1");
+// implTestMultiplyWnaf("secp192r1");
+// implTestMultiplyWnaf("secp224r1");
+// implTestMultiplyWnaf("secp256r1");
+// implTestMultiplyWnaf("secp384r1");
+// implTestMultiplyWnaf("secp521r1");
+// }
+//}