| 12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package s3crypto
- import (
- "io"
- )
- // Cipher interface allows for either encryption and decryption of an object
- type Cipher interface {
- Encrypter
- Decrypter
- }
- // Encrypter interface with only the encrypt method
- type Encrypter interface {
- Encrypt(io.Reader) io.Reader
- }
- // Decrypter interface with only the decrypt method
- type Decrypter interface {
- Decrypt(io.Reader) io.Reader
- }
- // CryptoReadCloser handles closing of the body and allowing reads from the decrypted
- // content.
- type CryptoReadCloser struct {
- Body io.ReadCloser
- Decrypter io.Reader
- isClosed bool
- }
- // Close lets the CryptoReadCloser satisfy io.ReadCloser interface
- func (rc *CryptoReadCloser) Close() error {
- rc.isClosed = true
- return rc.Body.Close()
- }
- // Read lets the CryptoReadCloser satisfy io.ReadCloser interface
- func (rc *CryptoReadCloser) Read(b []byte) (int, error) {
- if rc.isClosed {
- return 0, io.EOF
- }
- return rc.Decrypter.Read(b)
- }
|