def test_multiply_by_number(self): ec = EllipticCurve('A') a = ec.get_forming() for k in [-1233535, 1231, 0, -1, 1, 1231341]: self.assertTrue(ec.is_on_curve(ec.multiply_by_number(a, k))) mul = ec.multiply_by_number self.assertEqual(mul(mul(a, 10), 10), mul(a, 100)) self.assertEqual(mul(mul(a, 2), -3), mul(a, -6)) self.assertEqual(mul(mul(a, -4), 7), mul(a, -28)) self.assertEqual(ec.summ(mul(a, 123), mul(a, -122)), mul(a, 1)) ec = EllipticCurve('test') point = Point(3, 6) n_s = range(7) rights = [ Point(0, 1, 0), Point(3, 6), Point(80, 10), Point(80, 87), Point(3, 91), Point(0, 1, 0), Point(3, 6) ] for n, right in zip(n_s, rights): print(right) print(ec.multiply_by_number(point, n)) self.assertEqual(ec.multiply_by_number(point, n), right)
def test_summ(self): ec = EllipticCurve("test") point_a = Point(17, 10) point_b = Point(95, 31) ref = Point(1, 54) result = ec.summ(point_a, point_b) self.assertTrue(result == ref) point_a = Point(80, 10) point_b = Point(80, 87) ref = Point(0, 1, 0) self.assertEqual(ec.summ(point_a, point_b), ref) ec = EllipticCurve('A') a = ec.get_forming() self.assertEqual(ec.summ(a, ec.get_zero()), a)
def test_correctness_of_parameters(self): ec = EllipticCurve('A') self.assertTrue(ec.is_on_curve(ec.get_forming())) ec = EllipticCurve('B') self.assertTrue(ec.is_on_curve(ec.get_forming()))