mock_test.go 1.5 KB

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