diff options
| author | J08nY | 2019-03-21 14:55:14 +0100 |
|---|---|---|
| committer | J08nY | 2019-03-21 14:55:14 +0100 |
| commit | 647dfbbec29d9a4cabf1ca132390c837870535fd (patch) | |
| tree | ef2c7148bbe6365916abc6b3e4c5f83ccdaa6c49 /pyecsca/ec/op.py | |
| parent | 626102a3885d5c9bea88cafcb143fe626685f4b6 (diff) | |
| download | pyecsca-647dfbbec29d9a4cabf1ca132390c837870535fd.tar.gz pyecsca-647dfbbec29d9a4cabf1ca132390c837870535fd.tar.zst pyecsca-647dfbbec29d9a4cabf1ca132390c837870535fd.zip | |
Add conversion to and from affine points.
Diffstat (limited to 'pyecsca/ec/op.py')
| -rw-r--r-- | pyecsca/ec/op.py | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/pyecsca/ec/op.py b/pyecsca/ec/op.py index b366617..ea2254f 100644 --- a/pyecsca/ec/op.py +++ b/pyecsca/ec/op.py @@ -1,4 +1,5 @@ from ast import Module, walk, Name +from types import CodeType from typing import FrozenSet from .mod import Mod @@ -15,6 +16,7 @@ class Op(object): class CodeOp(Op): code: Module + compiled: CodeType def __init__(self, code: Module): self.code = code @@ -31,8 +33,12 @@ class CodeOp(Op): params.add(name) self.parameters = frozenset(params) self.variables = frozenset(variables) + self.compiled = compile(self.code, "", mode="exec") + + def __repr__(self): + return f"CodeOp({self.result} = f(params={self.parameters}, vars={self.variables}))" def __call__(self, *args, **kwargs) -> Mod: loc = dict(kwargs) - exec(compile(self.code, "", mode="exec"), {}, loc) + exec(self.compiled, {}, loc) return loc[self.result] |
