aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/ec
diff options
context:
space:
mode:
authorJ08nY2023-10-14 22:18:04 +0200
committerJ08nY2023-10-14 22:18:04 +0200
commit883e5b00dd6b52264d68da66d8b9268f227a8752 (patch)
tree54cbaaccda18b129a0939c9f52bd2942374cad05 /test/ec
parentf1993d49f2ed28cacf5537410c0db99dc8bdeaeb (diff)
downloadpyecsca-883e5b00dd6b52264d68da66d8b9268f227a8752.tar.gz
pyecsca-883e5b00dd6b52264d68da66d8b9268f227a8752.tar.zst
pyecsca-883e5b00dd6b52264d68da66d8b9268f227a8752.zip
Make stuff picklable.
Fixes #45.
Diffstat (limited to '')
-rw-r--r--test/ec/test_configuration.py13
-rw-r--r--test/ec/test_formula.py6
-rw-r--r--test/ec/test_model.py13
-rw-r--r--test/ec/test_params.py6
-rw-r--r--test/ec/test_point.py12
5 files changed, 50 insertions, 0 deletions
diff --git a/test/ec/test_configuration.py b/test/ec/test_configuration.py
index bdd7d68..54cc53a 100644
--- a/test/ec/test_configuration.py
+++ b/test/ec/test_configuration.py
@@ -1,3 +1,5 @@
+import pickle
+
import pytest
from pyecsca.ec.configuration import (
@@ -57,3 +59,14 @@ def test_one(base_independents):
assert len(configs) == 1
configs = list(all_configurations(model=model, scalarmult=scalarmult, **base_independents))
assert len(configs) == 1
+
+
+def test_pickle(base_independents):
+ model = ShortWeierstrassModel()
+ coords = model.coordinates["projective"]
+ scalarmult = {"cls": LTRMultiplier, "add": coords.formulas["add-1998-cmo"], "dbl": coords.formulas["dbl-1998-cmo"],
+ "scl": None, "always": True, "complete": False, "short_circuit": True,
+ "accumulation_order": AccumulationOrder.PeqRP}
+ configs = list(all_configurations(model=model, coords=coords, scalarmult=scalarmult, **base_independents))
+ config = configs[0]
+ assert config == pickle.loads(pickle.dumps(config))
diff --git a/test/ec/test_formula.py b/test/ec/test_formula.py
index 420e0b3..bb3d123 100644
--- a/test/ec/test_formula.py
+++ b/test/ec/test_formula.py
@@ -1,3 +1,5 @@
+import pickle
+
import pytest
from sympy import FF, symbols
@@ -120,3 +122,7 @@ def test_symbolic(secp128r1, dbl):
inner_var, k(getattr(secp128r1.generator, inner_var).x)
)
assert Mod(int(symbolic_val), p) == Mod(generator_val, p)
+
+
+def test_pickle(add, dbl):
+ assert add == pickle.loads(pickle.dumps(add))
diff --git a/test/ec/test_model.py b/test/ec/test_model.py
index d5c5afe..e6bc176 100644
--- a/test/ec/test_model.py
+++ b/test/ec/test_model.py
@@ -1,3 +1,5 @@
+import pickle
+
from pyecsca.ec.model import (
ShortWeierstrassModel,
MontgomeryModel,
@@ -11,3 +13,14 @@ def test_load():
assert len(MontgomeryModel().coordinates) > 0
assert len(EdwardsModel().coordinates) > 0
assert len(TwistedEdwardsModel().coordinates) > 0
+
+
+def test_pickle():
+ sw = ShortWeierstrassModel()
+ m = MontgomeryModel()
+ e = EdwardsModel()
+ te = TwistedEdwardsModel()
+ assert sw == pickle.loads(pickle.dumps(sw))
+ assert m == pickle.loads(pickle.dumps(MontgomeryModel()))
+ assert e == pickle.loads(pickle.dumps(EdwardsModel()))
+ assert te == pickle.loads(pickle.dumps(TwistedEdwardsModel()))
diff --git a/test/ec/test_params.py b/test/ec/test_params.py
index ceaef48..2163684 100644
--- a/test/ec/test_params.py
+++ b/test/ec/test_params.py
@@ -1,3 +1,5 @@
+import pickle
+
from importlib_resources import files, as_file
import pytest
@@ -142,3 +144,7 @@ def test_custom_params():
assert params is not None
res = params.curve.affine_double(generator.to_affine())
assert res is not None
+
+
+def test_pickle(secp128r1):
+ assert secp128r1 == pickle.loads(pickle.dumps(secp128r1))
diff --git a/test/ec/test_point.py b/test/ec/test_point.py
index 7a0440c..9513840 100644
--- a/test/ec/test_point.py
+++ b/test/ec/test_point.py
@@ -1,3 +1,4 @@
+import pickle
from contextlib import nullcontext as does_not_raise
from pyecsca.ec.coordinates import AffineCoordinateModel
from pyecsca.ec.params import get_params
@@ -174,3 +175,14 @@ def test_iter(secp128r1, secp128r1_coords):
assert len(InfinityPoint(secp128r1_coords)) == 0
assert len(tuple(InfinityPoint(secp128r1_coords))) == 0
+
+
+def test_pickle(secp128r1, secp128r1_coords):
+ pt = Point(
+ secp128r1_coords,
+ X=Mod(0x4, secp128r1.curve.prime),
+ Y=Mod(0x6, secp128r1.curve.prime),
+ Z=Mod(2, secp128r1.curve.prime),
+ )
+ pickle.dumps(secp128r1_coords)
+ assert pt == pickle.loads(pickle.dumps(pt))