code: def decrypt(self, k, a, iv, e, t):
          
          hkey = k[:_inbytes(self.keysize)]
          dkey = k[_inbytes(self.keysize):]
  
          # verify mac
          if not constant_time.bytes_eq(t, self._mac(hkey, a, iv, e)):
              raise InvalidSignature('Failed to verify MAC')
  
          # decrypt
          cipher = Cipher(algorithms.AES(dkey), modes.CBC(iv),
                          backend=self.backend)
          decryptor = cipher.decryptor()
          d = decryptor.update(e) + decryptor.finalize()
          unpadder = PKCS7(self.blocksize).unpadder()
          return unpadder.update(d) + unpadder.finalize()
docs: Decrypt according to the selected encryption and hashing
          functions.
          :param k: Encryption key (optional)
          :param a: Additional Authenticated Data
          :param iv: Initialization Vector
          :param e: Ciphertext
          :param t: Authentication Tag
  
          Returns plaintext or raises an error