package zsig import ( "hash" "io" ) const ( Alg = "SHA512/256" BlockSize = 65536 ) // Sum calculates SHA512/256 func Sum(r io.Reader, blockSize int, h hash.Hash) chan []byte { c := make(chan []byte, 1) if blockSize == 0 { blockSize = BlockSize } go func() { defer close(c) buf := make([]byte, blockSize) for { n, err := io.ReadFull(r, buf) if err == io.EOF { return } h.Reset() h.Write(buf[:n]) c <- h.Sum(nil) } }() return c }