Exemplo n.º 1
0
Arquivo: Auth.php Projeto: movim/moxl
 static function mechanismSCRAMSHA1()
 {
     $s = new SASL2();
     $fa = $s->factory('SCRAM-SHA1');
     $session = \Session::start();
     Utils::log("/// INITIAL MESSAGE");
     $response = base64_encode($fa->getResponse($session->get('username'), $session->get('password')));
     $session->set('saslfa', $fa);
     $dom = new \DOMDocument('1.0', 'UTF-8');
     $auth = $dom->createElementNS('urn:ietf:params:xml:ns:xmpp-sasl', 'auth', $response);
     $auth->setAttribute('mechanism', 'SCRAM-SHA-1');
     $dom->appendChild($auth);
     API::request($dom->saveXML($dom->documentElement));
 }
Exemplo n.º 2
0
Arquivo: Auth.php Projeto: Hywan/moxl
 static function mechanismSCRAMSHA1()
 {
     $s = new SASL2();
     $fa = $s->factory('SCRAM-SHA1');
     $session = \Sessionx::start();
     Utils::log("/// INITIAL MESSAGE");
     $response = base64_encode($fa->getResponse($session->user, $session->password));
     $sess = \Session::start();
     $sess->set('saslfa', $fa);
     $xml = '<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" mechanism="SCRAM-SHA-1">
                 ' . $response . '
             </auth>';
     API::request($xml);
 }
Exemplo n.º 3
0
 public function handle($stanza, $parent = false)
 {
     $sess = \Session::start();
     $session = \Sessionx::start();
     $s = new SASL2();
     switch ($sess->get('mecchoice')) {
         case 'SCRAMSHA1':
             $fa = $sess->get('saslfa');
             $sess->remove('saslfa');
             $challenge = base64_decode((string) $stanza);
             \Moxl\Utils::log("/// SECOND MESSAGE - PROOF");
             $response = base64_encode($fa->getResponse($session->user, $session->password, $challenge));
             $xml = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">' . $response . '</response>';
             \Moxl\API::request($xml);
             break;
         case 'DIGESTMD5':
             $decoded = base64_decode((string) $stanza);
             $s = new SASL2();
             $d = $s->factory('digest-md5');
             if (!$sess->get('saslfirst')) {
                 \Moxl\Utils::log("/// CHALLENGE");
                 $response = $d->getResponse($session->user, $session->password, $decoded, $session->host, 'xmpp');
                 $response = base64_encode($response);
                 $xml = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">' . $response . '</response>';
                 $sess->set('saslfirst', 1);
             } else {
                 $xml = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl"/>';
             }
             \Moxl\API::request($xml);
             break;
         case 'CRAMMD5':
             $decoded = base64_decode((string) $stanza);
             $s = new SASL2();
             $c = $s->factory('cram-md5');
             $session = \Sessionx::start();
             $response = $c->getResponse($session->user, $session->pass, $decoded);
             $response = base64_encode($response);
             \Moxl\Utils::log("/// CHALLENGE");
             $xml = '<response xmlns="urn:ietf:params:xml:ns:xmpp-sasl">' . $response . '</response>';
             \Moxl\API::request($xml);
             break;
     }
 }