diff options
| author | J08nY | 2025-03-28 10:08:17 +0100 |
|---|---|---|
| committer | J08nY | 2025-03-28 10:08:17 +0100 |
| commit | 7afddf743cfdadbaff1a3bf2581c039c6e0816bb (patch) | |
| tree | 5d912f55679428f31ac620b009b94d82ecd5a40f /pyecsca | |
| parent | 1e72c45f317103bee20e00e66eff473ade40e33d (diff) | |
| download | pyecsca-7afddf743cfdadbaff1a3bf2581c039c6e0816bb.tar.gz pyecsca-7afddf743cfdadbaff1a3bf2581c039c6e0816bb.tar.zst pyecsca-7afddf743cfdadbaff1a3bf2581c039c6e0816bb.zip | |
Fix bnaf always.
Diffstat (limited to 'pyecsca')
| -rw-r--r-- | pyecsca/ec/mult/naf.py | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/pyecsca/ec/mult/naf.py b/pyecsca/ec/mult/naf.py index 6d3e566..a9ad1a1 100644 --- a/pyecsca/ec/mult/naf.py +++ b/pyecsca/ec/mult/naf.py @@ -101,31 +101,33 @@ class BinaryNAFMultiplier(AccumulatorMultiplier, PrecompMultiplier, ScalarMultip q = copy(self._params.curve.neutral) for val in scalar_naf: q = self._dbl(q) + orig = q if val == 1: q = self._accumulate(q, self._point) if self.always: - self._accumulate(q, self._point_neg) + self._accumulate(orig, self._point_neg) elif val == -1: # TODO: Whether this negation is precomputed can be a parameter q = self._accumulate(q, self._point_neg) if self.always: - self._accumulate(q, self._point) + self._accumulate(orig, self._point) return q def _rtl(self, scalar_naf: List[int]) -> Point: q = self._point r = copy(self._params.curve.neutral) for val in reversed(scalar_naf): + orig = r if val == 1: r = self._accumulate(r, q) if self.always: neg = self._neg(q) - self._accumulate(r, neg) + self._accumulate(orig, neg) elif val == -1: neg = self._neg(q) r = self._accumulate(r, neg) if self.always: - self._accumulate(r, q) + self._accumulate(orig, q) q = self._dbl(q) return r |
