c901e5ec3c
Updates #58483 Tested on Linux amd64: type Element struct { l0, l1, l2, l3, l4 uint64 } type PointAfter struct { x, y, z, t Element _ incomparable } type PointBefore struct { _ incomparable x, y, z, t Element } type incomparable [0]func() func main() { fmt.Println(unsafe.Sizeof(PointAfter{})) // 168 fmt.Println(unsafe.Sizeof(PointBefore{})) // 160 } Change-Id: I6c4fcb586bbf3febf62b6e54608496ff81685e43 Reviewed-on: https://go-review.googlesource.com/c/go/+/467616 Reviewed-by: Roland Shoemaker <roland@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Filippo Valsorda <filippo@golang.org> Reviewed-by: Damien Neil <dneil@google.com> Run-TryBot: Filippo Valsorda <filippo@golang.org> |
||
---|---|---|
.github/workflows | ||
field | ||
doc.go | ||
edwards25519.go | ||
edwards25519_test.go | ||
extra.go | ||
extra_test.go | ||
go.mod | ||
LICENSE | ||
README.md | ||
scalar.go | ||
scalar_alias_test.go | ||
scalar_fiat.go | ||
scalar_test.go | ||
scalarmult.go | ||
scalarmult_test.go | ||
tables.go | ||
tables_test.go |
filippo.io/edwards25519
import "filippo.io/edwards25519"
This library implements the edwards25519 elliptic curve, exposing the necessary APIs to build a wide array of higher-level primitives. Read the docs at pkg.go.dev/filippo.io/edwards25519.
The code is originally derived from Adam Langley's internal implementation in the Go standard library, and includes George Tankersley's performance improvements. It was then further developed by Henry de Valence for use in ristretto255, and was finally merged back into the Go standard library as of Go 1.17. It now tracks the upstream codebase and extends it with additional functionality.
Most users don't need this package, and should instead use crypto/ed25519
for signatures, golang.org/x/crypto/curve25519
for Diffie-Hellman, or github.com/gtank/ristretto255
for prime order group logic. However, for anyone currently using a fork of crypto/internal/edwards25519
/crypto/ed25519/internal/edwards25519
or github.com/agl/edwards25519
, this package should be a safer, faster, and more powerful alternative.
Since this package is meant to curb proliferation of edwards25519 implementations in the Go ecosystem, it welcomes requests for new APIs or reviewable performance improvements.