diff options
Diffstat (limited to 'pyecsca/ec')
| -rw-r--r-- | pyecsca/ec/curve.py | 4 | ||||
| -rw-r--r-- | pyecsca/ec/formula/base.py | 7 |
2 files changed, 7 insertions, 4 deletions
diff --git a/pyecsca/ec/curve.py b/pyecsca/ec/curve.py index f274683..fedf65f 100644 --- a/pyecsca/ec/curve.py +++ b/pyecsca/ec/curve.py @@ -120,8 +120,8 @@ class EllipticCurve: lhs, rhs = assumption_string.split(" = ") expr = sympify(f"{rhs} - {lhs}") for symbol in expr.free_symbols: - if (value := self.parameters.get(str(symbol), None)) is not None: - expr = expr.subs(symbol, value) + if (val := self.parameters.get(str(symbol), None)) is not None: + expr = expr.subs(symbol, val) if len(expr.free_symbols) > 0: raise ValueError( f"Missing necessary coordinate model parameter ({assumption_string})." diff --git a/pyecsca/ec/formula/base.py b/pyecsca/ec/formula/base.py index 7e6c1ad..22148cb 100644 --- a/pyecsca/ec/formula/base.py +++ b/pyecsca/ec/formula/base.py @@ -187,15 +187,18 @@ class Formula(ABC): params[lhs] = SymbolicMod(expr, field) else: expr = sympify(f"{rhs} - {lhs}", evaluate=False) + remaining = [] for symbol in expr.free_symbols: if (value := params.get(str(symbol), None)) is not None: if isinstance(value, SymbolicMod): expr = expr.subs(symbol, value.x) else: expr = expr.subs(symbol, int(value)) + else: + remaining.append(symbol) if ( - len(expr.free_symbols) > 1 - or (param := str(expr.free_symbols.pop())) not in self.parameters + len(remaining) > 1 + or (param := str(remaining[0])) not in self.parameters ): raise ValueError( f"This formula couldn't be executed due to an unsupported assumption ({assumption_string})." |
