aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/ec
diff options
context:
space:
mode:
authorJ08nY2023-08-27 16:38:00 +0200
committerJ08nY2023-08-27 16:38:00 +0200
commit54e9958c811a57b7adbc052cc86fedaa582c102f (patch)
treeec3f5002e12bd1cb4a3e1f3f7bdf27f7d151342b /test/ec
parent19bc2ed369cbcd41c08132edb74d7a1afd843962 (diff)
downloadpyecsca-54e9958c811a57b7adbc052cc86fedaa582c102f.tar.gz
pyecsca-54e9958c811a57b7adbc052cc86fedaa582c102f.tar.zst
pyecsca-54e9958c811a57b7adbc052cc86fedaa582c102f.zip
Add sliding window multiplier.
Diffstat (limited to 'test/ec')
-rw-r--r--test/ec/test_configuration.py4
-rw-r--r--test/ec/test_mult.py12
2 files changed, 11 insertions, 5 deletions
diff --git a/test/ec/test_configuration.py b/test/ec/test_configuration.py
index bfb6463..4e2e4ca 100644
--- a/test/ec/test_configuration.py
+++ b/test/ec/test_configuration.py
@@ -30,7 +30,8 @@ def test_weierstrass_projective(base_independents):
model = ShortWeierstrassModel()
coords = model.coordinates["projective"]
configs = list(all_configurations(model=model, coords=coords, **base_independents))
- assert len(configs) == 4900
+ assert len(set(map(lambda cfg: cfg.scalarmult, configs))) == len(configs)
+ assert len(configs) == 6020
def test_mult_class(base_independents):
@@ -38,6 +39,7 @@ def test_mult_class(base_independents):
coords = model.coordinates["projective"]
scalarmult = LTRMultiplier
configs = list(all_configurations(model=model, coords=coords, scalarmult=scalarmult, **base_independents))
+ assert len(set(map(lambda cfg: cfg.scalarmult, configs))) == len(configs)
assert len(configs) == 1120
diff --git a/test/ec/test_mult.py b/test/ec/test_mult.py
index 519e34c..2a17867 100644
--- a/test/ec/test_mult.py
+++ b/test/ec/test_mult.py
@@ -15,7 +15,7 @@ from pyecsca.ec.mult import (
CoronMultiplier,
FixedWindowLTRMultiplier,
ProcessingDirection,
- AccumulationOrder, ScalarMultiplier
+ AccumulationOrder, ScalarMultiplier, SlidingWindowMultiplier
)
from pyecsca.ec.point import InfinityPoint, Point
from .utils import cartesian
@@ -292,10 +292,15 @@ def test_basic_multipliers(secp128r1, num, add, dbl):
wnafs = [WindowNAFMultiplier(add, dbl, neg, scl=scale, **dict(zip(wnaf_options.keys(), combination))) for combination in product(*wnaf_options.values())]
ladder_options = {"complete": (True, False)}
ladders = [SimpleLadderMultiplier(add, dbl, scale, **dict(zip(ladder_options.keys(), combination))) for combination in product(*ladder_options.values())]
- fixed_options = {"m": (5, 8), "accumulation_order": tuple(AccumulationOrder)}
+ fixed_options = {"m": (5, 8),
+ "accumulation_order": tuple(AccumulationOrder)}
fixeds = [FixedWindowLTRMultiplier(add, dbl, scl=scale, **dict(zip(fixed_options.keys(), combination))) for combination in product(*fixed_options.values())]
+ sliding_options = {"width": (3, 5),
+ "recoding_direction": tuple(ProcessingDirection),
+ "accumulation_order": tuple(AccumulationOrder)}
+ slides = [SlidingWindowMultiplier(add, dbl, scl=scale, **dict(zip(sliding_options.keys(), combination))) for combination in product(*sliding_options.values())]
- mults: Sequence[ScalarMultiplier] = ltrs + rtls + bnafs + wnafs + [CoronMultiplier(add, dbl, scale)] + ladders + fixeds
+ mults: Sequence[ScalarMultiplier] = ltrs + rtls + bnafs + wnafs + [CoronMultiplier(add, dbl, scale)] + ladders + fixeds + slides
results = []
for mult in mults:
mult.init(secp128r1, secp128r1.generator)
@@ -303,7 +308,6 @@ def test_basic_multipliers(secp128r1, num, add, dbl):
if results:
assert res == results[-1], f"Points not equal {res} != {results[-1]} for mult = {mult}"
results.append(res)
- print(len(results))
def test_init_fail(curve25519, secp128r1):