func (h *Hasher) Hash(b []byte) ([]byte, error) {
	if h.size == 0 {
		return sha3hash(h.span, h.zerohashes[h.depth])
	}
	copy(h.bmt.buffer[h.size:], zerosection)
	// write the last section with final flag set to true
	go h.processSection(h.pos, true)
	select {
	case result := <-h.result:
		return sha3hash(h.span, result)
	case err := <-h.errc:
		return nil, err
	}
}
// Hash returns the BMT root hash of the buffer and an error
// using Hash presupposes sequential synchronous writes (io.Writer interface).
Hash returns the BMT root hash of the buffer and an error
using Hash presupposes sequential synchronous writes (io.Writer interface).
// Hash returns the BMT root hash of the buffer and an error // using Hash presupposes sequential synchronous writes ( io . Writer interface ) .
func (h *Hasher) Hash(b []byte) ([]byte, error) {
	if h.size == 0 {
		return sha3hash(h.span, h.zerohashes[h.depth])
	}
	copy(h.bmt.buffer[h.size:], zerosection)
	go h.processSection(h.pos, true)
	select {
	case result := <-h.result:
		return sha3hash(h.span, result)
	case err := <-h.errc:
		return nil, err
	}
}
func ( h * Hasher ) Hash ( b [ ] byte ) ( [ ] byte , error ) { if h . size == 0 { return sha3hash ( h . span , h . zerohashes [ h . depth ] ) } copy ( h . bmt . buffer [ h . size : ] , zerosection ) go h . processSection ( h . pos , true ) select { case result := <- h . result : return sha3hash ( h . span , result ) case err := <- h . errc : return nil , err } }
Hash returns the BMT root hash of the buffer and an error
using Hash presupposes sequential synchronous writes (io.Writer interface).
Hash returns the BMT root hash of the buffer and an error using Hash presupposes sequential synchronous writes ( io . Writer interface ) .
// write the last section with final flag set to true