public void TestSumOfMultiplies() { foreach (X9ECParameters x9 in GetTestCurves()) { ECPoint[] points = new ECPoint[SCALE]; BigInteger[] scalars = new BigInteger[SCALE]; for (int i = 0; i < SCALE; ++i) { points[i] = GetRandomPoint(x9); scalars[i] = GetRandomScalar(x9); } ECPoint u = x9.Curve.Infinity; for (int i = 0; i < SCALE; ++i) { u = u.Add(points[i].Multiply(scalars[i])); ECPoint v = ECAlgorithms.SumOfMultiplies(CopyPoints(points, i + 1), CopyScalars(scalars, i + 1)); ECPoint[] results = new ECPoint[] { u, v }; x9.Curve.NormalizeAll(results); AssertPointsEqual("ECAlgorithms.SumOfMultiplies is incorrect", results[0], results[1]); } } }