code: def decrypt(self, passphrase):
          
          if not self.is_encrypted:
              raise PGPError("This message is not encrypted!")
  
          for skesk in iter(sk for sk in self._sessionkeys if isinstance(sk, SKESessionKey)):
              try:
                  symalg, key = skesk.decrypt_sk(passphrase)
                  decmsg = PGPMessage()
                  decmsg.parse(self.message.decrypt(key, symalg))
  
              except (TypeError, ValueError, NotImplementedError, PGPDecryptionError):
                  continue
  
              else:
                  del passphrase
                  break
  
          else:
              raise PGPDecryptionError("Decryption failed")
  
          return decmsg
docs: Attempt to decrypt this message using a passphrase.
  
          :param passphrase: The passphrase to use to attempt to decrypt this message.
          :type passphrase: ``str``, ``unicode``, ``bytes``
          :raises: :py:exc:`~errors.PGPDecryptionError` if decryption failed for any reason.
          :returns: A new :py:obj:`PGPMessage` containing the decrypted contents of this message