def test_Point_addition(): """ Test whether the EC point addition is correct. """ from pytest import raises from petlib.ec import EcGroup, EcPt G = EcGroup(713) # NIST curve d = G.parameters() a, b, p = d["a"], d["b"], d["p"] g = G.generator() gx0, gy0 = g.get_affine() r = G.order().random() gx1, gy1 = (r * g).get_affine() from Lab01Code import is_point_on_curve from Lab01Code import point_add assert is_point_on_curve(a, b, p, gx0, gy0) assert is_point_on_curve(a, b, p, gx1, gy1) ## Test a simple addition h = (r + 1) * g hx1, hy1 = h.get_affine() x, y = point_add(a, b, p, gx0, gy0, gx1, gy1) assert is_point_on_curve(a, b, p, x, y) assert x == hx1 assert y == hy1 ## Ensure commutativity xp, yp = point_add(a, b, p, gx1, gy1, gx0, gy0) assert is_point_on_curve(a, b, p, xp, yp) assert x == xp assert y == yp ## Ensure addition with neutral returns the element xp, yp = point_add(a, b, p, gx1, gy1, None, None) assert is_point_on_curve(a, b, p, xp, yp) assert xp == gx1 assert yp == gy1 xp, yp = point_add(a, b, p, None, None, gx0, gy0) assert is_point_on_curve(a, b, p, xp, yp) assert gx0 == xp assert gy0 == yp ## An error is raised in case the points are equal with raises(Exception) as excinfo: point_add(a, b, p, gx0, gy0, gx0, gy0) assert 'EC Points must not be equal' in str(excinfo.value)
def test_Point_addition(): """ Test whether the EC point addition is correct. """ from pytest import raises from petlib.ec import EcGroup, EcPt G = EcGroup(713) # NIST curve d = G.parameters() a, b, p = d["a"], d["b"], d["p"] g = G.generator() gx0, gy0 = g.get_affine() r = G.order().random() gx1, gy1 = (r*g).get_affine() from Lab01Code import is_point_on_curve from Lab01Code import point_add assert is_point_on_curve(a, b, p, gx0, gy0) assert is_point_on_curve(a, b, p, gx1, gy1) ## Test a simple addition h = (r + 1) * g hx1, hy1 = h.get_affine() x, y = point_add(a, b, p, gx0, gy0, gx1, gy1) assert is_point_on_curve(a, b, p, x, y) assert x == hx1 assert y == hy1 ## Ensure commutativity xp, yp = point_add(a, b, p, gx1, gy1, gx0, gy0) assert is_point_on_curve(a, b, p, xp, yp) assert x == xp assert y == yp ## Ensure addition with neutral returns the element xp, yp = point_add(a, b, p, gx1, gy1, None, None) assert is_point_on_curve(a, b, p, xp, yp) assert xp == gx1 assert yp == gy1 xp, yp = point_add(a, b, p, None, None, gx0, gy0) assert is_point_on_curve(a, b, p, xp, yp) assert gx0 == xp assert gy0 == yp ## An error is raised in case the points are equal with raises(Exception) as excinfo: point_add(a, b, p, gx0, gy0, gx0, gy0) assert 'EC Points must not be equal' in str(excinfo.value)
def test_Point_addition_check_inf_result(): """ Test whether the EC point addition is correct for pt - pt = inf """ from pytest import raises from petlib.ec import EcGroup, EcPt G = EcGroup(713) # NIST curve d = G.parameters() a, b, p = d["a"], d["b"], d["p"] g = G.generator() gx0, gy0 = g.get_affine() gx1, gy1 = gx0, p - gy0 from Lab01Code import is_point_on_curve from Lab01Code import point_add assert is_point_on_curve(a, b, p, gx0, gy0) assert is_point_on_curve(a, b, p, gx1, gy1) x, y = point_add(a, b, p, gx0, gy0, gx1, gy1) assert is_point_on_curve(a, b, p, x, y) assert (x, y) == (None, None)
def test_Point_addition_check_inf_result(): """ Test whether the EC point addition is correct for pt - pt = inf """ from pytest import raises from petlib.ec import EcGroup, EcPt G = EcGroup(713) # NIST curve d = G.parameters() a, b, p = d["a"], d["b"], d["p"] g = G.generator() gx0, gy0 = g.get_affine() gx1, gy1 = gx0, p - gy0 from Lab01Code import is_point_on_curve from Lab01Code import point_add assert is_point_on_curve(a, b, p, gx0, gy0) assert is_point_on_curve(a, b, p, gx1, gy1) x, y = point_add(a, b, p, gx0, gy0, gx1, gy1) assert is_point_on_curve(a, b, p, x, y) assert (x,y) == (None, None)