docs: def auth_encrypt(self, P, A, seq_num):
          """
          Encrypt the data, and append the computed authentication code.
          TLS 1.3 does not use additional data, but we leave this option to the
          user nonetheless.
  
          Note that the cipher's authentication tag must be None when encrypting.
          """
          if False in six.itervalues(self.ready):
              raise CipherError(P, A)
  
          if hasattr(self, "pc_cls"):
              self._cipher.mode._tag = None
              self._cipher.mode._initialization_vector = self._get_nonce(seq_num)
              encryptor = self._cipher.encryptor()
              encryptor.authenticate_additional_data(A)
              res = encryptor.update(P) + encryptor.finalize()
              res += encryptor.tag
          else:
              if (conf.crypto_valid_advanced and
                      isinstance(self._cipher, AESCCM)):
                  res = self._cipher.encrypt(self._get_nonce(seq_num), P, A,
                                             tag_length=self.tag_len)
              else:
                  res = self._cipher.encrypt(self._get_nonce(seq_num), P, A)
          return res