diff options
| author | Filippo Valsorda <filippo@golang.org> | 2026-02-15 20:52:50 +0100 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2026-04-09 09:11:34 -0700 |
| commit | b67dcb53be7f779cbea922688bf336fad6adc24d (patch) | |
| tree | a86c745c355ccd680f38c782ed2ecba35c388695 | |
| parent | 86241330242b57fd73f13014556cbd7ba4c1c1bc (diff) | |
| download | go-b67dcb53be7f779cbea922688bf336fad6adc24d.tar.xz | |
crypto/internal/fips140/edwards25519: fix zero coeff. skip optimization
This was reported first by Adrian Grigore in private and then by
github.com/shaharcohen1 in FiloSottile/edwards25519#53.
fips140: off
goos: linux
goarch: amd64
pkg: crypto/internal/fips140/edwards25519
cpu: AMD EPYC 7443P 24-Core Processor
│ 6837583eec │ 6837583eec-dirty │
│ sec/op │ sec/op vs base │
VarTimeDoubleScalarBaseMult-48 43.51µ ± 1% 42.92µ ± 0% -1.34% (p=0.000 n=100)
Change-Id: I14523fc62732ae9233b8c198a3a626a36a6a6964
Reviewed-on: https://go-review.googlesource.com/c/go/+/745860
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
Reviewed-by: Junyang Shao <shaojunyang@google.com>
| -rw-r--r-- | src/crypto/internal/fips140/edwards25519/scalarmult.go | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/crypto/internal/fips140/edwards25519/scalarmult.go b/src/crypto/internal/fips140/edwards25519/scalarmult.go index f7ca3cef99..3d91bb592d 100644 --- a/src/crypto/internal/fips140/edwards25519/scalarmult.go +++ b/src/crypto/internal/fips140/edwards25519/scalarmult.go @@ -167,10 +167,11 @@ func (v *Point) VarTimeDoubleScalarBaseMult(a *Scalar, A *Point, b *Scalar) *Poi // Find the first nonzero coefficient. i := 255 - for j := i; j >= 0; j-- { - if aNaf[j] != 0 || bNaf[j] != 0 { + for i >= 0 { + if aNaf[i] != 0 || bNaf[i] != 0 { break } + i-- } multA := &projCached{} |
