aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/crypto/ed25519/ed25519.go13
1 files changed, 13 insertions, 0 deletions
diff --git a/src/crypto/ed25519/ed25519.go b/src/crypto/ed25519/ed25519.go
index a0263638ef..ed599ad290 100644
--- a/src/crypto/ed25519/ed25519.go
+++ b/src/crypto/ed25519/ed25519.go
@@ -160,6 +160,19 @@ func GenerateKey(random io.Reader) (PublicKey, PrivateKey, error) {
}
}
+ if fips140only.Enforced() && !fips140only.ApprovedRandomReader(random) {
+ return nil, nil, errors.New("crypto/ed25519: only crypto/rand.Reader is allowed in FIPS 140-only mode")
+ }
+
+ if rand.IsDefaultReader(random) {
+ privateKey, err := ed25519.GenerateKey()
+ if err != nil {
+ return nil, nil, err
+ }
+ publicKey := PublicKey(privateKey.PublicKey())
+ return publicKey, PrivateKey(privateKey.Bytes()), nil
+ }
+
seed := make([]byte, SeedSize)
if _, err := io.ReadFull(random, seed); err != nil {
return nil, nil, err