code: func computeMAC(algo TokenAlgo, secret []byte, dataToAuth [][]byte) ([]byte, error) {
  	hash := algo.hash(secret)
  	if hash == nil {
  		return nil, fmt.Errorf("tokens: unknown algo %q", algo)
  	}
  	for _, chunk := range dataToAuth {
  		// Separator between length header and the body is needed because length
  		// encoding is variable-length (decimal string).
  		if _, err := fmt.Fprintf(hash, "%d\n", len(chunk)); err != nil {
  			return nil, err
  		}
  		if _, err := hash.Write(chunk); err != nil {
  			return nil, err
  		}
  	}
  	return hash.Sum(nil), nil
  }
docs: // computeMAC packs dataToAuth into single blob and computes its MAC.