code: func (v *Validator) calculateSignature(ts, qp string, b []byte) ([]byte, error) {
  	var m bytes.Buffer
  	bh := sha256.Sum256(b)
  	fmt.Fprintf(&m, "%s\n%s\n%s", ts, qp, bh[:])
  	mac := hmac.New(sha256.New, []byte(v.SigningKey))
  	if _, err := mac.Write(m.Bytes()); err != nil {
  		return nil, err
  	}
  	return mac.Sum(nil), nil
  }
docs: // calculateSignature calculates the MessageBird-Signature using HMAC_SHA_256
  // encoding and the timestamp, query params and body from the request:
  // signature = HMAC_SHA_256(
  //	TIMESTAMP + \n + QUERY_PARAMS + \n + SHA_256_SUM(BODY),
  //	signing_key)