Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
curve25519: replace field implementation with filippo.io/edwards25519
This imports the crypto/ed25519/internal/edwards25519/field package from CL 276272, and uses it in x/crypto/curve25519. The ScalarMult code was ported 1:1 from curve25519_generic.go. old code lines new code lines Go 896 463 Assembly (manually written) 1772 (1772) 362 (34) 43% performance loss on amd64, 33% loss on 386, and 45% gain on arm64. Feels worth it to remove 1700 lines of manually written assembly. Apple M1 name old time/op new time/op delta X25519Basepoint-8 85.0µs ± 1% 46.4µs ± 0% -45.39% (p=0.000 n=10+9) X25519-8 84.4µs ± 0% 46.7µs ± 2% -44.76% (p=0.000 n=8+9) Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz name old time/op new time/op delta X25519Basepoint-4 42.6µs ± 1% 60.9µs ± 1% +43.22% (p=0.000 n=9+10) X25519-4 42.5µs ± 1% 60.9µs ± 0% +43.17% (p=0.000 n=9+9) Intel(R) Core(TM) i5-7400 CPU @ 3.00GHz [GOARCH=386] name old time/op new time/op delta X25519Basepoint-4 530µs ± 1% 703µs ± 1% +32.81% (p=0.000 n=10+10) X25519-4 530µs ± 1% 706µs ± 1% +33.18% (p=0.000 n=10+10) Change-Id: I1dc62a6a3a3e417a1366ff873c475087a0395124 Reviewed-on: https://go-review.googlesource.com/c/crypto/+/315269 Run-TryBot: Filippo Valsorda <filippo@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Trust: Filippo Valsorda <filippo@golang.org> Trust: Katie Hockman <katie@golang.org> Reviewed-by: Katie Hockman <katie@golang.org>
- Loading branch information