aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJ08nY2025-10-18 20:03:01 +0200
committerJ08nY2025-10-18 20:06:13 +0200
commitf3d76c1efffec81c3c2dc91ec0470173b2b0bd92 (patch)
treece5e561e04abc985f8cc316d32188df08e897c72 /test
parent0bdecc62992ea1da4d6fd3591aa2787608c66363 (diff)
downloadpyecsca-f3d76c1efffec81c3c2dc91ec0470173b2b0bd92.tar.gz
pyecsca-f3d76c1efffec81c3c2dc91ec0470173b2b0bd92.tar.zst
pyecsca-f3d76c1efffec81c3c2dc91ec0470173b2b0bd92.zip
Diffstat (limited to 'test')
-rw-r--r--test/ec/test_countermeasures.py28
1 files changed, 17 insertions, 11 deletions
diff --git a/test/ec/test_countermeasures.py b/test/ec/test_countermeasures.py
index 62db0d4..946261c 100644
--- a/test/ec/test_countermeasures.py
+++ b/test/ec/test_countermeasures.py
@@ -183,7 +183,7 @@ def test_additive_splitting(mults, secp128r1, num):
raw = mult.multiply(num)
for mult in mults:
- asplit = AdditiveSplitting(mult)
+ asplit = AdditiveSplitting(mult, mult)
asplit.init(secp128r1, secp128r1.generator)
masked = asplit.multiply(num)
assert raw.equals(masked)
@@ -202,7 +202,7 @@ def test_multiplicative_splitting(mults, secp128r1, num):
raw = mult.multiply(num)
for mult in mults:
- msplit = MultiplicativeSplitting(mult)
+ msplit = MultiplicativeSplitting(mult, mult)
msplit.init(secp128r1, secp128r1.generator)
masked = msplit.multiply(num)
assert raw.equals(masked)
@@ -221,7 +221,7 @@ def test_euclidean_splitting(mults, secp128r1, num):
raw = mult.multiply(num)
for mult in mults:
- esplit = EuclideanSplitting(mult)
+ esplit = EuclideanSplitting(mult, mult, mult)
esplit.init(secp128r1, secp128r1.generator)
masked = esplit.multiply(num)
assert raw.equals(masked)
@@ -274,6 +274,7 @@ def test_combination(scalar, one, two, secp128r1):
mult = LTRMultiplier(
secp128r1.curve.coordinate_model.formulas["add-2015-rcb"],
secp128r1.curve.coordinate_model.formulas["dbl-2015-rcb"],
+ scl=secp128r1.curve.coordinate_model.formulas["z"],
)
mult.init(secp128r1, secp128r1.generator)
raw = mult.multiply(scalar)
@@ -281,17 +282,22 @@ def test_combination(scalar, one, two, secp128r1):
add = mult.formulas["add"]
if one in (AdditiveSplitting, EuclideanSplitting):
- layer_one = one(mult, add=add)
+ layer_one = one.from_single(mult, add=add)
else:
- layer_one = one(mult)
+ layer_one = one.from_single(mult)
if two in (AdditiveSplitting, EuclideanSplitting):
- combo = two(layer_one, add=add)
+ kws = {"add": add}
else:
- combo = two(layer_one)
- combo.init(secp128r1, secp128r1.generator)
- masked = combo.multiply(scalar)
- assert raw.equals(masked)
+ kws = {}
+
+ for i in range(2**two.nmults):
+ bits = format(i, f"0{two.nmults}b")
+ args = [layer_one if bit == "1" else mult for bit in bits]
+ combo = two(*args, **kws)
+ combo.init(secp128r1, secp128r1.generator)
+ masked = combo.multiply(scalar)
+ assert raw.equals(masked)
@pytest.mark.parametrize(
@@ -324,7 +330,7 @@ def test_rng(scalar, ctr, secp128r1):
def rng(n):
return mod(123456789, n)
- m = ctr(mult, rng)
+ m = ctr.from_single(mult, rng=rng)
m.init(secp128r1, secp128r1.generator)
masked = m.multiply(scalar)
assert raw.equals(masked)