aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorJ08nY2020-02-10 20:39:53 +0100
committerJ08nY2020-02-10 20:39:53 +0100
commit4e2bd346baf2db39391deb49e9bdb9d89f94101a (patch)
treef72098033d15ba5ce2e5848a4f744b0a8b6d9c82 /test
parent16c93caa5762158999abdcb00ed5e4ddac12cafb (diff)
downloadpyecsca-4e2bd346baf2db39391deb49e9bdb9d89f94101a.tar.gz
pyecsca-4e2bd346baf2db39391deb49e9bdb9d89f94101a.tar.zst
pyecsca-4e2bd346baf2db39391deb49e9bdb9d89f94101a.zip
Use std-curves database submodule instead of hard-coding standard curves.
Diffstat (limited to 'test')
-rw-r--r--test/ec/test_context.py4
-rw-r--r--test/ec/test_curve.py23
-rw-r--r--test/ec/test_curves.py33
-rw-r--r--test/ec/test_key_agreement.py10
-rw-r--r--test/ec/test_mult.py20
-rw-r--r--test/ec/test_params.py6
-rw-r--r--test/ec/test_point.py4
-rw-r--r--test/ec/test_signature.py4
8 files changed, 64 insertions, 40 deletions
diff --git a/test/ec/test_context.py b/test/ec/test_context.py
index ceecf2c..6b9c526 100644
--- a/test/ec/test_context.py
+++ b/test/ec/test_context.py
@@ -5,7 +5,7 @@ from pyecsca.ec.context import (local, DefaultContext, OpResult, NullContext, ge
setcontext,
resetcontext)
from pyecsca.ec.coordinates import AffineCoordinateModel
-from pyecsca.ec.curves import get_curve
+from pyecsca.ec.curves import get_params
from pyecsca.ec.mod import Mod
from pyecsca.ec.mult import LTRMultiplier
from pyecsca.ec.point import Point
@@ -22,7 +22,7 @@ class OpResultTests(TestCase):
class ContextTests(TestCase):
def setUp(self):
- self.secp128r1 = get_curve("secp128r1", "projective")
+ self.secp128r1 = get_params("secg", "secp128r1", "projective")
self.base = self.secp128r1.generator
self.coords = self.secp128r1.curve.coordinate_model
self.mult = LTRMultiplier(self.coords.formulas["add-1998-cmo"],
diff --git a/test/ec/test_curve.py b/test/ec/test_curve.py
index 1f2ca1f..a68edcf 100644
--- a/test/ec/test_curve.py
+++ b/test/ec/test_curve.py
@@ -1,9 +1,7 @@
from unittest import TestCase
-from parameterized import parameterized
-
from pyecsca.ec.curve import EllipticCurve
-from pyecsca.ec.curves import get_curve
+from pyecsca.ec.curves import get_params
from pyecsca.ec.mod import Mod
from pyecsca.ec.model import MontgomeryModel
from pyecsca.ec.point import Point
@@ -11,9 +9,9 @@ from pyecsca.ec.point import Point
class CurveTests(TestCase):
def setUp(self):
- self.secp128r1 = get_curve("secp128r1", "projective")
+ self.secp128r1 = get_params("secg", "secp128r1", "projective")
self.base = self.secp128r1.generator
- self.curve25519 = get_curve("curve25519", "xz")
+ self.curve25519 = get_params("other", "Curve25519", "xz")
def test_init(self):
with self.assertRaises(ValueError):
@@ -41,21 +39,6 @@ class CurveTests(TestCase):
Z=Mod(1, self.secp128r1.curve.prime))
assert not self.secp128r1.curve.is_on_curve(other)
- @parameterized.expand([
- ("secp128r1","projective"),
- ("secp256r1", "projective"),
- ("secp521r1", "projective"),
- ("curve25519", "xz"),
- ("ed25519", "projective"),
- ("ed448", "projective")
- ])
- def test_curve_utils(self, name, coords):
- group = get_curve(name, coords)
- try:
- assert group.curve.is_on_curve(group.generator)
- except NotImplementedError:
- pass
-
def test_eq(self):
self.assertEqual(self.secp128r1.curve, self.secp128r1.curve)
self.assertNotEqual(self.secp128r1.curve, self.curve25519.curve)
diff --git a/test/ec/test_curves.py b/test/ec/test_curves.py
new file mode 100644
index 0000000..1f6a117
--- /dev/null
+++ b/test/ec/test_curves.py
@@ -0,0 +1,33 @@
+from unittest import TestCase
+
+from parameterized import parameterized
+
+from pyecsca.ec.curves import get_params
+
+
+class CurvesTests(TestCase):
+
+ @parameterized.expand([
+ ("secg/secp128r1", "projective"),
+ ("secg/secp256r1", "projective"),
+ ("secg/secp521r1", "projective"),
+ ("other/Curve25519", "xz"),
+ ("other/Ed25519", "projective"),
+ ("other/Ed448", "projective"),
+ ("other/E-222", "projective")
+ ])
+ def test_get_params(self, name, coords):
+ group = get_params(*name.split("/"), coords)
+ try:
+ assert group.curve.is_on_curve(group.generator)
+ except NotImplementedError:
+ pass
+
+ @parameterized.expand([
+ ("no_category/some", "else"),
+ ("secg/no_curve", "else"),
+ ("secg/secp128r1", "some")
+ ])
+ def test_unknown(self, name, coords):
+ with self.assertRaises(ValueError):
+ get_params(*name.split("/"), coords) \ No newline at end of file
diff --git a/test/ec/test_key_agreement.py b/test/ec/test_key_agreement.py
index 3acb070..b771863 100644
--- a/test/ec/test_key_agreement.py
+++ b/test/ec/test_key_agreement.py
@@ -1,14 +1,16 @@
from unittest import TestCase
-from pyecsca.ec.curves import get_curve
+from parameterized import parameterized
+
+from pyecsca.ec.curves import get_params
from pyecsca.ec.key_agreement import *
from pyecsca.ec.mult import LTRMultiplier
-from parameterized import parameterized
+
class KeyAgreementTests(TestCase):
def setUp(self):
- self.secp128r1 = get_curve("secp128r1", "projective")
+ self.secp128r1 = get_params("secg", "secp128r1", "projective")
self.add = self.secp128r1.curve.coordinate_model.formulas["add-2007-bl"]
self.dbl = self.secp128r1.curve.coordinate_model.formulas["dbl-2007-bl"]
self.mult = LTRMultiplier(self.add, self.dbl)
@@ -30,3 +32,5 @@ class KeyAgreementTests(TestCase):
result_ab = algo(self.mult, self.secp128r1, self.pub_a, self.priv_b).perform()
result_ba = algo(self.mult, self.secp128r1, self.pub_b, self.priv_a).perform()
self.assertEqual(result_ab, result_ba)
+
+ # TODO: Add KAT-based tests here.
diff --git a/test/ec/test_mult.py b/test/ec/test_mult.py
index 6d6b3ec..2f4308e 100644
--- a/test/ec/test_mult.py
+++ b/test/ec/test_mult.py
@@ -1,7 +1,8 @@
from unittest import TestCase
from parameterized import parameterized
-from pyecsca.ec.curves import get_curve
+
+from pyecsca.ec.curves import get_params
from pyecsca.ec.mult import (LTRMultiplier, RTLMultiplier, LadderMultiplier, BinaryNAFMultiplier,
WindowNAFMultiplier, SimpleLadderMultiplier,
DifferentialLadderMultiplier,
@@ -12,11 +13,11 @@ from pyecsca.ec.point import InfinityPoint
class ScalarMultiplierTests(TestCase):
def setUp(self):
- self.secp128r1 = get_curve("secp128r1", "projective")
+ self.secp128r1 = get_params("secg", "secp128r1", "projective")
self.base = self.secp128r1.generator
self.coords = self.secp128r1.curve.coordinate_model
- self.curve25519 = get_curve("curve25519", "xz")
+ self.curve25519 = get_params("other", "Curve25519", "xz")
self.base25519 = self.curve25519.generator
self.coords25519 = self.curve25519.curve.coordinate_model
@@ -30,7 +31,8 @@ class ScalarMultiplierTests(TestCase):
assert one.equals(other)
def do_basic_test(self, mult_class, group, base, add, dbl, scale, neg=None, **kwargs):
- mult = mult_class(*self.get_formulas(group.curve.coordinate_model, add, dbl, neg, scale), **kwargs)
+ mult = mult_class(*self.get_formulas(group.curve.coordinate_model, add, dbl, neg, scale),
+ **kwargs)
mult.init(group, base)
res = mult.multiply(314)
other = mult.multiply(157)
@@ -54,8 +56,10 @@ class ScalarMultiplierTests(TestCase):
def test_ltr(self, name, add, dbl, scale):
self.do_basic_test(LTRMultiplier, self.secp128r1, self.base, add, dbl, scale)
self.do_basic_test(LTRMultiplier, self.secp128r1, self.base, add, dbl, scale, always=True)
- self.do_basic_test(LTRMultiplier, self.secp128r1, self.base, add, dbl, scale, complete=False)
- self.do_basic_test(LTRMultiplier, self.secp128r1, self.base, add, dbl, scale, always=True, complete=False)
+ self.do_basic_test(LTRMultiplier, self.secp128r1, self.base, add, dbl, scale,
+ complete=False)
+ self.do_basic_test(LTRMultiplier, self.secp128r1, self.base, add, dbl, scale, always=True,
+ complete=False)
@parameterized.expand([
("scaled", "add-1998-cmo", "dbl-1998-cmo", "z"),
@@ -86,8 +90,8 @@ class ScalarMultiplierTests(TestCase):
self.coords25519.formulas["dbl-1987-m"],
self.coords25519.formulas["scale"])
differential = DifferentialLadderMultiplier(self.coords25519.formulas["dadd-1987-m"],
- self.coords25519.formulas["dbl-1987-m"],
- self.coords25519.formulas["scale"])
+ self.coords25519.formulas["dbl-1987-m"],
+ self.coords25519.formulas["scale"])
ladder.init(self.curve25519, self.base25519)
res_ladder = ladder.multiply(num)
differential.init(self.curve25519, self.base25519)
diff --git a/test/ec/test_params.py b/test/ec/test_params.py
index 222698d..da293f4 100644
--- a/test/ec/test_params.py
+++ b/test/ec/test_params.py
@@ -1,14 +1,14 @@
from unittest import TestCase
-from pyecsca.ec.curves import get_curve
+from pyecsca.ec.curves import get_params
from pyecsca.ec.point import InfinityPoint
class DomainParameterTests(TestCase):
def setUp(self):
- self.secp128r1 = get_curve("secp128r1", "projective")
- self.curve25519 = get_curve("curve25519", "xz")
+ self.secp128r1 = get_params("secg", "secp128r1", "projective")
+ self.curve25519 = get_params("other", "Curve25519", "xz")
def test_is_neutral(self):
assert self.secp128r1.is_neutral(InfinityPoint(self.secp128r1.curve.coordinate_model))
diff --git a/test/ec/test_point.py b/test/ec/test_point.py
index 0809edc..76e1103 100644
--- a/test/ec/test_point.py
+++ b/test/ec/test_point.py
@@ -1,7 +1,7 @@
from unittest import TestCase
from pyecsca.ec.coordinates import AffineCoordinateModel
-from pyecsca.ec.curves import get_curve
+from pyecsca.ec.curves import get_params
from pyecsca.ec.mod import Mod
from pyecsca.ec.model import ShortWeierstrassModel, MontgomeryModel
from pyecsca.ec.point import Point, InfinityPoint
@@ -9,7 +9,7 @@ from pyecsca.ec.point import Point, InfinityPoint
class PointTests(TestCase):
def setUp(self):
- self.secp128r1 = get_curve("secp128r1", "projective")
+ self.secp128r1 = get_params("secg", "secp128r1", "projective")
self.base = self.secp128r1.generator
self.coords = self.secp128r1.curve.coordinate_model
self.affine = AffineCoordinateModel(ShortWeierstrassModel())
diff --git a/test/ec/test_signature.py b/test/ec/test_signature.py
index b7cccec..41e9df2 100644
--- a/test/ec/test_signature.py
+++ b/test/ec/test_signature.py
@@ -1,7 +1,7 @@
from hashlib import sha1
from unittest import TestCase
-from pyecsca.ec.curves import get_curve
+from pyecsca.ec.curves import get_params
from pyecsca.ec.mult import LTRMultiplier
from pyecsca.ec.signature import *
from parameterized import parameterized
@@ -9,7 +9,7 @@ from parameterized import parameterized
class SignatureTests(TestCase):
def setUp(self):
- self.secp128r1 = get_curve("secp128r1", "projective")
+ self.secp128r1 = get_params("secg", "secp128r1", "projective")
self.add = self.secp128r1.curve.coordinate_model.formulas["add-2007-bl"]
self.dbl = self.secp128r1.curve.coordinate_model.formulas["dbl-2007-bl"]
self.mult = LTRMultiplier(self.add, self.dbl)