aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/test_impl.py
diff options
context:
space:
mode:
authorJ08nY2020-03-02 17:23:20 +0100
committerJ08nY2020-03-02 17:23:20 +0100
commit49018aa37f44b56292193b763ed4a8bb15389c30 (patch)
tree9d62101f699075d18c9406a2a175bdd5c377954a /test/test_impl.py
parent81e5f24363cf8f50099b7fbed0fd3bcfaac9d5ea (diff)
downloadpyecsca-codegen-49018aa37f44b56292193b763ed4a8bb15389c30.tar.gz
pyecsca-codegen-49018aa37f44b56292193b763ed4a8bb15389c30.tar.zst
pyecsca-codegen-49018aa37f44b56292193b763ed4a8bb15389c30.zip
Add support for specifying multiplication and square algos.
Diffstat (limited to 'test/test_impl.py')
-rw-r--r--test/test_impl.py46
1 files changed, 26 insertions, 20 deletions
diff --git a/test/test_impl.py b/test/test_impl.py
index 9e61390..7e37722 100644
--- a/test/test_impl.py
+++ b/test/test_impl.py
@@ -27,26 +27,32 @@ class ImplTests(TestCase):
def do_basic_test(self, callback, runner, params, mult_class, formulas, mult_name,
ecdsa, ecdh, **mult_kwargs):
- with runner.isolated_filesystem() as tmpdir:
- runner.invoke(build_impl,
- ["--platform", "HOST",
- #"--red", "MONTGOMERY",
- "--ecdsa" if ecdsa else "--no-ecdsa",
- "--ecdh" if ecdh else "--no-ecdh",
- params.curve.model.shortname, params.curve.coordinate_model.name,
- *formulas,
- f"{mult_name}({','.join(f'{key}={value}' for key, value in mult_kwargs.items())})",
- "."])
- target = HostTarget(params.curve.model, params.curve.coordinate_model,
- binary=join(tmpdir, "pyecsca-codegen-HOST.elf"))
- target.connect()
- target.set_params(params)
- formula_instances = [params.curve.coordinate_model.formulas[formula] for formula
- in formulas]
- mult = mult_class(*formula_instances, **mult_kwargs)
- mult.init(params, params.generator)
- callback(target, mult, params)
- target.disconnect()
+ other_args = [
+ ("--mul", "KARATSUBA", "--sqr", "KARATSUBA"),
+ ("--mul", "TOOM_COOK", "--sqr", "TOOM_COOK"),
+ ("--red", "BARRETT")
+ ]
+ for additional in other_args:
+ with runner.isolated_filesystem() as tmpdir:
+ runner.invoke(build_impl,
+ ["--platform", "HOST",
+ *additional,
+ "--ecdsa" if ecdsa else "--no-ecdsa",
+ "--ecdh" if ecdh else "--no-ecdh",
+ params.curve.model.shortname, params.curve.coordinate_model.name,
+ *formulas,
+ f"{mult_name}({','.join(f'{key}={value}' for key, value in mult_kwargs.items())})",
+ "."])
+ target = HostTarget(params.curve.model, params.curve.coordinate_model,
+ binary=join(tmpdir, "pyecsca-codegen-HOST.elf"))
+ target.connect()
+ target.set_params(params)
+ formula_instances = [params.curve.coordinate_model.formulas[formula] for formula
+ in formulas]
+ mult = mult_class(*formula_instances, **mult_kwargs)
+ mult.init(params, params.generator)
+ callback(target, mult, params)
+ target.disconnect()
class PRNGTests(ImplTests):