aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJ08nY2019-05-01 23:50:22 +0200
committerJ08nY2019-05-01 23:50:22 +0200
commit5bfe07c21d0825d31fc0322a4a27f430b9407df9 (patch)
treef0cff44811e27e385d1c3d00254e563c3fcf7768
parent5a335a3b3aeaf2627dc5c39865b843da67553b38 (diff)
downloadpyecsca-5bfe07c21d0825d31fc0322a4a27f430b9407df9.tar.gz
pyecsca-5bfe07c21d0825d31fc0322a4a27f430b9407df9.tar.zst
pyecsca-5bfe07c21d0825d31fc0322a4a27f430b9407df9.zip
-rw-r--r--test/ec/test_curve.py22
-rw-r--r--test/ec/test_group.py18
-rw-r--r--test/sca/test_edit.py12
3 files changed, 51 insertions, 1 deletions
diff --git a/test/ec/test_curve.py b/test/ec/test_curve.py
index 9d4e509..1adaf47 100644
--- a/test/ec/test_curve.py
+++ b/test/ec/test_curve.py
@@ -1,14 +1,30 @@
from unittest import TestCase
+from pyecsca.ec.curve import EllipticCurve
from pyecsca.ec.mod import Mod
+from pyecsca.ec.model import MontgomeryModel
from pyecsca.ec.point import Point
-from .curves import get_secp128r1
+from .curves import get_secp128r1, get_curve25519
class CurveTests(TestCase):
def setUp(self):
self.secp128r1 = get_secp128r1()
self.base = self.secp128r1.generator
+ self.curve25519 = get_curve25519()
+
+ def test_init(self):
+ with self.assertRaises(ValueError):
+ EllipticCurve(MontgomeryModel(), self.secp128r1.curve.coordinate_model, 1,
+ parameters={})
+
+ with self.assertRaises(ValueError):
+ EllipticCurve(self.secp128r1.curve.model, self.secp128r1.curve.coordinate_model, 15,
+ parameters={"c": 0})
+
+ with self.assertRaises(ValueError):
+ EllipticCurve(self.secp128r1.curve.model, self.secp128r1.curve.coordinate_model, 15,
+ parameters={"a": Mod(1, 5), "b": Mod(2, 5)})
def test_is_on_curve(self):
pt = Point(self.secp128r1.curve.coordinate_model,
@@ -23,6 +39,10 @@ class CurveTests(TestCase):
Z=Mod(1, self.secp128r1.curve.prime))
assert not self.secp128r1.curve.is_on_curve(other)
+ def test_eq(self):
+ self.assertEqual(self.secp128r1.curve, self.secp128r1.curve)
+ self.assertNotEqual(self.secp128r1.curve, self.curve25519.curve)
+
def test_repr(self):
self.assertEqual(repr(self.secp128r1.curve),
"EllipticCurve([a=340282366762482138434845932244680310780, b=308990863222245658030922601041482374867] on ShortWeierstrassModel() using EFDCoordinateModel(\"projective\" on short Weierstrass curves))")
diff --git a/test/ec/test_group.py b/test/ec/test_group.py
new file mode 100644
index 0000000..e3b3a72
--- /dev/null
+++ b/test/ec/test_group.py
@@ -0,0 +1,18 @@
+from unittest import TestCase
+
+from pyecsca.ec.point import InfinityPoint
+from .curves import get_secp128r1, get_curve25519
+
+
+class AbelianGroupTests(TestCase):
+
+ def setUp(self):
+ self.secp128r1 = get_secp128r1()
+ self.curve25519 = get_curve25519()
+
+ def test_is_neutral(self):
+ assert self.secp128r1.is_neutral(InfinityPoint(self.secp128r1.curve.coordinate_model))
+
+ def test_eq(self):
+ self.assertEqual(self.secp128r1, self.secp128r1)
+ self.assertNotEqual(self.secp128r1, self.curve25519)
diff --git a/test/sca/test_edit.py b/test/sca/test_edit.py
index 88376aa..e44cfb0 100644
--- a/test/sca/test_edit.py
+++ b/test/sca/test_edit.py
@@ -15,6 +15,13 @@ class EditTests(TestCase):
self.assertIsNotNone(result)
np.testing.assert_equal(result.samples, np.array([30, 40, 50], dtype=np.dtype("i1")))
+ result = trim(self._trace, end=3)
+ self.assertIsNotNone(result)
+ np.testing.assert_equal(result.samples, np.array([10, 20, 30], dtype=np.dtype("i1")))
+
+ with self.assertRaises(ValueError):
+ trim(self._trace, 5, 1)
+
def test_reverse(self):
result = reverse(self._trace)
self.assertIsNotNone(result)
@@ -26,3 +33,8 @@ class EditTests(TestCase):
self.assertIsNotNone(result)
np.testing.assert_equal(result.samples,
np.array([0, 0, 10, 20, 30, 40, 50, 0, 0], dtype=np.dtype("i1")))
+
+ result = pad(self._trace, (1, 3))
+ self.assertIsNotNone(result)
+ np.testing.assert_equal(result.samples,
+ np.array([0, 10, 20, 30, 40, 50, 0, 0, 0], dtype=np.dtype("i1")))