code: func (hs *HmacSigner) SignBytes(buf []byte) ([]byte, error) {
  	var err error
  
  	// check hs.key
  	if hs.key == nil {
  		return nil, ErrMissingPrivateKey
  	}
  
  	// hash
  	h := hmac.New(hs.hash.New, hs.key)
  	_, err = h.Write(buf)
  	if err != nil {
  		return nil, err
  	}
  
  	return h.Sum(nil), nil
  }
docs: // SignBytes creates a signature for buf.