示例#1
0
        public void AddPoints_SamePointOnCurve_InfResult()
        {
            EllipticCurve ECC = new EllipticCurve(1, 9, pField: 97, groupOrder: 90);
            Point         P   = new Point(19, 0);

            Assert.IsNull(ECC.AddPoints(P, P));
        }
示例#2
0
        public void AddPoints_SamePointOnCurve_CorrectResult()
        {
            EllipticCurve ECC = new EllipticCurve(1, 9, pField: 97, groupOrder: 90);
            Point         P   = new Point(22, 3);

            Point expected = new Point(10, 90);

            Point actual = ECC.AddPoints(P, P);

            Assert.AreEqual(expected, actual);
        }
        public void TestAddPointsSwapArg()
        {
            EllipticCurve curve = new EllipticCurve(a: 1, b: 1, modulus: 23);

            Point[] expected = new Point[] {
                (0, 1), (6, 19), (3, 13), (13, 16), (18, 3), (7, 11),
                (11, 3), (5, 19), (19, 18), (12, 4), (1, 16), (17, 20),
                (9, 16), (4, 0), (9, 7), (17, 3), (1, 7), (12, 19),
                (19, 5), (5, 4), (11, 20), (7, 12), (18, 20), (13, 7),
                (3, 10), (6, 4), (0, 22), null
            };

            Point p = (0, 1);

            Point[] actual = new Point[expected.Length];
            actual[0] = p;

            for (int i = 1; i < expected.Length; i++)
            {
                actual[i] = curve.AddPoints(p, actual[i - 1]);
            }

            CollectionAssert.AreEqual(expected, actual);
        }