/** * Challenge string received. * * @param XMLEvent $event XML event * @return void */ public function challenge(XMLEvent $event) { if ($event->isEndTag()) { list($element) = $event->getParameters(); $challenge = XML::base64Decode($element->nodeValue); $values = $this->parseCallenge($challenge); if (isset($values['nonce'])) { $send = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">' . $this->response($values) . '</response>'; } elseif (isset($values['rspauth'])) { $send = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>'; } else { throw new AuthenticationErrorException("Error when receiving challenge: \"{$challenge}\""); } $this->getConnection()->send($send); } }