from unittest import TestCase from pyecsca.ec.configuration import ( all_configurations, HashType, RandomMod, Multiplication, Squaring, Reduction, Inversion, ) from pyecsca.ec.model import ShortWeierstrassModel from pyecsca.ec.mult import LTRMultiplier from .utils import slow class ConfigurationTests(TestCase): def base_independents(self): return { "hash_type": HashType.SHA1, "mod_rand": RandomMod.SAMPLE, "mult": Multiplication.BASE, "sqr": Squaring.BASE, "red": Reduction.BASE, "inv": Inversion.GCD, } @slow def test_all(self): j = 0 for _ in all_configurations(model=ShortWeierstrassModel()): j += 1 def test_weierstrass_projective(self): model = ShortWeierstrassModel() coords = model.coordinates["projective"] configs = list( all_configurations(model=model, coords=coords, **self.base_independents()) ) self.assertEqual(len(configs), 1960) def test_mult_class(self): model = ShortWeierstrassModel() coords = model.coordinates["projective"] scalarmult = LTRMultiplier configs = list( all_configurations( model=model, coords=coords, scalarmult=scalarmult, **self.base_independents() ) ) self.assertEqual(len(configs), 560) def test_one(self): 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, } configs = list( all_configurations( model=model, coords=coords, scalarmult=scalarmult, **self.base_independents() ) ) self.assertEqual(len(configs), 1) scalarmult = LTRMultiplier( coords.formulas["add-1998-cmo"], coords.formulas["dbl-1998-cmo"], None, True, False, True, ) configs = list( all_configurations( model=model, coords=coords, scalarmult=scalarmult, **self.base_independents() ) ) self.assertEqual(len(configs), 1) configs = list( all_configurations( model=model, scalarmult=scalarmult, **self.base_independents() ) ) self.assertEqual(len(configs), 1)