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 }