package zsig import ( "crypto/sha512" "io" ) const ( Alg = "SHA512/256" BlockSize = 65536 ) // Sum calculates SHA512/256 func Sum(r io.Reader, blockSize int) 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 } sum := sha512.Sum512_256(buf[:n]) c <- sum[:] } }() return c }