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.py58
1 files changed, 58 insertions, 0 deletions
diff --git a/test/test_builder.py b/test/test_builder.py
new file mode 100644
index 0000000..f5e32f6
--- /dev/null
+++ b/test/test_builder.py
@@ -0,0 +1,58 @@
+import tempfile
+from os.path import join
+from unittest import TestCase
+
+from click.testing import CliRunner
+from pyecsca.ec.curves import get_curve
+from pyecsca.ec.mod import Mod
+from pyecsca.ec.mult import LTRMultiplier
+from pyecsca.ec.point import Point
+
+from pyecsca.codegen.builder import *
+
+
+class BuilderTests(TestCase):
+
+ def test_basic_build(self):
+ platform = Platform.HOST
+ hash_type = HashType.SHA1
+ mod_rand = RandomMod.REDUCE
+ 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))
+ 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)
+ temp = tempfile.mkdtemp()
+ binary = join(temp, "test.elf")
+ render_and_build(config, binary)
+
+ def test_cli_build(self):
+ runner = CliRunner()
+ with runner.isolated_filesystem():
+ result = runner.invoke(build,
+ ["--platform", "HOST", "shortw", "projective", "add-1998-cmo",
+ "dbl-1998-cmo", "z", "ltr(complete=True)", "test.elf"])
+ self.assertEqual(result.exit_code, 0)
+ result = runner.invoke(build, ["--platform", "HOST", "--strip", "shortw", "projective",
+ "add-1998-cmo", "dbl-1998-cmo", "z", "ltr(complete=True)",
+ "test_stripped.elf"])
+ self.assertEqual(result.exit_code, 0)
+
+ def test_cli_list(self):
+ runner = CliRunner()
+ result = runner.invoke(list, ["montgom"])
+ self.assertEqual(result.exit_code, 0)
+ result = runner.invoke(list, ["montgom", "xz"])
+ self.assertEqual(result.exit_code, 0)
+ result = runner.invoke(list, ["montgom", "xz", "ladd-1987-m"])
+ self.assertEqual(result.exit_code, 0)