github.com/aavshr/aws-sdk-go@v1.41.3/service/cloudfront/sign/randomreader.go (about)

     1  package sign
     2  
     3  import (
     4  	"bytes"
     5  	"encoding/binary"
     6  	"math/rand"
     7  )
     8  
     9  // A randomReader wraps a math/rand.Rand within an reader so that it can used
    10  // as a predictable testing replacement for crypto/rand.Reader
    11  type randomReader struct {
    12  	b *bytes.Buffer
    13  	r *rand.Rand
    14  }
    15  
    16  // newRandomReader returns a new instance of the random reader
    17  func newRandomReader(r *rand.Rand) *randomReader {
    18  	return &randomReader{b: &bytes.Buffer{}, r: r}
    19  }
    20  
    21  // Read will read random bytes from up to the length of b.
    22  func (m *randomReader) Read(b []byte) (int, error) {
    23  	for i := 0; i < len(b); {
    24  		binary.Write(m.b, binary.LittleEndian, m.r.Int63())
    25  		n, _ := m.b.Read(b[i:])
    26  		i += n
    27  	}
    28  
    29  	return len(b), nil
    30  }