code: func EncryptAndSign(msg []byte, k *Key) (tok []byte, err error) {
  	iv := make([]byte, aes.BlockSize)
  	if _, err := io.ReadFull(rand.Reader, iv); err != nil {
  		return nil, err
  	}
  	b := make([]byte, encodedLen(len(msg)))
  	n := gen(b, msg, iv, time.Now(), k)
  	tok = make([]byte, encoding.EncodedLen(n))
  	encoding.Encode(tok, b[:n])
  	return tok, nil
  }
docs: // EncryptAndSign encrypts and signs msg with key k and returns the resulting
  // fernet token. If msg contains text, the text should be encoded
  // with UTF-8 to follow fernet convention.