コード例 #1
0
        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]);
                }
            }
        }