crypto/rsa: revert minimum GenerateKey size to 32 bits

No point in causing breakage even with GODEBUG=rsa1024min=0.

Change-Id: I923254a8c8afaca77be551b19e3555c44ebdbb67
Reviewed-on: https://go-review.googlesource.com/c/go/+/636557
Reviewed-by: Roland Shoemaker <roland@golang.org>
Reviewed-by: David Chase <drchase@google.com>
Auto-Submit: Filippo Valsorda <filippo@golang.org>
LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Daniel McCarney <daniel@binaryparadox.net>
This commit is contained in:
Filippo Valsorda 2024-12-16 17:33:50 +01:00 committed by Gopher Robot
parent b47ce8b0e9
commit 31e50af5f3
2 changed files with 6 additions and 6 deletions

View file

@ -13,9 +13,9 @@ import (
) )
// GenerateKey generates a new RSA key pair of the given bit size. // GenerateKey generates a new RSA key pair of the given bit size.
// bits must be at least 128. // bits must be at least 32.
func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) { func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) {
if bits < 128 { if bits < 32 {
return nil, errors.New("rsa: key too small") return nil, errors.New("rsa: key too small")
} }
fips140.RecordApproved() fips140.RecordApproved()
@ -93,8 +93,8 @@ func GenerateKey(rand io.Reader, bits int) (*PrivateKey, error) {
// randomPrime returns a random prime number of the given bit size following // randomPrime returns a random prime number of the given bit size following
// the process in FIPS 186-5, Appendix A.1.3. // the process in FIPS 186-5, Appendix A.1.3.
func randomPrime(rand io.Reader, bits int) ([]byte, error) { func randomPrime(rand io.Reader, bits int) ([]byte, error) {
if bits < 64 { if bits < 16 {
return nil, errors.New("rsa: prime size must be at least 32-bit") return nil, errors.New("rsa: prime size must be at least 16 bits")
} }
b := make([]byte, (bits+7)/8) b := make([]byte, (bits+7)/8)

View file

@ -101,7 +101,7 @@ func TestImpossibleKeyGeneration(t *testing.T) {
// This test ensures that trying to generate or validate toy RSA keys // This test ensures that trying to generate or validate toy RSA keys
// doesn't enter an infinite loop or panic. // doesn't enter an infinite loop or panic.
t.Setenv("GODEBUG", "rsa1024min=0") t.Setenv("GODEBUG", "rsa1024min=0")
for i := 0; i < 128; i++ { for i := 0; i < 32; i++ {
GenerateKey(rand.Reader, i) GenerateKey(rand.Reader, i)
GenerateMultiPrimeKey(rand.Reader, 3, i) GenerateMultiPrimeKey(rand.Reader, 3, i)
GenerateMultiPrimeKey(rand.Reader, 4, i) GenerateMultiPrimeKey(rand.Reader, 4, i)
@ -184,7 +184,7 @@ func TestEverything(t *testing.T) {
} }
t.Setenv("GODEBUG", "rsa1024min=0") t.Setenv("GODEBUG", "rsa1024min=0")
min := 128 min := 32
max := 560 // any smaller than this and not all tests will run max := 560 // any smaller than this and not all tests will run
if *allFlag { if *allFlag {
max = 2048 max = 2048