Skip to content

Commit

Permalink
Check for crypto/rand errors and ReadFull io.Readers
Browse files Browse the repository at this point in the history
In practice crypto/rand.Read never returns an error, but that is not
guaranteed. Check for those errors.

In contrast to crypto/rand.Reader, a user-provided io.Reader,
might not fill the buffer without returning an error. Though marginal,
we should deal with that corner-case as well.
  • Loading branch information
bwesterb committed Mar 16, 2023
1 parent 9d4f8c8 commit 7857037
Show file tree
Hide file tree
Showing 11 changed files with 29 additions and 11 deletions.
2 changes: 1 addition & 1 deletion abe/cpabe/tkn20/internal/tkn/bk.go
Expand Up @@ -78,7 +78,7 @@ func DeriveAttributeKeysCCA(rand io.Reader, sp *SecretParams, attrs *Attributes)

func EncryptCCA(rand io.Reader, public *PublicParams, policy *Policy, msg []byte) ([]byte, error) {
seed := make([]byte, macKeySeedSize)
_, err := rand.Read(seed)
_, err := io.ReadFull(rand, seed)
if err != nil {
return nil, err
}
Expand Down
2 changes: 1 addition & 1 deletion blindsign/blindrsa/blindrsa.go
Expand Up @@ -183,7 +183,7 @@ func (v RSAVerifier) Blind(random io.Reader, message []byte) ([]byte, blindsign.
}

salt := make([]byte, v.hash.Size())
_, err := random.Read(salt)
_, err := io.ReadFull(random, salt)
if err != nil {
return nil, nil, err
}
Expand Down
4 changes: 3 additions & 1 deletion kem/frodo/frodo640shake/frodo.go
Expand Up @@ -160,7 +160,9 @@ func generateKeyPair(rand io.Reader) (*PublicKey, *PrivateKey, error) {
func (pk *PublicKey) EncapsulateTo(ct []byte, ss []byte, seed []byte) {
if seed == nil {
seed = make([]byte, EncapsulationSeedSize)
_, _ = cryptoRand.Read(seed[:])
if _, err := cryptoRand.Read(seed[:]); err != nil {
panic(err)
}
}
if len(seed) != EncapsulationSeedSize {
panic("seed must be of length EncapsulationSeedSize")
Expand Down
4 changes: 3 additions & 1 deletion kem/kyber/kyber1024/kyber.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion kem/kyber/kyber512/kyber.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion kem/kyber/kyber768/kyber.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion kem/kyber/templates/pkg.templ.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion kem/sike/sikep434/sike.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion kem/sike/sikep503/sike.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion kem/sike/sikep751/sike.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 3 additions & 1 deletion kem/sike/templates/pkg.templ.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 7857037

Please sign in to comment.