10 nextBlock: sha256.New(),
20 func (h *Hash) remaining() int {
21 return BlockSize - h.written
24 func (h *Hash) Write(p []byte) (n int, err error) {
27 n1, err = h.nextBlock.Write(p[:min(len(p), h.remaining())])
31 if h.remaining() == 0 {
32 h.blocks = append(h.blocks, h.nextBlockSum())
43 func (h *Hash) nextBlockSum() (sum [32]byte) {
44 h.nextBlock.Sum(sum[:0])
48 func (h *Hash) Sum(b []byte) []byte {
51 blocks = append(blocks, h.nextBlockSum())
53 sum := RootWithPadHash(blocks, [32]byte{})
54 return append(b, sum[:]...)
57 func (h *Hash) Reset() {
58 h.blocks = h.blocks[:0]
62 func (h *Hash) Size() int {
66 func (h *Hash) BlockSize() int {
67 return h.nextBlock.BlockSize()
70 var _ hash.Hash = (*Hash)(nil)