Decrypts an encrypted (SK, 46) IKE payload using self.SK_er

        :param data: Encrypted IKE payload including headers (payloads.SK())
        :return: next_payload, data_containing_payloads
        :raise IkeError: If packet is corrupted.

def decrypt(self, data):
        """
        Decrypts an encrypted (SK, 46) IKE payload using self.SK_er

        :param data: Encrypted IKE payload including headers (payloads.SK())
        :return: next_payload, data_containing_payloads
        :raise IkeError: If packet is corrupted.
        """
        next_payload, is_critical, payload_len = const.PAYLOAD_HEADER.unpack(data[:const.PAYLOAD_HEADER.size])
        next_payload = payloads.Type(next_payload)
        logger.debug("next payload: {!r}".format(next_payload))
        try:
            iv_len = 16
            iv = bytes(data[const.PAYLOAD_HEADER.size:const.PAYLOAD_HEADER.size + iv_len])
            ciphertext = bytes(data[const.PAYLOAD_HEADER.size + iv_len:payload_len])  # HMAC size
        except IndexError:
            raise IkeError('Unable to decrypt: Malformed packet')
        logger.debug('IV: {}'.format(dump(iv)))
        logger.debug('CIPHERTEXT: {}'.format(dump(ciphertext)))
        # Decrypt
        cipher = Camellia(self.SK_er, iv=iv)
        decrypted = cipher.decrypt(ciphertext)
        logger.debug("Decrypted packet from responder: {}".format(dump(decrypted)))
        return next_payload, decrypted