aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/ec
diff options
context:
space:
mode:
authorJ08nY2020-06-13 01:59:22 +0200
committerJ08nY2020-06-13 01:59:22 +0200
commit4e17dfdb12707c814add7851c81eda4edb3dacde (patch)
tree1f59c7adad2cc58e3a53d995b029c5a76f591411 /test/ec
parent23b3638a496637c1810fb5a2bd610b63b1a72521 (diff)
downloadpyecsca-4e17dfdb12707c814add7851c81eda4edb3dacde.tar.gz
pyecsca-4e17dfdb12707c814add7851c81eda4edb3dacde.tar.zst
pyecsca-4e17dfdb12707c814add7851c81eda4edb3dacde.zip
Add docs and tests to the ECTester target.
Diffstat (limited to 'test/ec')
-rw-r--r--test/ec/test_curve.py13
-rw-r--r--test/ec/test_mod.py18
2 files changed, 30 insertions, 1 deletions
diff --git a/test/ec/test_curve.py b/test/ec/test_curve.py
index 91d9f16..1b22279 100644
--- a/test/ec/test_curve.py
+++ b/test/ec/test_curve.py
@@ -1,5 +1,7 @@
+from binascii import unhexlify
from unittest import TestCase
+from pyecsca.ec.coordinates import AffineCoordinateModel
from pyecsca.ec.curve import EllipticCurve
from pyecsca.ec.params import get_params
from pyecsca.ec.mod import Mod
@@ -76,3 +78,14 @@ class CurveTests(TestCase):
self.assertEqual(self.secp128r1.curve, self.secp128r1.curve)
self.assertNotEqual(self.secp128r1.curve, self.curve25519.curve)
self.assertNotEqual(self.secp128r1.curve, None)
+
+ def test_decode(self):
+ affine_curve = self.secp128r1.curve.to_affine()
+ affine_point = self.secp128r1.generator.to_affine()
+ decoded = affine_curve.decode_point(bytes(affine_point))
+ self.assertEqual(decoded, affine_point)
+
+ affine_compressed_bytes = unhexlify("03161ff7528b899b2d0c28607ca52c5b86")
+ decoded_compressed = affine_curve.decode_point(affine_compressed_bytes)
+ self.assertEqual(decoded_compressed, affine_point)
+
diff --git a/test/ec/test_mod.py b/test/ec/test_mod.py
index 59b716e..59c8e24 100644
--- a/test/ec/test_mod.py
+++ b/test/ec/test_mod.py
@@ -1,6 +1,6 @@
from unittest import TestCase
-from pyecsca.ec.mod import Mod, gcd, extgcd, Undefined
+from pyecsca.ec.mod import Mod, gcd, extgcd, Undefined, miller_rabin
class ModTests(TestCase):
@@ -10,6 +10,22 @@ class ModTests(TestCase):
self.assertEqual(extgcd(15, 0), (1, 0, 15))
self.assertEqual(extgcd(15, 20), (-1, 1, 5))
+ def test_miller_rabin(self):
+ self.assertTrue(miller_rabin(2))
+ self.assertTrue(miller_rabin(3))
+ self.assertTrue(miller_rabin(5))
+ self.assertFalse(miller_rabin(8))
+ self.assertTrue(miller_rabin(0xe807561107ccf8fa82af74fd492543a918ca2e9c13750233a9))
+ self.assertFalse(miller_rabin(0x6f6889deb08da211927370810f026eb4c17b17755f72ea005))
+
+ def test_is_residue(self):
+ self.assertTrue(Mod(4, 11).is_residue())
+ self.assertFalse(Mod(11, 31).is_residue())
+
+ def test_sqrt(self):
+ p = 0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff
+ self.assertIn(Mod(0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc, p).sqrt(), (0x9add512515b70d9ec471151c1dec46625cd18b37bde7ca7fb2c8b31d7033599d, 0x6522aed9ea48f2623b8eeae3e213b99da32e74c9421835804d374ce28fcca662))
+
def test_wrong_mod(self):
a = Mod(5, 7)
b = Mod(4, 11)