docs: def auth_decrypt(self, A, C, seq_num=None, add_length=True):
          """
          Decrypt the data and authenticate the associated data (i.e. A).
          If the verification fails, an AEADTagError is raised. It is the user's
          responsibility to catch it if deemed useful. If we lack the key, we
          raise a CipherError which contains the encrypted input.
  
          Note that we add the TLSCiphertext length to A although we're supposed
          to add the TLSCompressed length. Fortunately, they are the same,
          but the specifications actually messed up here. :'(
  
          The 'add_length' switch should always be True for TLS, but we provide
          it anyway (mostly for test cases, hum).
  
          The 'seq_num' should never be used here, it is only a safeguard needed
          because one cipher (ChaCha20Poly1305) using TLS 1.2 logic in record.py
          actually is a _AEADCipher_TLS13 (even though others are not).
          """
          nonce_explicit_str, C, mac = (C[:self.nonce_explicit_len],
                                        C[self.nonce_explicit_len:-self.tag_len],
                                        C[-self.tag_len:])
  
          if False in six.itervalues(self.ready):
              raise CipherError(nonce_explicit_str, C, mac)
  
          self.nonce_explicit = pkcs_os2ip(nonce_explicit_str)
          if add_length:
              A += struct.pack("!H", len(C))
  
          if hasattr(self, "pc_cls"):
              self._cipher.mode._initialization_vector = self._get_nonce()
              self._cipher.mode._tag = mac
              decryptor = self._cipher.decryptor()
              decryptor.authenticate_additional_data(A)
              P = decryptor.update(C)
              try:
                  decryptor.finalize()
              except InvalidTag:
                  raise AEADTagError(nonce_explicit_str, P, mac)
          else:
              try:
                  P = self._cipher.decrypt(self._get_nonce(), C + mac, A)
              except InvalidTag:
                  raise AEADTagError(nonce_explicit_str,
                                     "<unauthenticated data>",
                                     mac)
          return nonce_explicit_str, P, mac