diff options
| author | J08nY | 2020-02-10 20:39:53 +0100 |
|---|---|---|
| committer | J08nY | 2020-02-10 20:39:53 +0100 |
| commit | 4e2bd346baf2db39391deb49e9bdb9d89f94101a (patch) | |
| tree | f72098033d15ba5ce2e5848a4f744b0a8b6d9c82 /test | |
| parent | 16c93caa5762158999abdcb00ed5e4ddac12cafb (diff) | |
| download | pyecsca-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.py | 4 | ||||
| -rw-r--r-- | test/ec/test_curve.py | 23 | ||||
| -rw-r--r-- | test/ec/test_curves.py | 33 | ||||
| -rw-r--r-- | test/ec/test_key_agreement.py | 10 | ||||
| -rw-r--r-- | test/ec/test_mult.py | 20 | ||||
| -rw-r--r-- | test/ec/test_params.py | 6 | ||||
| -rw-r--r-- | test/ec/test_point.py | 4 | ||||
| -rw-r--r-- | test/ec/test_signature.py | 4 |
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) |
