]> Cypherpunks repositories - gostls13.git/commitdiff
crypto/{ecdsa,rsa}: always use io.ReadFull with crypto/rand.Reader.
authorAdam Langley <agl@golang.org>
Mon, 16 Mar 2015 23:42:12 +0000 (16:42 -0700)
committerAdam Langley <agl@golang.org>
Wed, 18 Mar 2015 00:37:48 +0000 (00:37 +0000)
crypto/rand.Reader doesn't ensure that short reads don't happen. This
change contains a couple of fixups where io.ReadFull wasn't being used
with it.

Change-Id: I3855b81f5890f2e703112eeea804aeba07b6a6b8
Reviewed-on: https://go-review.googlesource.com/7645
Reviewed-by: Minux Ma <minux@golang.org>
Reviewed-by: Andrew Gerrand <adg@golang.org>
src/crypto/ecdsa/ecdsa.go
src/crypto/rsa/rsa.go

index 59902014df55fbfcf861d41c608e93e0a0d0f1fd..d003f9d0b3c554d85ecbe1cd83cf1e7235506c78 100644 (file)
@@ -140,7 +140,7 @@ func Sign(rand io.Reader, priv *PrivateKey, hash []byte) (r, s *big.Int, err err
                entropylen = 32
        }
        entropy := make([]byte, entropylen)
-       _, err = rand.Read(entropy)
+       _, err = io.ReadFull(rand, entropy)
        if err != nil {
                return
        }
index f9f6d25a893f456a719cd26aa5d5827c5a8492fa..99fa94e58a3da6f03637b331dba9107b24003464 100644 (file)
@@ -102,7 +102,7 @@ func (priv *PrivateKey) Decrypt(rand io.Reader, ciphertext []byte, opts crypto.D
        case *PKCS1v15DecryptOptions:
                if l := opts.SessionKeyLen; l > 0 {
                        plaintext = make([]byte, l)
-                       if _, err := rand.Read(plaintext); err != nil {
+                       if _, err := io.ReadFull(rand, plaintext); err != nil {
                                return nil, err
                        }
                        if err := DecryptPKCS1v15SessionKey(rand, priv, ciphertext, plaintext); err != nil {