示例#1
0
 /**
  * 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);
     }
 }