commit | 3497b51f5e642191ba652f0cd445257b5576178c | [log] [tgz] |
---|---|---|
author | Filippo Valsorda <filippo@golang.org> | Wed May 05 17:15:45 2021 -0400 |
committer | Filippo Valsorda <filippo@golang.org> | Wed May 05 21:26:54 2021 +0000 |
tree | d854abbf40375cbced0bebe45c52ecbd51b2fa33 | |
parent | e9a32991a82ef02a1e74f495dcc0785239782bfe [diff] |
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>
This repository holds supplementary Go cryptography libraries.
The easiest way to install is to run go get -u golang.org/x/crypto/...
. You can also manually git clone the repository to $GOPATH/src/golang.org/x/crypto
.
This repository uses Gerrit for code changes. To learn how to submit changes to this repository, see https://golang.org/doc/contribute.html.
The main issue tracker for the crypto repository is located at https://github.com/golang/go/issues. Prefix your issue with “x/crypto:” in the subject line, so it is easy to find.
Note that contributions to the cryptography package receive additional scrutiny due to their sensitive nature. Patches may take longer than normal to receive feedback.