aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorJ08nY2020-12-10 19:38:47 +0100
committerJ08nY2020-12-10 19:51:43 +0100
commitd2ef5abbb1c17c8630ebaa064f49c59a27ad0d4a (patch)
tree56e5bf6f0225eed92220ef6463d233ac8621d59e /test
parent3e78a690cf7f44293556dd5a5a3ef591390c6b93 (diff)
downloadpyecsca-d2ef5abbb1c17c8630ebaa064f49c59a27ad0d4a.tar.gz
pyecsca-d2ef5abbb1c17c8630ebaa064f49c59a27ad0d4a.tar.zst
pyecsca-d2ef5abbb1c17c8630ebaa064f49c59a27ad0d4a.zip
Add point compare using scaling formula.
Diffstat (limited to 'test')
-rw-r--r--test/ec/test_curve.py13
-rw-r--r--test/ec/test_point.py13
2 files changed, 23 insertions, 3 deletions
diff --git a/test/ec/test_curve.py b/test/ec/test_curve.py
index d15228a..cbc1d14 100644
--- a/test/ec/test_curve.py
+++ b/test/ec/test_curve.py
@@ -58,12 +58,20 @@ class CurveTests(TestCase):
added = self.secp128r1.curve.affine_add(self.affine_base, self.affine_base)
doubled = self.secp128r1.curve.affine_double(self.affine_base)
self.assertEqual(added, doubled)
+ self.assertEqual(self.secp128r1.curve.affine_add(self.secp128r1.curve.neutral, pt), pt)
+ self.assertEqual(self.secp128r1.curve.affine_add(pt, self.secp128r1.curve.neutral), pt)
def test_affine_double(self):
self.assertIsNotNone(self.secp128r1.curve.affine_double(self.affine_base))
+ self.assertEqual(self.secp128r1.curve.affine_double(self.secp128r1.curve.neutral), self.secp128r1.curve.neutral)
def test_affine_negate(self):
self.assertIsNotNone(self.secp128r1.curve.affine_negate(self.affine_base))
+ self.assertEqual(self.secp128r1.curve.affine_negate(self.secp128r1.curve.neutral), self.secp128r1.curve.neutral)
+ with self.assertRaises(ValueError):
+ self.secp128r1.curve.affine_negate(self.base)
+ with self.assertRaises(ValueError):
+ self.secp128r1.curve.affine_negate(self.curve25519.generator)
def test_affine_multiply(self):
expected = self.affine_base
@@ -72,6 +80,11 @@ class CurveTests(TestCase):
expected = self.secp128r1.curve.affine_add(expected, self.affine_base)
expected = self.secp128r1.curve.affine_double(expected)
self.assertEqual(self.secp128r1.curve.affine_multiply(self.affine_base, 10), expected)
+ self.assertEqual(self.secp128r1.curve.affine_multiply(self.secp128r1.curve.neutral, 10), self.secp128r1.curve.neutral)
+ with self.assertRaises(ValueError):
+ self.secp128r1.curve.affine_multiply(self.base, 10)
+ with self.assertRaises(ValueError):
+ self.secp128r1.curve.affine_multiply(self.curve25519.generator, 10)
def test_affine_neutral(self):
self.assertIsNone(self.secp128r1.curve.affine_neutral)
diff --git a/test/ec/test_point.py b/test/ec/test_point.py
index b8d355a..0fabbf1 100644
--- a/test/ec/test_point.py
+++ b/test/ec/test_point.py
@@ -35,8 +35,7 @@ class PointTests(TestCase):
self.assertIsInstance(affine, InfinityPoint)
def test_to_model(self):
- affine = Point(self.affine, x=Mod(0xabcd, self.secp128r1.curve.prime),
- y=Mod(0xef, self.secp128r1.curve.prime))
+ affine = Point(self.affine, x=Mod(0xabcd, self.secp128r1.curve.prime), y=Mod(0xef, self.secp128r1.curve.prime))
projective_model = self.coords
other = affine.to_model(projective_model, self.secp128r1.curve)
@@ -80,11 +79,19 @@ class PointTests(TestCase):
self.assertNotEqual(pt, 2)
self.assertFalse(pt.equals(third))
self.assertNotEqual(pt, third)
+ self.assertTrue(pt.equals_scaled(other))
+ self.assertTrue(pt.equals_affine(other))
+ self.assertFalse(pt.equals_scaled(third))
infty_one = InfinityPoint(self.coords)
infty_other = InfinityPoint(self.coords)
self.assertTrue(infty_one.equals(infty_other))
+ self.assertTrue(infty_one.equals_affine(infty_other))
+ self.assertTrue(infty_one.equals_scaled(infty_other))
self.assertEqual(infty_one, infty_other)
+ self.assertFalse(pt.equals(infty_one))
+ self.assertFalse(pt.equals_affine(infty_one))
+ self.assertFalse(pt.equals_scaled(infty_one))
mont = MontgomeryModel()
different = Point(mont.coordinates["xz"],
@@ -100,4 +107,4 @@ class PointTests(TestCase):
Y=Mod(0x6, self.secp128r1.curve.prime),
Z=Mod(2, self.secp128r1.curve.prime))
self.assertEqual(bytes(pt), b"\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x06\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02")
- self.assertEqual(bytes(InfinityPoint(self.coords)), b"\x00") \ No newline at end of file
+ self.assertEqual(bytes(InfinityPoint(self.coords)), b"\x00")