crypto/ed25519/internal/edwards25519: move to crypto/internal/edwards25519

This will allow us to use crypto/internal/edwards25519/field from
crypto/ecdh to implement X25519, dropping the dependency on
golang.org/x/crypto/curve25519.

For #52182

Change-Id: I3be9debc6e13bf06944b98668f34313a975914d0
Reviewed-on: https://go-review.googlesource.com/c/go/+/402556
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Run-TryBot: Filippo Valsorda <filippo@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
diff --git a/src/crypto/ed25519/ed25519.go b/src/crypto/ed25519/ed25519.go
index 4669e02..d43dd12 100644
--- a/src/crypto/ed25519/ed25519.go
+++ b/src/crypto/ed25519/ed25519.go
@@ -15,7 +15,7 @@
 import (
 	"bytes"
 	"crypto"
-	"crypto/ed25519/internal/edwards25519"
+	"crypto/internal/edwards25519"
 	cryptorand "crypto/rand"
 	"crypto/sha512"
 	"errors"
diff --git a/src/crypto/ed25519/internal/edwards25519/doc.go b/src/crypto/internal/edwards25519/doc.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/doc.go
rename to src/crypto/internal/edwards25519/doc.go
diff --git a/src/crypto/ed25519/internal/edwards25519/edwards25519.go b/src/crypto/internal/edwards25519/edwards25519.go
similarity index 97%
rename from src/crypto/ed25519/internal/edwards25519/edwards25519.go
rename to src/crypto/internal/edwards25519/edwards25519.go
index 4e0ad7a..71e9c09 100644
--- a/src/crypto/ed25519/internal/edwards25519/edwards25519.go
+++ b/src/crypto/internal/edwards25519/edwards25519.go
@@ -5,7 +5,7 @@
 package edwards25519
 
 import (
-	"crypto/ed25519/internal/edwards25519/field"
+	"crypto/internal/edwards25519/field"
 	"errors"
 )
 
@@ -147,9 +147,8 @@
 	//      (*field.Element).SetBytes docs) and
 	//   2) the ones where the x-coordinate is zero and the sign bit is set.
 	//
-	// This is consistent with crypto/ed25519/internal/edwards25519. Read more
-	// at https://hdevalence.ca/blog/2020-10-04-its-25519am, specifically the
-	// "Canonical A, R" section.
+	// Read more at https://hdevalence.ca/blog/2020-10-04-its-25519am,
+	// specifically the "Canonical A, R" section.
 
 	y, err := new(field.Element).SetBytes(x)
 	if err != nil {
diff --git a/src/crypto/ed25519/internal/edwards25519/edwards25519_test.go b/src/crypto/internal/edwards25519/edwards25519_test.go
similarity index 99%
rename from src/crypto/ed25519/internal/edwards25519/edwards25519_test.go
rename to src/crypto/internal/edwards25519/edwards25519_test.go
index 8031256..9bc33f9 100644
--- a/src/crypto/ed25519/internal/edwards25519/edwards25519_test.go
+++ b/src/crypto/internal/edwards25519/edwards25519_test.go
@@ -5,7 +5,7 @@
 package edwards25519
 
 import (
-	"crypto/ed25519/internal/edwards25519/field"
+	"crypto/internal/edwards25519/field"
 	"encoding/hex"
 	"os"
 	"reflect"
diff --git a/src/crypto/ed25519/internal/edwards25519/field/_asm/fe_amd64_asm.go b/src/crypto/internal/edwards25519/field/_asm/fe_amd64_asm.go
similarity index 98%
rename from src/crypto/ed25519/internal/edwards25519/field/_asm/fe_amd64_asm.go
rename to src/crypto/internal/edwards25519/field/_asm/fe_amd64_asm.go
index fbc0cce..411399c 100644
--- a/src/crypto/ed25519/internal/edwards25519/field/_asm/fe_amd64_asm.go
+++ b/src/crypto/internal/edwards25519/field/_asm/fe_amd64_asm.go
@@ -16,7 +16,7 @@
 //go:generate go run . -out ../fe_amd64.s -stubs ../fe_amd64.go -pkg field
 
 func main() {
-	Package("crypto/ed25519/internal/edwards25519/field")
+	Package("crypto/internal/edwards25519/field")
 	ConstraintExpr("amd64,gc,!purego")
 	feMul()
 	feSquare()
diff --git a/src/crypto/ed25519/internal/edwards25519/field/_asm/go.mod b/src/crypto/internal/edwards25519/field/_asm/go.mod
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/_asm/go.mod
rename to src/crypto/internal/edwards25519/field/_asm/go.mod
diff --git a/src/crypto/ed25519/internal/edwards25519/field/_asm/go.sum b/src/crypto/internal/edwards25519/field/_asm/go.sum
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/_asm/go.sum
rename to src/crypto/internal/edwards25519/field/_asm/go.sum
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe.go b/src/crypto/internal/edwards25519/field/fe.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe.go
rename to src/crypto/internal/edwards25519/field/fe.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_alias_test.go b/src/crypto/internal/edwards25519/field/fe_alias_test.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_alias_test.go
rename to src/crypto/internal/edwards25519/field/fe_alias_test.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_amd64.go b/src/crypto/internal/edwards25519/field/fe_amd64.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_amd64.go
rename to src/crypto/internal/edwards25519/field/fe_amd64.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_amd64.s b/src/crypto/internal/edwards25519/field/fe_amd64.s
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_amd64.s
rename to src/crypto/internal/edwards25519/field/fe_amd64.s
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_amd64_noasm.go b/src/crypto/internal/edwards25519/field/fe_amd64_noasm.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_amd64_noasm.go
rename to src/crypto/internal/edwards25519/field/fe_amd64_noasm.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_arm64.go b/src/crypto/internal/edwards25519/field/fe_arm64.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_arm64.go
rename to src/crypto/internal/edwards25519/field/fe_arm64.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_arm64.s b/src/crypto/internal/edwards25519/field/fe_arm64.s
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_arm64.s
rename to src/crypto/internal/edwards25519/field/fe_arm64.s
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_arm64_noasm.go b/src/crypto/internal/edwards25519/field/fe_arm64_noasm.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_arm64_noasm.go
rename to src/crypto/internal/edwards25519/field/fe_arm64_noasm.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_bench_test.go b/src/crypto/internal/edwards25519/field/fe_bench_test.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_bench_test.go
rename to src/crypto/internal/edwards25519/field/fe_bench_test.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_generic.go b/src/crypto/internal/edwards25519/field/fe_generic.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_generic.go
rename to src/crypto/internal/edwards25519/field/fe_generic.go
diff --git a/src/crypto/ed25519/internal/edwards25519/field/fe_test.go b/src/crypto/internal/edwards25519/field/fe_test.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/field/fe_test.go
rename to src/crypto/internal/edwards25519/field/fe_test.go
diff --git a/src/crypto/ed25519/internal/edwards25519/scalar.go b/src/crypto/internal/edwards25519/scalar.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/scalar.go
rename to src/crypto/internal/edwards25519/scalar.go
diff --git a/src/crypto/ed25519/internal/edwards25519/scalar_alias_test.go b/src/crypto/internal/edwards25519/scalar_alias_test.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/scalar_alias_test.go
rename to src/crypto/internal/edwards25519/scalar_alias_test.go
diff --git a/src/crypto/ed25519/internal/edwards25519/scalar_test.go b/src/crypto/internal/edwards25519/scalar_test.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/scalar_test.go
rename to src/crypto/internal/edwards25519/scalar_test.go
diff --git a/src/crypto/ed25519/internal/edwards25519/scalarmult.go b/src/crypto/internal/edwards25519/scalarmult.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/scalarmult.go
rename to src/crypto/internal/edwards25519/scalarmult.go
diff --git a/src/crypto/ed25519/internal/edwards25519/scalarmult_test.go b/src/crypto/internal/edwards25519/scalarmult_test.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/scalarmult_test.go
rename to src/crypto/internal/edwards25519/scalarmult_test.go
diff --git a/src/crypto/ed25519/internal/edwards25519/tables.go b/src/crypto/internal/edwards25519/tables.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/tables.go
rename to src/crypto/internal/edwards25519/tables.go
diff --git a/src/crypto/ed25519/internal/edwards25519/tables_test.go b/src/crypto/internal/edwards25519/tables_test.go
similarity index 100%
rename from src/crypto/ed25519/internal/edwards25519/tables_test.go
rename to src/crypto/internal/edwards25519/tables_test.go
diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go
index f6d41dd..5b971b9 100644
--- a/src/go/build/deps_test.go
+++ b/src/go/build/deps_test.go
@@ -408,8 +408,8 @@
 	< crypto/internal/subtle
 	< crypto/internal/nistec/fiat
 	< crypto/internal/nistec
-	< crypto/ed25519/internal/edwards25519/field, golang.org/x/crypto/curve25519/internal/field
-	< crypto/ed25519/internal/edwards25519
+	< crypto/internal/edwards25519/field, golang.org/x/crypto/curve25519/internal/field
+	< crypto/internal/edwards25519
 	< crypto/cipher
 	< crypto/internal/boring
 	< crypto/boring