aboutsummaryrefslogtreecommitdiff
path: root/pyecsca/ec/curves.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyecsca/ec/curves.py')
-rw-r--r--pyecsca/ec/curves.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/pyecsca/ec/curves.py b/pyecsca/ec/curves.py
index 09964ea..e002a9c 100644
--- a/pyecsca/ec/curves.py
+++ b/pyecsca/ec/curves.py
@@ -60,7 +60,14 @@ def get_params(category: str, name: str, coords: str) -> DomainParameters:
if coords not in model.coordinates:
raise ValueError("Coordinate model not supported for curve.")
coord_model = model.coordinates[coords]
- params = {name: int(curve["params"][name], 16) for name in param_names}
+ params = {name: Mod(int(curve["params"][name], 16), field) for name in param_names}
+ for assumption in coord_model.assumptions:
+ locals = {}
+ compiled = compile(assumption, "", mode="exec")
+ exec(compiled, None, locals)
+ for param, value in locals.items():
+ if params[param] != value:
+ raise ValueError(f"Coordinate model {coord_model} has an unsatisifed assumption on the {param} parameter (= {value}).")
elliptic_curve = EllipticCurve(model, coord_model, field, params)
affine = Point(AffineCoordinateModel(model), x=Mod(int(curve["generator"]["x"], 16), field),
y=Mod(int(curve["generator"]["y"], 16), field))