aboutsummaryrefslogtreecommitdiffhomepage
path: root/pyecsca/codegen/__init__.py
diff options
context:
space:
mode:
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