github.com/code-to-go/safepool.lib@v0.0.0-20221205180519-ee25e63c226e/pool/io.go (about) 1 package pool 2 3 import ( 4 "io" 5 6 "github.com/code-to-go/safepool.lib/core" 7 "github.com/code-to-go/safepool.lib/security" 8 "github.com/code-to-go/safepool.lib/transport" 9 ) 10 11 func (p *Pool) writeFile(name string, r io.Reader) (*security.HashStream, error) { 12 hr, err := security.NewHashStream(r, nil) 13 if core.IsErr(err, "cannot create hash reader: %v") { 14 return nil, err 15 } 16 17 er, err := security.EncryptingReader(p.masterKeyId, p.keyFunc, hr) 18 if core.IsErr(err, "cannot create encrypting reader: %v") { 19 return nil, err 20 } 21 22 err = p.e.Write(name, er) 23 return hr, err 24 } 25 26 func (p *Pool) readFile(name string, rang *transport.Range, w io.Writer) (*security.HashStream, error) { 27 hw, err := security.NewHashStream(nil, w) 28 if core.IsErr(err, "cannot create hash stream: %v") { 29 return nil, err 30 } 31 32 ew, err := security.DecryptingWriter(p.keyFunc, hw) 33 if core.IsErr(err, "cannot create encrypting reader: %v") { 34 return nil, err 35 } 36 37 err = p.e.Read(name, rang, ew) 38 return hw, err 39 }