code: def decrypt(self, data):
          
          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
docs: 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.