]> Cypherpunks repositories - gostls13.git/commit
crypto/ecdh: new package
authorFilippo Valsorda <filippo@golang.org>
Thu, 7 Apr 2022 19:15:31 +0000 (15:15 -0400)
committerFilippo Valsorda <filippo@golang.org>
Fri, 12 Aug 2022 00:03:39 +0000 (00:03 +0000)
commitd88d91e32e1440307369d50ba17ce622399a8bc1
treec3008a01311b1684450d6bb2d00ae737327037d3
parent0b79abc27e1e4ea4ef3c299206f49e0724b03d57
crypto/ecdh: new package

We use crypto/internal/edwards25519/field to implement X25519 directly,
so that golang.org/x/crypto/curve25519 can be dropped from the src
module dependencies, and eventually replaced with a crypto/ecdh wrapper,
removing the need to keep golang.org/x/crypto/curve25519/internal/field
in sync with crypto/internal/edwards25519/field.

In crypto/internal/nistec, we add BytesX to serialize only the x
coordinate, which we'll need for the horrible ECDSA x-coord-to-scalar
operation, too.

In crypto/tls, we replace the ECDHE implementation with crypto/ecdh,
dropping the X25519 special cases and related scaffolding.

Finally, FINALLY, we deprecate the ~white whale~ big.Int-based APIs of
the crypto/elliptic package.   •_•)   ( •_•)>⌐■-■   (⌐■_■)

Fixes #52182
Fixes #34648
Fixes #52221

Change-Id: Iccdda210319cc892e96bb28a0e7b7123551982c7
Reviewed-on: https://go-review.googlesource.com/c/go/+/398914
Reviewed-by: Fernando Lobato Meeser <felobato@google.com>
Reviewed-by: Roland Shoemaker <roland@golang.org>
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
33 files changed:
api/next/52221.txt [new file with mode: 0644]
src/crypto/ecdh/ecdh.go [new file with mode: 0644]
src/crypto/ecdh/ecdh_test.go [new file with mode: 0644]
src/crypto/ecdh/nist.go [new file with mode: 0644]
src/crypto/ecdh/x25519.go [new file with mode: 0644]
src/crypto/elliptic/elliptic.go
src/crypto/elliptic/params.go
src/crypto/internal/nistec/generate.go
src/crypto/internal/nistec/p224.go
src/crypto/internal/nistec/p256.go
src/crypto/internal/nistec/p256_asm.go
src/crypto/internal/nistec/p384.go
src/crypto/internal/nistec/p521.go
src/crypto/tls/handshake_client.go
src/crypto/tls/handshake_client_tls13.go
src/crypto/tls/handshake_server_test.go
src/crypto/tls/handshake_server_tls13.go
src/crypto/tls/key_agreement.go
src/crypto/tls/key_schedule.go
src/go/build/deps_test.go
src/vendor/golang.org/x/crypto/curve25519/curve25519.go [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/README [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe.go [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.go [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64.s [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe_amd64_noasm.go [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.go [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64.s [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe_arm64_noasm.go [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/fe_generic.go [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/sync.checkpoint [deleted file]
src/vendor/golang.org/x/crypto/curve25519/internal/field/sync.sh [deleted file]
src/vendor/modules.txt