aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDamien Neil <dneil@google.com>2024-09-27 14:19:30 -0700
committerDamien Neil <dneil@google.com>2024-09-30 15:49:07 +0000
commitf4b7291d73c40af90fdbc5fa0d72a26c5f127931 (patch)
treecd0f047e4e35268474e5dee454a5f5378b7e0a99 /src
parent3637ebf1e0d833234c1025db1faceeae6fe6ecbb (diff)
downloadgo-f4b7291d73c40af90fdbc5fa0d72a26c5f127931.tar.xz
crypto/internal/randutil: use math/rand/v2
Instead of using a select on a closed channel to generate one bit of randomness, use math/rand/v2. Change-Id: I36d294f17b9f5b437ca50e1c95da97bbe632c0a4 Reviewed-on: https://go-review.googlesource.com/c/go/+/616475 Reviewed-by: Ian Lance Taylor <iant@google.com> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com> Reviewed-by: Roland Shoemaker <roland@golang.org> Reviewed-by: Filippo Valsorda <filippo@golang.org>
Diffstat (limited to 'src')
-rw-r--r--src/crypto/internal/randutil/randutil.go22
-rw-r--r--src/go/build/deps_test.go2
2 files changed, 6 insertions, 18 deletions
diff --git a/src/crypto/internal/randutil/randutil.go b/src/crypto/internal/randutil/randutil.go
index 84b1295a87..5a8b096d15 100644
--- a/src/crypto/internal/randutil/randutil.go
+++ b/src/crypto/internal/randutil/randutil.go
@@ -8,31 +8,19 @@ package randutil
import (
"io"
- "sync"
+ "math/rand/v2"
)
-var (
- closedChanOnce sync.Once
- closedChan chan struct{}
-)
-
-// MaybeReadByte reads a single byte from r with ~50% probability. This is used
+// MaybeReadByte reads a single byte from r with 50% probability. This is used
// to ensure that callers do not depend on non-guaranteed behaviour, e.g.
// assuming that rsa.GenerateKey is deterministic w.r.t. a given random stream.
//
// This does not affect tests that pass a stream of fixed bytes as the random
// source (e.g. a zeroReader).
func MaybeReadByte(r io.Reader) {
- closedChanOnce.Do(func() {
- closedChan = make(chan struct{})
- close(closedChan)
- })
-
- select {
- case <-closedChan:
+ if rand.Uint64()&1 == 1 {
return
- case <-closedChan:
- var buf [1]byte
- r.Read(buf[:])
}
+ var buf [1]byte
+ r.Read(buf[:])
}
diff --git a/src/go/build/deps_test.go b/src/go/build/deps_test.go
index 40034263cc..e233535f75 100644
--- a/src/go/build/deps_test.go
+++ b/src/go/build/deps_test.go
@@ -460,7 +460,7 @@ var depsRules = `
< crypto/internal/boring
< crypto/boring;
- crypto/internal/alias
+ crypto/internal/alias, math/rand/v2
< crypto/internal/randutil
< crypto/internal/nistec/fiat
< crypto/internal/nistec