diff options
| author | J08nY | 2023-10-14 22:18:04 +0200 |
|---|---|---|
| committer | J08nY | 2023-10-14 22:18:04 +0200 |
| commit | 883e5b00dd6b52264d68da66d8b9268f227a8752 (patch) | |
| tree | 54cbaaccda18b129a0939c9f52bd2942374cad05 /test/ec | |
| parent | f1993d49f2ed28cacf5537410c0db99dc8bdeaeb (diff) | |
| download | pyecsca-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.py | 13 | ||||
| -rw-r--r-- | test/ec/test_formula.py | 6 | ||||
| -rw-r--r-- | test/ec/test_model.py | 13 | ||||
| -rw-r--r-- | test/ec/test_params.py | 6 | ||||
| -rw-r--r-- | test/ec/test_point.py | 12 |
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)) |
