diff options
| author | J08nY | 2025-10-18 21:21:27 +0200 |
|---|---|---|
| committer | J08nY | 2025-10-18 21:21:27 +0200 |
| commit | 8b9bf1bcbc963b432bcd44c781b60a7267007d96 (patch) | |
| tree | 076adf44e3cc1229a986a8c55332b56344a936c3 /test | |
| parent | f3d76c1efffec81c3c2dc91ec0470173b2b0bd92 (diff) | |
| download | pyecsca-8b9bf1bcbc963b432bcd44c781b60a7267007d96.tar.gz pyecsca-8b9bf1bcbc963b432bcd44c781b60a7267007d96.tar.zst pyecsca-8b9bf1bcbc963b432bcd44c781b60a7267007d96.zip | |
Diffstat (limited to 'test')
| -rw-r--r-- | test/ec/test_countermeasures.py | 30 | ||||
| -rw-r--r-- | test/sca/test_rpa.py | 2 |
2 files changed, 30 insertions, 2 deletions
diff --git a/test/ec/test_countermeasures.py b/test/ec/test_countermeasures.py index 946261c..c3a6ee3 100644 --- a/test/ec/test_countermeasures.py +++ b/test/ec/test_countermeasures.py @@ -9,6 +9,7 @@ from pyecsca.ec.countermeasures import ( MultiplicativeSplitting, EuclideanSplitting, BrumleyTuveri, + PointBlinding, ) from pyecsca.ec.mod import mod from pyecsca.ec.mult import * @@ -247,6 +248,27 @@ def test_brumley_tuveri(mults, secp128r1, num): @pytest.mark.parametrize( + "num", + [ + 3253857902090173296443513219124437746, + 1234567893141592653589793238464338327, + ], +) +def test_point_blinding(mults, secp128r1, num): + mult = copy(mults[0]) + mult.init(secp128r1, secp128r1.generator) + raw = mult.multiply(num) + + neg = secp128r1.curve.coordinate_model.formulas["neg"] + + for mult in mults: + pb = PointBlinding(mult, mult, neg=neg) + pb.init(secp128r1, secp128r1.generator) + masked = pb.multiply(num) + assert raw.equals(masked) + + +@pytest.mark.parametrize( "scalar", [ 3253857902090173296443513219124437746, @@ -264,6 +286,7 @@ def test_brumley_tuveri(mults, secp128r1, num): MultiplicativeSplitting, EuclideanSplitting, BrumleyTuveri, + PointBlinding, ), repeat=2, ), @@ -279,15 +302,20 @@ def test_combination(scalar, one, two, secp128r1): mult.init(secp128r1, secp128r1.generator) raw = mult.multiply(scalar) - add = mult.formulas["add"] + add = secp128r1.curve.coordinate_model.formulas["add-2015-rcb"] + neg = secp128r1.curve.coordinate_model.formulas["neg"] if one in (AdditiveSplitting, EuclideanSplitting): layer_one = one.from_single(mult, add=add) + elif one == PointBlinding: + layer_one = one.from_single(mult, neg=neg) else: layer_one = one.from_single(mult) if two in (AdditiveSplitting, EuclideanSplitting): kws = {"add": add} + elif two == PointBlinding: + kws = {"neg": neg} else: kws = {} diff --git a/test/sca/test_rpa.py b/test/sca/test_rpa.py index 01293af..e92ec44 100644 --- a/test/sca/test_rpa.py +++ b/test/sca/test_rpa.py @@ -153,7 +153,7 @@ def test_multiples_kind(rpa_params): def test_multiples_additive(rpa_params): - mults = multiples_computed(1454656138887897564, rpa_params, LTRMultiplier, lambda *args, **kwargs: AdditiveSplitting(LTRMultiplier(*args, **kwargs)), True, True, kind="precomp+necessary") + mults = multiples_computed(1454656138887897564, rpa_params, LTRMultiplier, lambda *args, **kwargs: AdditiveSplitting.from_single(LTRMultiplier(*args, **kwargs)), True, True, kind="precomp+necessary") assert mults is not None |
