github.com/anacrolix/torrent@v1.61.0/metainfo/pieces.go (about) 1 package metainfo 2 3 import ( 4 "crypto/sha1" 5 "io" 6 ) 7 8 func GeneratePieces(r io.Reader, pieceLength int64, b []byte) ([]byte, error) { 9 for { 10 h := sha1.New() 11 written, err := io.CopyN(h, r, pieceLength) 12 if written > 0 { 13 b = h.Sum(b) 14 } 15 if err == io.EOF { 16 return b, nil 17 } 18 if err != nil { 19 return b, err 20 } 21 } 22 }