package sha256

import (
	"io"

	"crypto/sha256"
)

// Sum256 - single caller sha256 helper
func Sum256(data []byte) []byte {
	d := sha256.New()
	d.Write(data)
	return d.Sum(nil)
}

// Sum - io.Reader based streaming sha256 helper
func Sum(reader io.Reader) ([]byte, error) {
	d := sha256.New()
	var err error
	for err == nil {
		length := 0
		byteBuffer := make([]byte, 1024*1024)
		length, err = reader.Read(byteBuffer)
		byteBuffer = byteBuffer[0:length]
		d.Write(byteBuffer)
	}
	if err != io.EOF {
		return nil, err
	}
	return d.Sum(nil), nil
}