func makeHashes(b ...[]byte) []*[sha256.Size]byte {
	hashes := make([]*[sha256.Size]byte, 0, len(b))
	for _, v := range b {
		var hash [sha256.Size]byte
		copy(hash[:], v)
		hashes = append(hashes, &hash)
	}
	return hashes
}
makeHashes takes an array of []byte and converts it to sha256 digest
pointers.
package merkle
import (
	"bytes"
	"crypto/sha256"
	"encoding/binary"
	"encoding/hex"
	"testing"
)
const (
	leftVectorS  = "360f84035942243c6a36537ae2f8673485e6c04455a0a85a0db19690f2541480"
	rightVectorS = "27042f4e6eca7d0b2a7ee4026df2ecfa51d3339e6d122aa099118ecd8563bad9"
	rootVectorS  = "b0b3e798e388f85158a9eb6c5053b81e76aa77e7a780d21cebb8e127517227dc"
)
var (
	leftVector, rightVector, rootVector []byte
)
func init() {
	var err error
	leftVector, err = hex.DecodeString(leftVectorS)
	if err != nil {
		panic(err)
	}
	rightVector, err = hex.DecodeString(rightVectorS)
	if err != nil {
		panic(err)
	}
	rootVector, err = hex.DecodeString(rootVectorS)
	if err != nil {
		panic(err)
	}
}
func concat(l, r []byte) []byte {
	b := make([]byte, len(l)+len(r))
	copy(b, l)
	copy(b[len(l):], r)
	return b
}
func digest(src []byte, dst *[]byte) {
	h := sha256.New()
	h.Write(src)
	copy(*dst, h.Sum(nil))
}