diff options
| author | J08nY | 2020-06-13 01:59:22 +0200 |
|---|---|---|
| committer | J08nY | 2020-06-13 01:59:22 +0200 |
| commit | 4e17dfdb12707c814add7851c81eda4edb3dacde (patch) | |
| tree | 1f59c7adad2cc58e3a53d995b029c5a76f591411 /test/ec | |
| parent | 23b3638a496637c1810fb5a2bd610b63b1a72521 (diff) | |
| download | pyecsca-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.py | 13 | ||||
| -rw-r--r-- | test/ec/test_mod.py | 18 |
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) |
