aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/codegen/__init__.py
diff options
context:
space:
mode:
authorJ08nY2019-11-25 21:25:29 +0100
committerJ08nY2019-11-25 21:25:29 +0100
commitde491a6191b465edb7bd9a01a5177ac9bf836747 (patch)
tree18459bc2cb101782e2157b0e9313d288d1b6a43b /pyecsca/codegen/__init__.py
parent8a56c7a95e662862cfe78b834ccb091e95d5372f (diff)
downloadpyecsca-codegen-de491a6191b465edb7bd9a01a5177ac9bf836747.tar.gz
pyecsca-codegen-de491a6191b465edb7bd9a01a5177ac9bf836747.tar.zst
pyecsca-codegen-de491a6191b465edb7bd9a01a5177ac9bf836747.zip
Start Python codegen impl.
Diffstat (limited to 'pyecsca/codegen/__init__.py')
-rw-r--r--pyecsca/codegen/__init__.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/pyecsca/codegen/__init__.py b/pyecsca/codegen/__init__.py
index e69de29..894c843 100644
--- a/pyecsca/codegen/__init__.py
+++ b/pyecsca/codegen/__init__.py
@@ -0,0 +1,33 @@
+from jinja2 import Environment, PackageLoader
+from pyecsca.ec.model import CurveModel, ShortWeierstrassModel
+from pyecsca.ec.coordinates import CoordinateModel
+
+env = Environment(
+ loader=PackageLoader("pyecsca.codegen")
+)
+
+
+def get_curve_definition(model: CurveModel):
+ return env.get_template("curve.h").render(params=model.parameter_names)
+
+def get_curve_impl(model: CurveModel):
+ return env.get_template("curve.c").render(params=model.parameter_names)
+
+def get_coords_definition(coords: CoordinateModel):
+ return env.get_template("coords.h").render(variables=coords.variables)
+
+def get_coords_impl(coords: CoordinateModel):
+ print(coords.satisfying)
+ return env.get_template("coords.c").render(variables=coords.variables)
+
+if __name__ == "__main__":
+ model = ShortWeierstrassModel()
+ s = get_curve_definition(model)
+
+ s = get_curve_impl(model)
+
+ coords = model.coordinates["projective"]
+
+ s = get_coords_definition(coords)
+
+ s = get_coords_impl(coords) \ No newline at end of file