code: def auth_recv(self):
          
          id_r = auth_data = None
          for p in self.packets[-1].payloads:
              if p._type == payloads.Type.IDr:
                  id_r = p
                  logger.debug('Got responder ID: {}'.format(dump(bytes(p))))
              if p._type == payloads.Type.AUTH:
                  auth_data = p._data
              if p._type == payloads.Type.SA:
                  logger.debug('ESP_SPIin: {}'.format(p.spi))
                  self.esp_SPIin = p.spi
                  for proposal in p.proposals:
                      logger.debug("Proposal: {}".format(proposal.__dict__))
                      logger.debug(proposal.spi)
          if id_r is None or auth_data is None:
              raise IkeError('IDr missing from IKE_AUTH response')
          message2 = bytes(self.packets[1])
          authenticated = self.authenticate_peer(auth_data, id_r, message2)
          assert authenticated
          keymat = prfplus(self.SK_d, self.Ni + self.Nr, 4 * 32)
          (self.esp_ei,
            self.esp_ai,
            self.esp_er,
            self.esp_ar,
           ) = unpack("32s" * 4, keymat)
          # TODO: Figure out the names for the params, they _ARE_ in correct places, just the names migth mismatch.
          self.install_ipsec_sas()
docs: Handle peer's IKE_AUTH response.