aboutsummaryrefslogtreecommitdiff
path: root/pyecsca/ec/curve.py
diff options
context:
space:
mode:
Diffstat (limited to 'pyecsca/ec/curve.py')
-rw-r--r--pyecsca/ec/curve.py23
1 files changed, 23 insertions, 0 deletions
diff --git a/pyecsca/ec/curve.py b/pyecsca/ec/curve.py
new file mode 100644
index 0000000..79939b7
--- /dev/null
+++ b/pyecsca/ec/curve.py
@@ -0,0 +1,23 @@
+from typing import Type, Mapping
+
+from .point import Point
+from .coordinates import CoordinateModel
+from .model import CurveModel
+
+
+class EllipticCurve(object):
+ model: Type[CurveModel]
+ coordinate_model: CoordinateModel
+ parameters: Mapping[str, int]
+ neutral: Point
+
+ def __init__(self, model: Type[CurveModel], coordinate_model: CoordinateModel,
+ parameters: Mapping[str, int], neutral: Point = None):
+ if coordinate_model not in model.coordinates.values():
+ raise ValueError
+ if set(model.parameter_names).symmetric_difference(parameters.keys()):
+ raise ValueError
+ self.model = model
+ self.coordinate_model = coordinate_model
+ self.parameters = dict(parameters)
+ self.neutral = neutral