diff options
| author | J08nY | 2025-08-21 16:48:52 +0200 |
|---|---|---|
| committer | J08nY | 2025-08-21 16:48:52 +0200 |
| commit | 8f95d0ff284cc48db26c1b916b548b6ad5967dfe (patch) | |
| tree | 3576f0750d3ddef5fab5909507c3157658ee92f0 /pyecsca/ec/mult | |
| parent | c36ee8a2c07ec58b556e505e4ecf61c871dc94c9 (diff) | |
| download | pyecsca-8f95d0ff284cc48db26c1b916b548b6ad5967dfe.tar.gz pyecsca-8f95d0ff284cc48db26c1b916b548b6ad5967dfe.tar.zst pyecsca-8f95d0ff284cc48db26c1b916b548b6ad5967dfe.zip | |
Diffstat (limited to 'pyecsca/ec/mult')
| -rw-r--r-- | pyecsca/ec/mult/naf.py | 5 | ||||
| -rw-r--r-- | pyecsca/ec/mult/window.py | 8 |
2 files changed, 8 insertions, 5 deletions
diff --git a/pyecsca/ec/mult/naf.py b/pyecsca/ec/mult/naf.py index cbb884e..1d77056 100644 --- a/pyecsca/ec/mult/naf.py +++ b/pyecsca/ec/mult/naf.py @@ -271,7 +271,10 @@ class WindowNAFMultiplier(AccumulatorMultiplier, PrecompMultiplier, ScalarMultip if self.precompute_negation: self._points_neg[2 * i + 1] = self._neg(current_point) current_point = self._add(current_point, double_point) - action.exit({**self._points, **self._points_neg}) + result = {**self._points} + if self.precompute_negation: + result.update({-k: v for k, v in self._points_neg.items()}) + action.exit(result) def multiply(self, scalar: int) -> Point: if not self._initialized: diff --git a/pyecsca/ec/mult/window.py b/pyecsca/ec/mult/window.py index 327f794..ed0cd05 100644 --- a/pyecsca/ec/mult/window.py +++ b/pyecsca/ec/mult/window.py @@ -309,7 +309,7 @@ class WindowBoothMultiplier(AccumulatorMultiplier, PrecompMultiplier, ScalarMult return f"{self.__class__.__name__}({', '.join(map(str, self.formulas.values()))}, short_circuit={self.short_circuit}, width={self.width}, precompute_negation={self.precompute_negation}, accumulation_order={self.accumulation_order.name})" def init(self, params: DomainParameters, point: Point, bits: Optional[int] = None): - with PrecomputationAction(params, point) as actions: + with PrecomputationAction(params, point) as action: super().init(params, point, bits) double_point = self._dbl(point) self._points = {1: point, 2: double_point} @@ -321,10 +321,10 @@ class WindowBoothMultiplier(AccumulatorMultiplier, PrecompMultiplier, ScalarMult self._points[i] = current_point if self.precompute_negation: self._points_neg[i] = self._neg(current_point) + result = {**self._points} if self.precompute_negation: - actions.exit({**self._points, **self._points_neg}) - else: - actions.exit(self._points) + result.update({-k: v for k, v in self._points_neg.items()}) + action.exit(result) def multiply(self, scalar: int) -> Point: if not self._initialized: |
