Fork of https://filippo.io/edwards25519 with unsafe faster operations. https://filippo.io/edwards25519
Go to file
Michael Pratt 5caf132ffa all: give nested modules fully-qualified names
The two crypto modules are both named "asm". If both are included in a
single go.work (e.g., from `go work use -r .` in the repo), builds break
from "module asm appears multiple times in workspace".

Give these modules fully-qualified names to avoid conflicts. While we
are here, also expand the name of two other testdata modules. Those
modules don't currently conflict, but they have vague names at risk of
future conflicts.

Fixes golang/go#57769.

Change-Id: I2bd8a505051e92348d49560ec698ed921f2c81be
Reviewed-on: https://go-review.googlesource.com/c/go/+/461896
Reviewed-by: Bryan Mills <bcmills@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
Reviewed-by: Filippo Valsorda <filippo@golang.org>
Run-TryBot: Michael Pratt <mpratt@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
Auto-Submit: Michael Pratt <mpratt@google.com>
2023-12-10 20:10:48 +01:00
.github/workflows all: stop testing on unsupported Go 1.16 2022-07-31 17:08:28 -04:00
field all: give nested modules fully-qualified names 2023-12-10 20:10:48 +01:00
doc.go edwards25519: sync with upstream 2022-05-25 01:39:14 +02:00
edwards25519.go edwards25519: sync with upstream 2022-05-25 01:39:14 +02:00
edwards25519_test.go edwards25519: drop Go builders noopt check 2023-12-10 20:00:03 +01:00
extra.go extra: fix Scalar.Invert comment (#31) 2022-08-03 12:59:37 -04:00
extra_test.go scalar: clean up fiat wrapper 2022-07-31 17:08:28 -04:00
go.mod all: sync with landed standard library upstream 2021-05-26 18:09:02 +02:00
LICENSE all: flatten the package and make FieldElement opaque 2020-09-28 14:18:44 +02:00
README.md edwards25519: sync with upstream 2022-05-25 01:39:14 +02:00
scalar.go scalar: replace wide reduction with limbed operations 2022-07-31 17:08:28 -04:00
scalar_alias_test.go scalar: fix aliasing of MultiplyAdd addend and receiver 2022-07-31 17:08:28 -04:00
scalar_fiat.go edwards25519: gofmt scalar_fiat.go 2023-12-10 20:04:13 +01:00
scalar_test.go scalar: document and update fiat generation code 2022-07-31 17:08:28 -04:00
scalarmult.go all: sync with landed standard library upstream 2021-05-26 18:09:02 +02:00
scalarmult_test.go scalar: replace the Christmas tree with a fiat-crypto generated scalar field 2022-07-31 17:08:28 -04:00
tables.go all: fix comment typos 2023-12-10 20:00:32 +01:00
tables_test.go all: sync with landed standard library upstream 2021-05-26 18:09:02 +02:00

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.