func doHash(h hash.Hash, data ...[]byte) ([]byte, error) {
	h.Reset()
	for _, v := range data {
		if _, err := h.Write(v); err != nil {
			return nil, err
		}
	}
	return h.Sum(nil), nil
}
// calculates Hash of the data
calculates Hash of the data
// calculates Hash of the data
func doHash(h hash.Hash, data ...[]byte) ([]byte, error) {
	h.Reset()
	for _, v := range data {
		if _, err := h.Write(v); err != nil {
			return nil, err
		}
	}
	return h.Sum(nil), nil
}
func doHash ( h hash . Hash , data ... [ ] byte ) ( [ ] byte , error ) { h . Reset ( ) for _ , v := range data { if _ , err := h . Write ( v ) ; err != nil { return nil , err } } return h . Sum ( nil ) , nil }
calculates Hash of the data
calculates Hash of the data