aboutsummaryrefslogtreecommitdiffhomepage
path: root/test
diff options
context:
space:
mode:
authorJ08nY2019-12-23 13:20:43 +0100
committerJ08nY2019-12-23 13:42:05 +0100
commit276ce0d7d636009299319aad27e31de242e1cceb (patch)
tree894d92ba07e9d9565b0343c11a8c8ca8fe039865 /test
parentb43c5dba0ec18fe5a5204537855ea2b73fc674c6 (diff)
downloadpyecsca-codegen-276ce0d7d636009299319aad27e31de242e1cceb.tar.gz
pyecsca-codegen-276ce0d7d636009299319aad27e31de242e1cceb.tar.zst
pyecsca-codegen-276ce0d7d636009299319aad27e31de242e1cceb.zip
Add Travis and Codecov + tests.
Diffstat (limited to 'test')
-rw-r--r--test/__init__.py0
-rw-r--r--test/test_builder.py58
2 files changed, 58 insertions, 0 deletions
diff --git a/test/__init__.py b/test/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/__init__.py
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)