diff options
| author | J08nY | 2020-12-10 19:38:47 +0100 |
|---|---|---|
| committer | J08nY | 2020-12-10 19:51:43 +0100 |
| commit | d2ef5abbb1c17c8630ebaa064f49c59a27ad0d4a (patch) | |
| tree | 56e5bf6f0225eed92220ef6463d233ac8621d59e /test | |
| parent | 3e78a690cf7f44293556dd5a5a3ef591390c6b93 (diff) | |
| download | pyecsca-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.py | 13 | ||||
| -rw-r--r-- | test/ec/test_point.py | 13 |
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") |
