aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/codegen/render.py
diff options
context:
space:
mode:
authorJ08nY2020-02-28 17:25:51 +0100
committerJ08nY2020-02-28 17:35:08 +0100
commit0341d359dc67ced3f1e65d1d11af3590c1f0992f (patch)
tree660140e64e8abe7647554e1424b1678a3ab98631 /pyecsca/codegen/render.py
parentb387d00511a03dc20e15ac55fcbf07f3dfa79ce0 (diff)
downloadpyecsca-codegen-0341d359dc67ced3f1e65d1d11af3590c1f0992f.tar.gz
pyecsca-codegen-0341d359dc67ced3f1e65d1d11af3590c1f0992f.tar.zst
pyecsca-codegen-0341d359dc67ced3f1e65d1d11af3590c1f0992f.zip
Add dynamic triggering.
Diffstat (limited to 'pyecsca/codegen/render.py')
-rw-r--r--pyecsca/codegen/render.py15
1 files changed, 13 insertions, 2 deletions
diff --git a/pyecsca/codegen/render.py b/pyecsca/codegen/render.py
index 5cfe569..281bd9c 100644
--- a/pyecsca/codegen/render.py
+++ b/pyecsca/codegen/render.py
@@ -175,6 +175,13 @@ def render_scalarmult_impl(scalarmult: ScalarMultiplier) -> str:
BinaryNAFMultiplier=BinaryNAFMultiplier)
+def render_action() -> str:
+ return env.get_template("action.c").render()
+
+
+def render_rand() -> str:
+ return env.get_template("rand.c").render()
+
def render_main(model: CurveModel, coords: CoordinateModel, keygen: bool, ecdh: bool,
ecdsa: bool) -> str:
return env.get_template("main.c").render(model=model, coords=coords,
@@ -202,11 +209,12 @@ def render(config: DeviceConfiguration) -> Tuple[str, str, str]:
"""
temp = tempfile.mkdtemp()
symlinks = ["asn1", "bn", "hal", "hash", "mult", "prng", "simpleserial", "tommath", "fat.h",
- "point.h", "curve.h", "mult.h", "formulas.h", "Makefile.inc"]
+ "rand.h", "point.h", "curve.h", "mult.h", "formulas.h", "action.h", "Makefile.inc"]
for sym in symlinks:
os.symlink(resource_filename("pyecsca.codegen", sym), path.join(temp, sym))
gen_dir = path.join(temp, "gen")
os.mkdir(gen_dir)
+
save_render(temp, "Makefile",
render_makefile(config.platform, config.hash_type, config.mod_rand))
save_render(temp, "main.c",
@@ -215,7 +223,10 @@ def render(config: DeviceConfiguration) -> Tuple[str, str, str]:
save_render(gen_dir, "point.c", render_coords_impl(config.coords))
save_render(gen_dir, "formulas.c", render_formulas_impl(config.formulas))
for formula in config.formulas:
- save_render(gen_dir, f"formula_{formula.shortname}.c", render_formula_impl(formula, config.scalarmult.short_circuit))
+ save_render(gen_dir, f"formula_{formula.shortname}.c",
+ render_formula_impl(formula, config.scalarmult.short_circuit))
+ save_render(gen_dir, "action.c", render_action())
+ save_render(gen_dir, "rand.c", render_rand())
save_render(gen_dir, "curve.c", render_curve_impl(config.model))
save_render(gen_dir, "mult.c", render_scalarmult_impl(config.scalarmult))
return temp, "pyecsca-codegen-{}.elf".format(