aboutsummaryrefslogtreecommitdiffhomepage
path: root/test/test_builder.py
diff options
context:
space:
mode:
Diffstat (limited to 'test/test_builder.py')
-rw-r--r--test/test_builder.py51
1 files changed, 28 insertions, 23 deletions
diff --git a/test/test_builder.py b/test/test_builder.py
index 52de066..a16f714 100644
--- a/test/test_builder.py
+++ b/test/test_builder.py
@@ -2,13 +2,13 @@ from unittest import TestCase
import tempfile
from click.testing import CliRunner
-from pyecsca.ec.curves import get_curve
+from pyecsca.ec.curves import get_params
from pyecsca.ec.mult import LTRMultiplier
-from pyecsca.ec.mod import Mod
-from pyecsca.ec.point import Point
+from pyecsca.ec.configuration import HashType, RandomMod, Multiplication, Squaring, Reduction
-from pyecsca.codegen.common import *
-from pyecsca.codegen.builder import *
+from pyecsca.codegen.common import Platform, DeviceConfiguration
+from pyecsca.codegen.render import render_and_build
+from pyecsca.codegen.builder import build_impl, list_impl
class BuilderTests(TestCase):
@@ -20,18 +20,16 @@ class BuilderTests(TestCase):
mult = Multiplication.BASE
sqr = Squaring.BASE
red = Reduction.BASE
- group = get_curve("secp128r1", "projective")
- model = group.curve.model
- coords = group.curve.coordinate_model
- group.neutral = Point(coords, X=Mod(0, group.curve.prime), Y=Mod(1, group.curve.prime),
- Z=Mod(0, group.curve.prime))
+ params = get_params("secg", "secp128r1", "projective")
+ model = params.curve.model
+ coords = params.curve.coordinate_model
add = coords.formulas["add-1998-cmo"]
dbl = coords.formulas["dbl-1998-cmo"]
scl = coords.formulas["z"]
formulas = [add, dbl, scl]
scalarmult = LTRMultiplier(add, dbl, scl)
- config = Configuration(platform, hash_type, mod_rand, mult, sqr, red, model, coords,
- formulas, scalarmult, True, True, True)
+ config = DeviceConfiguration(model, coords, formulas, scalarmult, hash_type, mod_rand, mult,
+ sqr, red, platform, True, True, True)
temp = tempfile.mkdtemp()
render_and_build(config, temp, True)
@@ -39,18 +37,20 @@ class BuilderTests(TestCase):
runner = CliRunner()
with runner.isolated_filesystem():
result = runner.invoke(build_impl,
- ["--platform", "HOST", "-v", "shortw", "projective", "add-1998-cmo",
- "dbl-1998-cmo", "z", "ltr(complete=True)", "test.elf"])
+ ["--platform", "HOST", "-v", "shortw", "projective",
+ "add-1998-cmo",
+ "dbl-1998-cmo", "z", "ltr(complete=True)", "."])
self.assertEqual(result.exit_code, 0)
result = runner.invoke(build_impl,
- ["--platform", "HOST", "--strip", "--no-remove", "shortw", "projective",
+ ["--platform", "HOST", "--strip", "--no-remove", "shortw",
+ "projective",
"add-1998-cmo", "dbl-1998-cmo", "z", "ltr(complete=True)",
- "test_stripped.elf"])
+ "."])
self.assertEqual(result.exit_code, 0)
result = runner.invoke(build_impl,
["--platform", "HOST", "--no-ecdsa", "montgom",
"xz", "ladd-1987-m", "dbl-1987-m", "scale", "ldr()",
- "test_ldr.elf"])
+ "."])
self.assertEqual(result.exit_code, 0)
def test_cli_build_fails(self):
@@ -59,32 +59,37 @@ class BuilderTests(TestCase):
# unknown model
result = runner.invoke(build_impl,
["--platform", "HOST", "missing", "projective", "add-1998-cmo",
- "dbl-1998-cmo", "z", "ltr(complete=True)", "test.elf"])
+ "dbl-1998-cmo", "z", "ltr(complete=True)", "."])
self.assertEqual(result.exit_code, 2)
# unknown coordinates
result = runner.invoke(build_impl,
["--platform", "HOST", "shortw", "missing", "add-1998-cmo",
- "dbl-1998-cmo", "z", "ltr(complete=True)", "test.elf"])
+ "dbl-1998-cmo", "z", "ltr(complete=True)", "."])
self.assertEqual(result.exit_code, 2)
# unknown formula
result = runner.invoke(build_impl,
["--platform", "HOST", "shortw", "projective", "missing",
- "dbl-1998-cmo", "z", "ltr(complete=True)", "test.elf"])
+ "dbl-1998-cmo", "z", "ltr(complete=True)", "."])
self.assertEqual(result.exit_code, 2)
# bad formatted mult spec
result = runner.invoke(build_impl,
["--platform", "HOST", "shortw", "projective", "add-1998-cmo",
- "dbl-1998-cmo", "z", "missing", "test.elf"])
+ "dbl-1998-cmo", "z", "missing", "."])
self.assertEqual(result.exit_code, 2)
# unknown mult
result = runner.invoke(build_impl,
["--platform", "HOST", "shortw", "projective", "add-1998-cmo",
- "dbl-1998-cmo", "z", "missing()", "test.elf"])
+ "dbl-1998-cmo", "z", "missing()", "."])
self.assertEqual(result.exit_code, 2)
# missing required formulas to mult
result = runner.invoke(build_impl,
["--platform", "HOST", "shortw", "projective", "add-1998-cmo",
- "z", "missing", "test.elf"])
+ "z", "ltr(complete=True)", "."])
+ self.assertEqual(result.exit_code, 2)
+ # duplicate formulas
+ result = runner.invoke(build_impl,
+ ["--platform", "HOST", "shortw", "projective", "add-1998-cmo",
+ "add-1998-cmo", "z", "ltr(complete=True)", "."])
self.assertEqual(result.exit_code, 2)
def test_cli_list(self):