code: func EncodeWithSigner(header *Header, c *ClaimSet, sg Signer) (string, error) {
  	head, err := header.encode()
  	if err != nil {
  		return "", err
  	}
  	cs, err := c.encode()
  	if err != nil {
  		return "", err
  	}
  	ss := fmt.Sprintf("%s.%s", head, cs)
  	sig, err := sg([]byte(ss))
  	if err != nil {
  		return "", err
  	}
  	return fmt.Sprintf("%s.%s", ss, base64.RawURLEncoding.EncodeToString(sig)), nil
  }
docs: // EncodeWithSigner encodes a header and claim set with the provided signer.