1package s3crypto_test 2 3import ( 4 "bytes" 5 "io" 6 "io/ioutil" 7 8 "github.com/aws/aws-sdk-go/service/s3/s3crypto" 9) 10 11type mockGenerator struct{} 12 13func (m mockGenerator) GenerateCipherData(keySize, ivSize int) (s3crypto.CipherData, error) { 14 cd := s3crypto.CipherData{ 15 Key: make([]byte, keySize), 16 IV: make([]byte, ivSize), 17 } 18 return cd, nil 19} 20 21func (m mockGenerator) EncryptKey(key []byte) ([]byte, error) { 22 size := len(key) 23 b := bytes.Repeat([]byte{1}, size) 24 return b, nil 25} 26 27func (m mockGenerator) DecryptKey(key []byte) ([]byte, error) { 28 return make([]byte, 16), nil 29} 30 31type mockCipherBuilder struct { 32 generator s3crypto.CipherDataGenerator 33} 34 35func (builder mockCipherBuilder) ContentCipher() (s3crypto.ContentCipher, error) { 36 cd, err := builder.generator.GenerateCipherData(32, 16) 37 if err != nil { 38 return nil, err 39 } 40 return &mockContentCipher{cd}, nil 41} 42 43type mockContentCipher struct { 44 cd s3crypto.CipherData 45} 46 47func (cipher *mockContentCipher) GetCipherData() s3crypto.CipherData { 48 return cipher.cd 49} 50 51func (cipher *mockContentCipher) EncryptContents(src io.Reader) (io.Reader, error) { 52 b, err := ioutil.ReadAll(src) 53 if err != nil { 54 return nil, err 55 } 56 size := len(b) 57 b = bytes.Repeat([]byte{1}, size) 58 return bytes.NewReader(b), nil 59} 60 61func (cipher *mockContentCipher) DecryptContents(src io.ReadCloser) (io.ReadCloser, error) { 62 b, err := ioutil.ReadAll(src) 63 if err != nil { 64 return nil, err 65 } 66 size := len(b) 67 return ioutil.NopCloser(bytes.NewReader(make([]byte, size))), nil 68} 69