crypto/rsa: rsa.SignPSS with opts=nil shouldn't crash. SignPSS is documented as allowing opts to be nil, but actually crashes in that case. This change fixes that. Change-Id: Ic48ff5f698c010a336e2bf720e0f44be1aecafa0 Reviewed-on: https://go-review.googlesource.com/2330 Reviewed-by: Minux Ma <minux@golang.org>
diff --git a/src/crypto/rsa/pss.go b/src/crypto/rsa/pss.go index e9f2908..0a41814 100644 --- a/src/crypto/rsa/pss.go +++ b/src/crypto/rsa/pss.go
@@ -255,7 +255,7 @@ saltLength = hash.Size() } - if opts.Hash != 0 { + if opts != nil && opts.Hash != 0 { hash = opts.Hash }
diff --git a/src/crypto/rsa/pss_test.go b/src/crypto/rsa/pss_test.go index 32e6fc3..cae24e5 100644 --- a/src/crypto/rsa/pss_test.go +++ b/src/crypto/rsa/pss_test.go
@@ -189,6 +189,15 @@ } } +func TestPSSNilOpts(t *testing.T) { + hash := crypto.SHA256 + h := hash.New() + h.Write([]byte("testing")) + hashed := h.Sum(nil) + + SignPSS(rand.Reader, rsaPrivateKey, hash, hashed, nil) +} + func TestPSSSigning(t *testing.T) { var saltLengthCombinations = []struct { signSaltLength, verifySaltLength int