mirror of
https://github.com/Lastorder-DC/rhymix.git
synced 2026-01-24 13:49:56 +09:00
remove unnecesaary files
git-svn-id: http://xe-core.googlecode.com/svn/sandbox@5141 201d5d3c-b55e-5fd7-737f-ddc643e51545
This commit is contained in:
parent
bcd0ec91fb
commit
a98df81417
179 changed files with 0 additions and 30590 deletions
|
|
@ -1,38 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the Association implementation.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID/Association.php';
|
||||
|
||||
class Tests_Auth_OpenID_Association extends PHPUnit_TestCase {
|
||||
function test_me()
|
||||
{
|
||||
$issued = time();
|
||||
$lifetime = 600;
|
||||
$assoc = new Auth_OpenID_Association('handle', 'secret', $issued,
|
||||
$lifetime, 'HMAC-SHA1');
|
||||
$s = $assoc->serialize();
|
||||
$assoc2 = Auth_OpenID_Association::deserialize(
|
||||
'Auth_OpenID_Association', $s);
|
||||
|
||||
if ($assoc2 === null) {
|
||||
$this->fail('deserialize returned null');
|
||||
} else {
|
||||
$this->assertTrue($assoc2->equal($assoc));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,235 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the BigMath functions.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID/BigMath.php';
|
||||
require_once 'Tests/Auth/OpenID/TestUtil.php';
|
||||
|
||||
class Tests_Auth_OpenID_BinLongConvertRnd extends PHPUnit_TestCase {
|
||||
var $lib;
|
||||
var $max;
|
||||
|
||||
function Tests_Auth_OpenID_BinLongConvertRnd(&$lib, $max)
|
||||
{
|
||||
$this->lib =& $lib;
|
||||
$this->max = $max;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$n = $this->lib->init(0);
|
||||
foreach (range(0, 9) as $i) {
|
||||
$rnd = $this->lib->rand($this->max);
|
||||
$n = $this->lib->add($n, $rnd);
|
||||
}
|
||||
$s = $this->lib->longToBinary($n);
|
||||
$this->assertTrue(is_string($s));
|
||||
$n_prime = $this->lib->binaryToLong($s);
|
||||
$this->assertEquals($this->lib->cmp($n, $n_prime), 0);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_BinLongConvert extends PHPUnit_TestCase {
|
||||
var $lib;
|
||||
var $bin;
|
||||
var $lng;
|
||||
|
||||
function Tests_Auth_OpenID_BinLongConvert(&$lib, $bin, $lng)
|
||||
{
|
||||
$this->lib =& $lib;
|
||||
$this->bin = $bin;
|
||||
$this->lng = $lng;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$n_prime = $this->lib->binaryToLong($this->bin);
|
||||
$s_prime = $this->lib->longToBinary($this->lng);
|
||||
$this->assertEquals($this->lib->cmp($this->lng, $n_prime), 0);
|
||||
$this->assertTrue($this->bin == $s_prime);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_Base64ToLong extends PHPUnit_TestCase {
|
||||
var $num;
|
||||
var $b64;
|
||||
var $lib;
|
||||
|
||||
function Tests_Auth_OpenID_Base64ToLong(&$lib, $b64, $num)
|
||||
{
|
||||
$this->lib = $lib;
|
||||
$this->b64 = $b64;
|
||||
$this->num = $num;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$actual = $this->lib->base64ToLong($this->b64);
|
||||
$this->assertTrue($this->lib->cmp($this->num, $actual) == 0);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_LongToBase64 extends Tests_Auth_OpenID_Base64ToLong {
|
||||
function Tests_Auth_OpenID_LongToBase64(&$lib, $b64, $num)
|
||||
{
|
||||
$this->lib = $lib;
|
||||
$this->b64 = $b64;
|
||||
$this->num = $num;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$actual = $this->lib->longToBase64($this->num);
|
||||
$this->assertEquals($this->b64, $actual);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_Rand extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_Rand(&$lib)
|
||||
{
|
||||
$this->lib =& $lib;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$stop = $this->lib->pow(2, 128);
|
||||
$a = $this->lib->rand($stop);
|
||||
$b = $this->lib->rand($stop);
|
||||
|
||||
$this->assertFalse($this->lib->cmp($b, $a) == 0, "Same: $a $b");
|
||||
|
||||
$n = $this->lib->init(Tests_Auth_OpenID_maxint());
|
||||
$n = $this->lib->add($n, 1);
|
||||
|
||||
// Make sure that we can generate random numbers that are
|
||||
// larger than platform int size
|
||||
$result = $this->lib->rand($n);
|
||||
|
||||
// What can we say about the result?
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Computes the maximum integer value for this PHP installation.
|
||||
*
|
||||
* @return int $max_int_value The maximum integer value for this
|
||||
* PHP installation
|
||||
*/
|
||||
function Tests_Auth_OpenID_maxint()
|
||||
{
|
||||
/* assumes largest integer is of form 2^n - 1 */
|
||||
$to_test = pow(2, 16);
|
||||
while (1) {
|
||||
$last = $to_test;
|
||||
$to_test = 2 * $to_test;
|
||||
if (($to_test < $last) || (!is_int($to_test))) {
|
||||
return($last + ($last - 1));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
class Tests_Auth_OpenID_BigMath extends PHPUnit_TestSuite {
|
||||
function _parseBase64Data()
|
||||
{
|
||||
$lines = Tests_Auth_OpenID_readlines('n2b64');
|
||||
|
||||
$data = array();
|
||||
foreach ($lines as $line) {
|
||||
$line = trim($line);
|
||||
if (!$line) {
|
||||
continue;
|
||||
}
|
||||
list($b64, $ascii) = explode(' ', $line);
|
||||
$data[$b64] = $ascii;
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
function _addB64Tests()
|
||||
{
|
||||
$lib =& Auth_OpenID_getMathLib();
|
||||
$count = defined('Tests_Auth_OpenID_thorough') ? -1 : 2;
|
||||
$data = $this->_parseBase64Data();
|
||||
foreach ($data as $b64 => $num_s) {
|
||||
// Only test the first few unless thorough is defined
|
||||
if (strlen($num_s) > 5) {
|
||||
if ($count == 0) {
|
||||
break;
|
||||
} else {
|
||||
$count -= 1;
|
||||
}
|
||||
}
|
||||
$num = $lib->init($num_s);
|
||||
$test = new Tests_Auth_OpenID_Base64ToLong($lib, $b64, $num);
|
||||
$test->setName("B64->Long $num_s");
|
||||
$this->addTest($test);
|
||||
|
||||
$test = new Tests_Auth_OpenID_LongToBase64($lib, $b64, $num);
|
||||
$test->setName("Long->B64 $num_s");
|
||||
$this->addTest($test);
|
||||
}
|
||||
}
|
||||
|
||||
function _addBinLongTests()
|
||||
{
|
||||
$lib =& Auth_OpenID_getMathLib();
|
||||
$max = Tests_Auth_OpenID_maxint();
|
||||
$upper = defined('Tests_Auth_OpenID_thorough') ? 499 : 3;
|
||||
|
||||
foreach (range(0, $upper) as $iteration) {
|
||||
$test = new Tests_Auth_OpenID_BinLongConvertRnd($lib, $max);
|
||||
$test->setName("BinLongConvertRnd " . strval($iteration));
|
||||
$this->addTest($test);
|
||||
}
|
||||
|
||||
$cases = array(
|
||||
array("\x00", 0),
|
||||
array("\x01", 1),
|
||||
array("\x7F", 127),
|
||||
array("\x00\x80", 128),
|
||||
array("\x00\x81", 129),
|
||||
array("\x00\xFF", 255),
|
||||
array("\x00\x80\x00", 32768),
|
||||
array("OpenID is cool",
|
||||
"1611215304203901150134421257416556")
|
||||
);
|
||||
|
||||
foreach ($cases as $case) {
|
||||
list($bin, $lng_m) = $case;
|
||||
$lng = $lib->init($lng_m);
|
||||
$test = new Tests_Auth_OpenID_BinLongConvert($lib, $bin, $lng);
|
||||
$test->setName('BinLongConvert ' . bin2hex($bin));
|
||||
$this->addTest($test);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_BigMath($name)
|
||||
{
|
||||
$this->setName($name);
|
||||
|
||||
if (!defined('Auth_OpenID_NO_MATH_SUPPORT')) {
|
||||
$this->addTestSuite('Tests_Auth_OpenID_BigInt');
|
||||
$this->_addB64Tests();
|
||||
$this->_addBinLongTests();
|
||||
$test = new Tests_Auth_OpenID_Rand(Auth_OpenID_getMathLib());
|
||||
$test->setName('Big number rand');
|
||||
$this->addTest($test);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,55 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the CryptUtil functions.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID/CryptUtil.php';
|
||||
|
||||
class Tests_Auth_OpenID_CryptUtil extends PHPUnit_TestCase {
|
||||
function test_length()
|
||||
{
|
||||
$cases = array(1, 10, 255);
|
||||
foreach ($cases as $length) {
|
||||
$data = Auth_OpenID_CryptUtil::getBytes($length);
|
||||
$this->assertEquals(strlen($data), $length);
|
||||
}
|
||||
}
|
||||
|
||||
function test_different()
|
||||
{
|
||||
$num_iterations = 100;
|
||||
$data_length = 20;
|
||||
|
||||
$data = Auth_OpenID_CryptUtil::getBytes($num_iterations);
|
||||
for ($i = 0; $i < $num_iterations; $i++) {
|
||||
$last = $data;
|
||||
$data = Auth_OpenID_CryptUtil::getBytes($data_length);
|
||||
$this->assertFalse($data == $last);
|
||||
}
|
||||
}
|
||||
|
||||
function test_cryptrand()
|
||||
{
|
||||
// It's possible, but HIGHLY unlikely that a correct
|
||||
// implementation will fail by returning the same number twice
|
||||
|
||||
$s = Auth_OpenID_CryptUtil::getBytes(32);
|
||||
$t = Auth_OpenID_CryptUtil::getBytes(32);
|
||||
$this->assertEquals(strlen($s), 32);
|
||||
$this->assertEquals(strlen($t), 32);
|
||||
$this->assertFalse($s == $t);
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the Diffie-Hellman key exchange implementation in the
|
||||
* OpenID library.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID/DiffieHellman.php';
|
||||
require_once 'Tests/Auth/OpenID/TestUtil.php';
|
||||
|
||||
class Tests_Auth_OpenID_DiffieHellman_CheckCases extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_DiffieHellman_CheckCases($cases, $n)
|
||||
{
|
||||
$this->cases = $cases;
|
||||
$this->n = $n;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$this->assertEquals($this->n, count($this->cases));
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_DiffieHellman_Private extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_DiffieHellman_Private($name, $input, $expected)
|
||||
{
|
||||
$this->setName("$name");
|
||||
$this->input = $input;
|
||||
$this->expected = $expected;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$lib =& Auth_OpenID_getMathLib();
|
||||
$dh = new Auth_OpenID_DiffieHellman(null, null, $this->input);
|
||||
$this->assertEquals($lib->cmp($this->expected, $dh->getPublicKey()), 0);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_DiffieHellman_Exch extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_DiffieHellman_Exch($name, $p1, $p2, $shared)
|
||||
{
|
||||
$this->setName("$name");
|
||||
$this->p1 = $p1;
|
||||
$this->p2 = $p2;
|
||||
$this->shared = $shared;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$lib =& Auth_OpenID_getMathLib();
|
||||
$shared = $lib->init($this->shared);
|
||||
$dh1 = new Auth_OpenID_DiffieHellman(null, null, $this->p1);
|
||||
$dh2 = new Auth_OpenID_DiffieHellman(null, null, $this->p2);
|
||||
$sh1 = $dh1->getSharedSecret($dh2->getPublicKey());
|
||||
$sh2 = $dh2->getSharedSecret($dh1->getPublicKey());
|
||||
$this->assertEquals($lib->cmp($shared, $sh1), 0);
|
||||
$this->assertEquals($lib->cmp($shared, $sh2), 0);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_DiffieHellman extends PHPUnit_TestSuite {
|
||||
function _readPrivateTestCases()
|
||||
{
|
||||
$lines = Tests_Auth_OpenID_readlines('dhpriv');
|
||||
$cases = array();
|
||||
foreach ($lines as $line) {
|
||||
$case = array();
|
||||
if (!preg_match('/^(\d+) (\d+)\n$/', $line, $case)) {
|
||||
trigger_error("Bad test input: $line", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$c = count($case);
|
||||
if ($c != 3) {
|
||||
trigger_error("Wrong number of elements in parsed case: $c",
|
||||
E_USER_ERROR);
|
||||
}
|
||||
|
||||
array_shift($case);
|
||||
$cases[] = $case;
|
||||
}
|
||||
|
||||
return $cases;
|
||||
}
|
||||
|
||||
function _readExchTestCases()
|
||||
{
|
||||
$lines = Tests_Auth_OpenID_readlines('dhexch');
|
||||
$cases = array();
|
||||
foreach ($lines as $line) {
|
||||
$case = array();
|
||||
if (!preg_match('/^(\d+) (\d+) (\d+)\n$/', $line, $case)) {
|
||||
trigger_error("Bad test input: $line", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$c = count($case);
|
||||
if ($c != 4) {
|
||||
trigger_error("Wrong number of elements in parsed case: $c",
|
||||
E_USER_ERROR);
|
||||
}
|
||||
|
||||
array_shift($case);
|
||||
$cases[] = $case;
|
||||
}
|
||||
return $cases;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_DiffieHellman($name)
|
||||
{
|
||||
$this->setName($name);
|
||||
|
||||
$priv_cases = Tests_Auth_OpenID_DiffieHellman::_readPrivateTestCases();
|
||||
$sanity = new Tests_Auth_OpenID_DiffieHellman_CheckCases(
|
||||
$priv_cases, 29);
|
||||
$sanity->setName('Check parsing of priv test data');
|
||||
$this->addTest($sanity);
|
||||
|
||||
$exch_cases = Tests_Auth_OpenID_DiffieHellman::_readExchTestCases();
|
||||
$sanity = new Tests_Auth_OpenID_DiffieHellman_CheckCases(
|
||||
$exch_cases, 25);
|
||||
$sanity->setName('Check parsing of exch test data');
|
||||
$this->addTest($sanity);
|
||||
|
||||
if (!defined('Auth_OpenID_NO_MATH_SUPPORT')) {
|
||||
if (defined('Tests_Auth_OpenID_thorough')) {
|
||||
$npriv = count($priv_cases);
|
||||
$nexch = count($exch_cases);
|
||||
} else {
|
||||
$npriv = 1;
|
||||
$nexch = 3;
|
||||
}
|
||||
|
||||
for ($i = 0; $i < $npriv; $i++) {
|
||||
list($input, $expected) = $priv_cases[$i];
|
||||
$one = new Tests_Auth_OpenID_DiffieHellman_Private(
|
||||
"DHPriv $i", $input, $expected);
|
||||
$this->addTest($one);
|
||||
}
|
||||
|
||||
for ($i = 0; $i < $nexch; $i++) {
|
||||
$case = $exch_cases[$i];
|
||||
$one = new Tests_Auth_OpenID_DiffieHellman_Exch(
|
||||
$i, $case[0], $case[1], $case[2]);
|
||||
$this->addTest($one);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,670 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
|
||||
require_once 'Auth/OpenID.php';
|
||||
require_once 'Auth/OpenID/Discover.php';
|
||||
require_once 'Services/Yadis/Manager.php';
|
||||
require_once 'Services/Yadis/Misc.php';
|
||||
require_once 'Services/Yadis/XRI.php';
|
||||
|
||||
/**
|
||||
* Tests for the core of the PHP Yadis library discovery logic.
|
||||
*/
|
||||
|
||||
class _SimpleMockFetcher {
|
||||
function _SimpleMockFetcher($responses)
|
||||
{
|
||||
$this->responses = $responses;
|
||||
}
|
||||
|
||||
function get($url)
|
||||
{
|
||||
$response = array_pop($this->responses);
|
||||
assert($response[1] == $url);
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_DiscoveryFailure extends PHPUnit_TestCase {
|
||||
|
||||
function Tests_Services_Yadis_DiscoveryFailure($responses)
|
||||
{
|
||||
// Response is ($code, $url, $body).
|
||||
$this->cases = array(
|
||||
array(null, 'http://network.error/', ''),
|
||||
array(404, 'http://not.found/', ''),
|
||||
array(400, 'http://bad.request/', ''),
|
||||
array(500, 'http://server.error/', ''),
|
||||
array(200, 'http://header.found/', 200,
|
||||
array('x-xrds-location' => 'http://xrds.missing/')),
|
||||
array(404, 'http://xrds.missing/', ''));
|
||||
|
||||
$this->url = $responses[0]->final_url;
|
||||
$this->responses = $responses;
|
||||
$this->fetcher = new _SimpleMockFetcher($this->responses);
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
foreach ($this->cases as $case) {
|
||||
list($status, $url, $body) = $case;
|
||||
$expected_status = $status;
|
||||
|
||||
$result = Auth_OpenID_discover($this->url, $this->fetcher);
|
||||
list($id_url, $svclist, $http_response) = $result;
|
||||
|
||||
$this->assertEquals($http_response->status, $expected_status);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
### Tests for raising/catching exceptions from the fetcher through the
|
||||
### discover function
|
||||
|
||||
class _ErrorRaisingFetcher {
|
||||
// Just raise an exception when fetch is called
|
||||
|
||||
function _ErrorRaisingFetcher($thing_to_raise)
|
||||
{
|
||||
$this->thing_to_raise = $thing_to_raise;
|
||||
}
|
||||
|
||||
function post($body = null)
|
||||
{
|
||||
__raiseError($this->thing_to_raise);
|
||||
}
|
||||
|
||||
function get($url)
|
||||
{
|
||||
__raiseError($this->thing_to_raise);
|
||||
}
|
||||
}
|
||||
|
||||
define('E_AUTH_OPENID_EXCEPTION', 'e_exception');
|
||||
define('E_AUTH_OPENID_DIDFETCH', 'e_didfetch');
|
||||
define('E_AUTH_OPENID_VALUE_ERROR', 'e_valueerror');
|
||||
define('E_AUTH_OPENID_RUNTIME_ERROR', 'e_runtimeerror');
|
||||
define('E_AUTH_OPENID_OI', 'e_oi');
|
||||
|
||||
class Tests_Auth_OpenID_Discover_FetchException extends PHPUnit_TestCase {
|
||||
// Make sure exceptions get passed through discover function from
|
||||
// fetcher.
|
||||
|
||||
function Tests_Auth_OpenID_Discover_FetchException($exc)
|
||||
{
|
||||
$this->cases = array(E_AUTH_OPENID_EXCEPTION,
|
||||
E_AUTH_OPENID_DIDFETCH,
|
||||
E_AUTH_OPENID_VALUE_ERROR,
|
||||
E_AUTH_OPENID_RUNTIME_ERROR,
|
||||
E_AUTH_OPENID_OI);
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
foreach ($this->cases as $thing_to_raise) {
|
||||
$fetcher = ErrorRaisingFetcher($thing_to_raise);
|
||||
Auth_OpenID_discover('http://doesnt.matter/', $fetcher);
|
||||
$exc = __getError();
|
||||
|
||||
if ($exc !== $thing_to_raise) {
|
||||
$this->fail('FetchException expected %s to be raised',
|
||||
$thing_to_raise);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Tests for openid.consumer.discover.discover
|
||||
|
||||
class _DiscoveryMockFetcher {
|
||||
function _DiscoveryMockFetcher(&$documents)
|
||||
{
|
||||
$this->redirect = null;
|
||||
$this->documents = &$documents;
|
||||
$this->fetchlog = array();
|
||||
}
|
||||
|
||||
function post($url, $body = null, $headers = null)
|
||||
{
|
||||
return $this->get($url, $headers, $body);
|
||||
}
|
||||
|
||||
function get($url, $headers = null, $body = null)
|
||||
{
|
||||
$this->fetchlog[] = array($url, $body, $headers);
|
||||
|
||||
if ($this->redirect) {
|
||||
$final_url = $this->redirect;
|
||||
} else {
|
||||
$final_url = $url;
|
||||
}
|
||||
|
||||
if (array_key_exists($url, $this->documents)) {
|
||||
list($ctype, $body) = $this->documents[$url];
|
||||
$status = 200;
|
||||
} else {
|
||||
$status = 404;
|
||||
$ctype = 'text/plain';
|
||||
$body = '';
|
||||
}
|
||||
|
||||
return new Services_Yadis_HTTPResponse($final_url, $status,
|
||||
array('content-type' => $ctype), $body);
|
||||
}
|
||||
}
|
||||
|
||||
define('DISCOVERYBASE_ID_URL', "http://someuser.unittest/");
|
||||
|
||||
class _DiscoveryBase extends PHPUnit_TestCase {
|
||||
var $id_url = DISCOVERYBASE_ID_URL;
|
||||
var $documents = array();
|
||||
|
||||
function setUp()
|
||||
{
|
||||
$this->fetcher = new _DiscoveryMockFetcher($this->documents);
|
||||
}
|
||||
}
|
||||
|
||||
$__yadis_2entries = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS xmlns:xrds="xri://$xrds"
|
||||
xmlns="xri://$xrd*($v*2.0)"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
>
|
||||
<XRD>
|
||||
<CanonicalID>=!1000</CanonicalID>
|
||||
|
||||
<Service priority="10">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<openid:Delegate>http://smoker.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
<Service priority="20">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.livejournal.com/openid/server.bml</URI>
|
||||
<openid:Delegate>http://frank.livejournal.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
';
|
||||
|
||||
$__yadis_2entries_flipped_priority = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS xmlns:xrds="xri://$xrds"
|
||||
xmlns="xri://$xrd*($v*2.0)"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
>
|
||||
<XRD>
|
||||
|
||||
<Service priority="20">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<openid:Delegate>http://smoker.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
<Service priority="10">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.livejournal.com/openid/server.bml</URI>
|
||||
<openid:Delegate>http://frank.livejournal.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
';
|
||||
|
||||
$__yadis_another = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS xmlns:xrds="xri://$xrds"
|
||||
xmlns="xri://$xrd*($v*2.0)"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
>
|
||||
<XRD>
|
||||
|
||||
<Service priority="10">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://vroom.unittest/server</URI>
|
||||
<openid:Delegate>http://smoker.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
';
|
||||
|
||||
$__yadis_0entries = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS xmlns:xrds="xri://$xrds"
|
||||
xmlns="xri://$xrd*($v*2.0)"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
>
|
||||
<XRD>
|
||||
<Service >
|
||||
<Type>http://is-not-openid.unittest/</Type>
|
||||
<URI>http://noffing.unittest./</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
';
|
||||
|
||||
$__yadis_no_delegate = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS xmlns:xrds="xri://$xrds"
|
||||
xmlns="xri://$xrd*($v*2.0)"
|
||||
>
|
||||
<XRD>
|
||||
<Service priority="10">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
';
|
||||
|
||||
$__openid_html = '
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Identity Page for Smoker</title>
|
||||
<link rel="openid.server" href="http://www.myopenid.com/server" />
|
||||
<link rel="openid.delegate" href="http://smoker.myopenid.com/" />
|
||||
</head><body><p>foo</p></body></html>
|
||||
';
|
||||
|
||||
$__openid_html_no_delegate = '
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Identity Page for Smoker</title>
|
||||
<link rel="openid.server" href="http://www.myopenid.com/server" />
|
||||
</head><body><p>foo</p></body></html>
|
||||
';
|
||||
|
||||
$__openid_and_yadis_html = '
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Identity Page for Smoker</title>
|
||||
<meta http-equiv="X-XRDS-Location" content="http://someuser.unittest/xrds" />
|
||||
<link rel="openid.server" href="http://www.myopenid.com/server" />
|
||||
<link rel="openid.delegate" href="http://smoker.myopenid.com/" />
|
||||
</head><body><p>foo</p></body></html>
|
||||
';
|
||||
|
||||
class _MockFetcherForXRIProxy {
|
||||
|
||||
function _MockFetcherForXRIProxy($documents)
|
||||
{
|
||||
$this->documents = $documents;
|
||||
$this->fetchlog = array();
|
||||
}
|
||||
|
||||
function get($url, $headers=null)
|
||||
{
|
||||
return $this->fetch($url, $headers);
|
||||
}
|
||||
|
||||
function post($url, $body)
|
||||
{
|
||||
return $this->fetch($url, $body);
|
||||
}
|
||||
|
||||
function fetch($url, $body=null, $headers=null)
|
||||
{
|
||||
$this->fetchlog[] = array($url, $body, $headers);
|
||||
|
||||
$u = parse_url($url);
|
||||
$proxy_host = $u['host'];
|
||||
$xri = $u['path'];
|
||||
$query = $u['query'];
|
||||
|
||||
if ((!$headers) && (!$query)) {
|
||||
trigger_error('Error in mock XRI fetcher: no headers or query');
|
||||
}
|
||||
|
||||
if (Services_Yadis_startswith($xri, '/')) {
|
||||
$xri = substr($xri, 1);
|
||||
}
|
||||
|
||||
if (array_key_exists($xri, $this->documents)) {
|
||||
list($ctype, $body) = $this->documents[$xri];
|
||||
$status = 200;
|
||||
} else {
|
||||
$status = 404;
|
||||
$ctype = 'text/plain';
|
||||
$body = '';
|
||||
}
|
||||
|
||||
return new Services_Yadis_HTTPResponse($url, $status,
|
||||
array('content-type' => $ctype),
|
||||
$body);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_DiscoverSession {
|
||||
function Tests_Auth_OpenID_DiscoverSession()
|
||||
{
|
||||
$this->data = array();
|
||||
}
|
||||
|
||||
function set($name, $value)
|
||||
{
|
||||
$this->data[$name] = $value;
|
||||
}
|
||||
|
||||
function get($name, $default=null)
|
||||
{
|
||||
if (array_key_exists($name, $this->data)) {
|
||||
return $this->data[$name];
|
||||
} else {
|
||||
return $default;
|
||||
}
|
||||
}
|
||||
|
||||
function del($name)
|
||||
{
|
||||
unset($this->data[$name]);
|
||||
}
|
||||
}
|
||||
|
||||
$__Tests_BOGUS_SERVICE = new Auth_OpenID_ServiceEndpoint();
|
||||
$__Tests_BOGUS_SERVICE->identity_url = "=really.bogus.endpoint";
|
||||
|
||||
function __serviceCheck_discover_cb($url, $fetcher)
|
||||
{
|
||||
global $__Tests_BOGUS_SERVICE;
|
||||
return array($__Tests_BOGUS_SERVICE);
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_Discover extends _DiscoveryBase {
|
||||
function _usedYadis($service)
|
||||
{
|
||||
$this->assertTrue($service->used_yadis,
|
||||
"Expected to use Yadis");
|
||||
}
|
||||
|
||||
function _notUsedYadis($service)
|
||||
{
|
||||
$this->assertFalse($service->used_yadis,
|
||||
"Expected to use old-style discovery");
|
||||
}
|
||||
|
||||
function test_404()
|
||||
{
|
||||
$result = Auth_OpenID_discover($this->id_url . '/404',
|
||||
$this->fetcher);
|
||||
|
||||
list($id_url, $svclist, $http_response) = $result;
|
||||
|
||||
$this->assertTrue($http_response->status == 404,
|
||||
"Expected 404 status from /404 discovery");
|
||||
}
|
||||
|
||||
function test_noYadis()
|
||||
{
|
||||
global $__openid_html;
|
||||
|
||||
$this->documents[$this->id_url] = array('text/html', $__openid_html);
|
||||
|
||||
list($id_url, $services, $http_response) =
|
||||
Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($this->id_url, $id_url);
|
||||
|
||||
$this->assertEquals(count($services), 1,
|
||||
"More than one service");
|
||||
|
||||
$this->assertEquals($services[0]->server_url,
|
||||
"http://www.myopenid.com/server");
|
||||
|
||||
$this->assertEquals($services[0]->delegate,
|
||||
"http://smoker.myopenid.com/");
|
||||
|
||||
$this->assertEquals($services[0]->identity_url, $this->id_url);
|
||||
$this->_notUsedYadis($services[0]);
|
||||
}
|
||||
|
||||
function test_managerServices()
|
||||
{
|
||||
global $__yadis_2entries_flipped_priority;
|
||||
|
||||
$url = "http://bogus.xxx/";
|
||||
$sess = new Tests_Auth_OpenID_DiscoverSession();
|
||||
$m = new Services_Yadis_Discovery($sess, $url);
|
||||
|
||||
$documents = array(
|
||||
$url => array("application/xrds+xml",
|
||||
$__yadis_2entries_flipped_priority)
|
||||
);
|
||||
|
||||
$fetcher = new _DiscoveryMockFetcher($documents);
|
||||
|
||||
$expected = array("http://frank.livejournal.com/",
|
||||
"http://smoker.myopenid.com/");
|
||||
|
||||
foreach ($expected as $openid) {
|
||||
$s = $m->getNextService('_Auth_OpenID_discoverServiceList',
|
||||
$fetcher);
|
||||
$this->assertEquals($s->delegate, $openid);
|
||||
}
|
||||
}
|
||||
|
||||
function test_serviceCheck()
|
||||
{
|
||||
global $__Tests_BOGUS_SERVICE;
|
||||
|
||||
$url = "http://bogus.xxx/";
|
||||
$sess =& new Tests_Auth_OpenID_DiscoverSession();
|
||||
$disco =& new Services_Yadis_Discovery($sess, $url);
|
||||
|
||||
# Set an empty manager to be sure it gets blown away
|
||||
$manager =& new Services_Yadis_Manager($url, null, array(),
|
||||
$disco->getSessionKey());
|
||||
|
||||
$loader =& new Services_Yadis_ManagerLoader();
|
||||
$disco->session->set($disco->session_key,
|
||||
serialize($loader->toSession($manager)));
|
||||
|
||||
$docs = array();
|
||||
$fetcher =& new _DiscoveryMockFetcher($docs);
|
||||
|
||||
$result = $disco->getNextService('__serviceCheck_discover_cb', $fetcher);
|
||||
|
||||
$newMan = $disco->getManager();
|
||||
|
||||
$currentService = $newMan->_current;
|
||||
$this->assertEquals($currentService->identity_url,
|
||||
$__Tests_BOGUS_SERVICE->identity_url);
|
||||
}
|
||||
|
||||
function test_noOpenID()
|
||||
{
|
||||
$this->fetcher->documents = array(
|
||||
$this->id_url => array('text/plain', "junk"));
|
||||
|
||||
list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($this->id_url, $id_url);
|
||||
|
||||
$this->assertFalse(count($services) > 0);
|
||||
}
|
||||
|
||||
function test_yadis()
|
||||
{
|
||||
global $__yadis_2entries;
|
||||
|
||||
$this->fetcher->documents = array(
|
||||
DISCOVERYBASE_ID_URL => array('application/xrds+xml',
|
||||
$__yadis_2entries));
|
||||
|
||||
list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($this->id_url, $id_url);
|
||||
|
||||
$this->assertEquals(count($services), 2,
|
||||
"Not 2 services");
|
||||
|
||||
$this->assertEquals($services[0]->server_url,
|
||||
"http://www.myopenid.com/server");
|
||||
|
||||
$this->_usedYadis($services[0]);
|
||||
|
||||
$this->assertEquals($services[1]->server_url,
|
||||
"http://www.livejournal.com/openid/server.bml");
|
||||
|
||||
$this->_usedYadis($services[1]);
|
||||
}
|
||||
|
||||
function test_redirect()
|
||||
{
|
||||
global $__openid_html;
|
||||
|
||||
$expected_final_url = "http://elsewhere.unittest/";
|
||||
|
||||
$this->fetcher->redirect = $expected_final_url;
|
||||
$this->fetcher->documents = array(
|
||||
$this->id_url => array('text/html', $__openid_html));
|
||||
|
||||
list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($expected_final_url, $id_url);
|
||||
|
||||
$this->assertEquals(count($services), 1,
|
||||
"More than one service");
|
||||
|
||||
$this->assertEquals($services[0]->server_url,
|
||||
"http://www.myopenid.com/server");
|
||||
|
||||
$this->assertEquals($services[0]->delegate,
|
||||
"http://smoker.myopenid.com/");
|
||||
|
||||
$this->assertEquals($services[0]->identity_url,
|
||||
$expected_final_url);
|
||||
|
||||
$this->_notUsedYadis($services[0]);
|
||||
}
|
||||
|
||||
function test_emptyList()
|
||||
{
|
||||
global $__yadis_0entries;
|
||||
|
||||
$this->fetcher->documents = array(
|
||||
$this->id_url =>
|
||||
array('application/xrds+xml', $__yadis_0entries));
|
||||
|
||||
list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($this->id_url, $id_url);
|
||||
|
||||
$this->assertTrue(count($services) == 0);
|
||||
}
|
||||
|
||||
function test_emptyListWithLegacy()
|
||||
{
|
||||
global $__openid_and_yadis_html,
|
||||
$__yadis_0entries;
|
||||
|
||||
$this->fetcher->documents = array(
|
||||
$this->id_url => array('text/html', $__openid_and_yadis_html),
|
||||
$this->id_url . 'xrds' => array('application/xrds+xml', $__yadis_0entries));
|
||||
|
||||
list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($this->id_url, $id_url);
|
||||
|
||||
$this->assertEquals(count($services), 1,
|
||||
"Not one service");
|
||||
|
||||
$this->assertEquals($services[0]->server_url,
|
||||
"http://www.myopenid.com/server");
|
||||
|
||||
$this->assertEquals($services[0]->identity_url, $this->id_url);
|
||||
|
||||
$this->_notUsedYadis($services[0]);
|
||||
}
|
||||
|
||||
function test_yadisNoDelegate()
|
||||
{
|
||||
global $__yadis_no_delegate;
|
||||
|
||||
$this->fetcher->documents = array(
|
||||
$this->id_url => array('application/xrds+xml', $__yadis_no_delegate));
|
||||
|
||||
list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($this->id_url, $id_url);
|
||||
|
||||
$this->assertEquals(count($services), 1,
|
||||
"Not 1 service");
|
||||
|
||||
$this->assertEquals($services[0]->server_url,
|
||||
"http://www.myopenid.com/server");
|
||||
|
||||
$this->assertEquals($services[0]->delegate, null,
|
||||
'Delegate should be null');
|
||||
|
||||
$this->_usedYadis($services[0]);
|
||||
}
|
||||
|
||||
function test_openidNoDelegate()
|
||||
{
|
||||
global $__openid_html_no_delegate;
|
||||
|
||||
$this->fetcher->documents = array(
|
||||
$this->id_url => array('text/html',
|
||||
$__openid_html_no_delegate));
|
||||
|
||||
list($id_url, $services, $http) = Auth_OpenID_discover($this->id_url,
|
||||
$this->fetcher);
|
||||
|
||||
$this->assertEquals($this->id_url, $id_url);
|
||||
|
||||
$this->assertEquals($services[0]->server_url,
|
||||
"http://www.myopenid.com/server");
|
||||
|
||||
$this->assertEquals($services[0]->identity_url, $this->id_url);
|
||||
|
||||
$this->assertEquals($services[0]->delegate, null,
|
||||
'Delegate should be null');
|
||||
|
||||
$this->_notUsedYadis($services[0]);
|
||||
}
|
||||
|
||||
function test_xriDiscovery()
|
||||
{
|
||||
global $__yadis_2entries;
|
||||
|
||||
$documents = array(
|
||||
'=smoker' => array('application/xrds+xml',
|
||||
$__yadis_2entries)
|
||||
);
|
||||
|
||||
$fetcher = new _MockFetcherForXRIProxy($documents);
|
||||
|
||||
list($user_xri, $services) = _Auth_OpenID_discoverXRI('=smoker',
|
||||
$fetcher);
|
||||
$this->assertTrue($services);
|
||||
|
||||
$this->assertEquals($services[0]->server_url,
|
||||
"http://www.myopenid.com/server");
|
||||
$this->assertEquals($services[1]->server_url,
|
||||
"http://www.livejournal.com/openid/server.bml");
|
||||
$this->assertEquals($services[0]->canonicalID, Services_Yadis_XRI("=!1000"));
|
||||
}
|
||||
|
||||
function test_useCanonicalID()
|
||||
{
|
||||
// When there is no delegate, the CanonicalID should be used
|
||||
// with XRI.
|
||||
|
||||
$endpoint = new Auth_OpenID_ServiceEndpoint();
|
||||
$endpoint->identity_url = "=example";
|
||||
$endpoint->canonicalID = Services_Yadis_XRI("=!1000");
|
||||
$this->assertEquals($endpoint->getServerID(), Services_Yadis_XRI("=!1000"));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,148 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the HMAC-SHA1 utility functions used by the OpenID
|
||||
* library.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID/HMACSHA1.php';
|
||||
require_once 'Tests/Auth/OpenID/TestUtil.php';
|
||||
|
||||
class Tests_Auth_OpenID_HMACSHA1_TestCase extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_HMACSHA1_TestCase(
|
||||
$name, $key, $data, $expected)
|
||||
{
|
||||
|
||||
$this->setName($name);
|
||||
$this->key = $key;
|
||||
$this->data = $data;
|
||||
$this->expected = $expected;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$actual = Auth_OpenID_HMACSHA1($this->key, $this->data);
|
||||
$this->assertEquals($this->expected, $actual);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_HMACSHA1 extends PHPUnit_TestSuite {
|
||||
function _strConvert($s)
|
||||
{
|
||||
$repeat_pat = '/^0x([a-f0-9]{2}) repeated (\d+) times$/';
|
||||
if (preg_match($repeat_pat, $s, $match)) {
|
||||
$c = chr(hexdec($match[1]));
|
||||
$n = $match[2];
|
||||
$data = '';
|
||||
for ($i = 0; $i < $n; $i++) {
|
||||
$data .= $c;
|
||||
}
|
||||
} elseif (substr($s, 0, 2) == "0x") {
|
||||
$data = pack('H*', substr($s, 2, strlen($s) - 1));
|
||||
} elseif (preg_match('/^"(.*)"$/', $s, $match)) {
|
||||
$data = $match[1];
|
||||
} else {
|
||||
trigger_error("Bad data format: $s", E_USER_ERROR);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
function _readTestCases()
|
||||
{
|
||||
$lines = Tests_Auth_OpenID_readlines('hmac.txt');
|
||||
$cases = array();
|
||||
$case = array();
|
||||
foreach ($lines as $line) {
|
||||
if ($line{0} == "#") {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Blank line separates test cases
|
||||
if ($line == "\n") {
|
||||
$cases[] = $case;
|
||||
$case = array();
|
||||
} else {
|
||||
$match = array();
|
||||
$pat = '/^([a-z0-9_-]+) =\s+(.*?)\n$/';
|
||||
if (!preg_match($pat, $line, $match)) {
|
||||
trigger_error("Bad test input: $line", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$c = count($match);
|
||||
if ($c != 3) {
|
||||
trigger_error(
|
||||
"Wrong number of elements in parsed case: $c",
|
||||
E_USER_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
$key = $match[1];
|
||||
$value = $match[2];
|
||||
$case[$key] = $value;
|
||||
}
|
||||
}
|
||||
|
||||
if (count($case)) {
|
||||
$cases[] = $case;
|
||||
}
|
||||
|
||||
$final = array();
|
||||
|
||||
// Normalize strings and check data integrity
|
||||
foreach ($cases as $case) {
|
||||
$clean = array();
|
||||
$clean["key"] =
|
||||
Tests_Auth_OpenID_HMACSHA1::_strConvert($case["key"]);
|
||||
if (strlen($clean["key"]) != $case["key_len"]) {
|
||||
trigger_error("Bad key length", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$clean["data"] =
|
||||
Tests_Auth_OpenID_HMACSHA1::_strConvert($case["data"]);
|
||||
if (strlen($clean["data"]) != $case["data_len"]) {
|
||||
trigger_error("Bad data length", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$clean["digest"] =
|
||||
Tests_Auth_OpenID_HMACSHA1::_strConvert($case["digest"]);
|
||||
if (strlen($clean["digest"]) != 20) {
|
||||
$l = strlen($clean["digest"]);
|
||||
trigger_error("Bad digest length: $l", E_USER_ERROR);
|
||||
}
|
||||
|
||||
$clean['test_case'] = $case['test_case'];
|
||||
|
||||
$final[] = $clean;
|
||||
}
|
||||
return $final;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_HMACSHA1($name)
|
||||
{
|
||||
$this->setName($name);
|
||||
$cases = $this->_readTestCases();
|
||||
foreach ($cases as $case) {
|
||||
$test = new Tests_Auth_OpenID_HMACSHA1_TestCase(
|
||||
$case['test_case'],
|
||||
$case['key'],
|
||||
$case['data'],
|
||||
$case['digest']
|
||||
);
|
||||
|
||||
$digest = $case['digest'];
|
||||
$this->addTest($test);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,259 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the KVForm module.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID/KVForm.php';
|
||||
|
||||
$_Tests_Auth_OpenID_kverrors = null;
|
||||
/**
|
||||
* Keep a list of the logged errors
|
||||
*/
|
||||
function Tests_Auth_OpenID_kvHandleError($errno, $errmsg)
|
||||
{
|
||||
global $_Tests_Auth_OpenID_kverrors;
|
||||
$_Tests_Auth_OpenID_kverrors[] = $errmsg;
|
||||
}
|
||||
|
||||
|
||||
class Tests_Auth_OpenID_KVForm_TestCase extends PHPUnit_TestCase {
|
||||
var $errs;
|
||||
|
||||
function runTest()
|
||||
{
|
||||
// Re-set the number of logged errors
|
||||
global $_Tests_Auth_OpenID_kverrors;
|
||||
$_Tests_Auth_OpenID_kverrors = array();
|
||||
|
||||
set_error_handler("Tests_Auth_OpenID_kvHandleError");
|
||||
|
||||
$this->_runTest();
|
||||
|
||||
// Check to make sure we have the expected number of logged errors
|
||||
//$this->assertEquals($this->errs, count($_Tests_Auth_OpenID_kverrors));
|
||||
|
||||
restore_error_handler();
|
||||
}
|
||||
|
||||
function _runTest()
|
||||
{
|
||||
trigger_error('Must be overridden', E_USER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_KVForm_TestCase_Parse
|
||||
extends Tests_Auth_OpenID_KVForm_TestCase {
|
||||
function Tests_Auth_OpenID_KVForm_TestCase_Parse(
|
||||
$arr, $str, $lossy, $errs)
|
||||
{
|
||||
|
||||
$this->arr = $arr;
|
||||
$this->str = $str;
|
||||
$this->lossy = $lossy;
|
||||
$this->errs = $errs;
|
||||
}
|
||||
|
||||
function _runTest()
|
||||
{
|
||||
// Do one parse, after which arrayToKV and kvToArray should be
|
||||
// inverses.
|
||||
$parsed1 = Auth_OpenID_KVForm::toArray($this->str);
|
||||
$serial1 = Auth_OpenID_KVForm::fromArray($this->arr);
|
||||
|
||||
if ($this->lossy == "neither" || $this->lossy == "str") {
|
||||
$this->assertEquals($this->arr, $parsed1, "str was lossy");
|
||||
}
|
||||
|
||||
if ($this->lossy == "neither" || $this->lossy == "arr") {
|
||||
$this->assertEquals($this->str, $serial1, "array was lossy");
|
||||
}
|
||||
|
||||
$parsed2 = Auth_OpenID_KVForm::toArray($serial1);
|
||||
$serial2 = Auth_OpenID_KVForm::fromArray($parsed1);
|
||||
|
||||
// Round-trip both
|
||||
$parsed3 = Auth_OpenID_KVForm::toArray($serial2);
|
||||
$serial3 = Auth_OpenID_KVForm::fromArray($parsed2);
|
||||
|
||||
$this->assertEquals($serial2, $serial3, "serialized forms differ");
|
||||
|
||||
// Check to make sure that they're inverses.
|
||||
$this->assertEquals($parsed2, $parsed3, "parsed forms differ");
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_KVForm_TestCase_Null
|
||||
extends Tests_Auth_OpenID_KVForm_TestCase {
|
||||
function Tests_Auth_OpenID_KVForm_TestCase_Null($arr, $errs)
|
||||
{
|
||||
$this->arr = $arr;
|
||||
$this->errs = $errs;
|
||||
}
|
||||
|
||||
function _runTest()
|
||||
{
|
||||
$serialized = Auth_OpenID_KVForm::fromArray($this->arr);
|
||||
$this->assertTrue($serialized === null,
|
||||
'serialization unexpectedly succeeded');
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_KVForm extends PHPUnit_TestSuite {
|
||||
function Tests_Auth_OpenID_KVForm($name)
|
||||
{
|
||||
$this->setName($name);
|
||||
$testdata_list = array(
|
||||
array("name" => "simple",
|
||||
"str" => "college:harvey mudd\n",
|
||||
"arr" => array("college" => "harvey mudd"),
|
||||
),
|
||||
array("name" => "empty",
|
||||
"str" => "",
|
||||
"arr" => array(),
|
||||
),
|
||||
array("name" => "empty (just newline)",
|
||||
"str" => "\n",
|
||||
"arr" => array(),
|
||||
"lossy" => "str",
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "empty (double newline)",
|
||||
"str" => "\n\n",
|
||||
"arr" => array(),
|
||||
"lossy" => "str",
|
||||
"errors" => 2,
|
||||
),
|
||||
array("name" => "empty (no colon)",
|
||||
"str" => "East is least\n",
|
||||
"arr" => array(),
|
||||
"lossy" => "str",
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "two keys",
|
||||
"str" => "city:claremont\nstate:CA\n",
|
||||
"arr" => array('city' => 'claremont',
|
||||
'state' => 'CA'),
|
||||
),
|
||||
array("name" => "real life",
|
||||
"str" => "is_valid:true\ninvalidate_handle:" .
|
||||
"{HMAC-SHA1:2398410938412093}\n",
|
||||
"arr" => array('is_valid' => 'true',
|
||||
'invalidate_handle' =>
|
||||
'{HMAC-SHA1:2398410938412093}'),
|
||||
),
|
||||
array("name" => "empty key and value",
|
||||
"str" => ":\n",
|
||||
"arr" => array(''=>''),
|
||||
),
|
||||
array("name" => "empty key, not value",
|
||||
"str" => ":missing key\n",
|
||||
"arr" => array(''=>'missing key'),
|
||||
),
|
||||
array("name" => "whitespace at front of key",
|
||||
"str" => " street:foothill blvd\n",
|
||||
"arr" => array('street'=>'foothill blvd'),
|
||||
"lossy" => "str",
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "whitespace at front of value",
|
||||
"str" => "major: computer science\n",
|
||||
"arr" => array('major'=>'computer science'),
|
||||
"lossy" => "str",
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "whitespace around key and value",
|
||||
"str" => " dorm : east \n",
|
||||
"arr" => array('dorm'=>'east'),
|
||||
"lossy" => "str",
|
||||
"errors" => 2,
|
||||
),
|
||||
array("name" => "missing trailing newline",
|
||||
"str" => "e^(i*pi)+1:0",
|
||||
"arr" => array('e^(i*pi)+1'=>'0'),
|
||||
"lossy" => "str",
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "missing trailing newline (two key)",
|
||||
"str" => "east:west\nnorth:south",
|
||||
"arr" => array('east'=>'west',
|
||||
'north'=>'south'),
|
||||
"lossy" => "str",
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "colon in key",
|
||||
"arr" => array("k:k" => 'v'),
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "newline in key",
|
||||
"arr" => array("k\nk" => 'v'),
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "newline in value",
|
||||
"arr" => array('k' => "v\nv"),
|
||||
"errors" => 1,
|
||||
),
|
||||
array("name" => "array whitespace",
|
||||
"arr" => array(" k " => "v"),
|
||||
"lossy" => "both",
|
||||
"str" => " k :v\n",
|
||||
"errors" => 2,
|
||||
),
|
||||
array("name" => "array ordering 1",
|
||||
"arr" => array("a" => "x",
|
||||
"b" => "x",
|
||||
"c" => "x"),
|
||||
"str" => "a:x\nb:x\nc:x\n",
|
||||
),
|
||||
array("name" => "array ordering 2",
|
||||
"arr" => array("a" => "x",
|
||||
"c" => "x",
|
||||
"b" => "x"),
|
||||
"str" => "a:x\nc:x\nb:x\n",
|
||||
),
|
||||
);
|
||||
|
||||
foreach ($testdata_list as $testdata) {
|
||||
if (isset($testdata['str'])) {
|
||||
$str = $testdata['str'];
|
||||
} else {
|
||||
$str = null;
|
||||
}
|
||||
|
||||
$arr = $testdata["arr"];
|
||||
|
||||
if (isset($testdata['errors'])) {
|
||||
$errs = $testdata["errors"];
|
||||
} else {
|
||||
$errs = 0;
|
||||
}
|
||||
|
||||
if (is_null($str)) {
|
||||
$test = new Tests_Auth_OpenID_KVForm_TestCase_Null($arr, $errs);
|
||||
} else {
|
||||
if (isset($testdata['lossy'])) {
|
||||
$lossy = $testdata["lossy"];
|
||||
} else {
|
||||
$lossy = 'neither';
|
||||
}
|
||||
$test = new Tests_Auth_OpenID_KVForm_TestCase(
|
||||
$arr, $str, $lossy, $errs);
|
||||
}
|
||||
$test->setName($testdata["name"]);
|
||||
$this->addTest($test);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,110 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* In-memory OpenID store implementation for testing only
|
||||
*/
|
||||
require_once "Auth/OpenID/Interface.php";
|
||||
|
||||
class Tests_Auth_OpenID_MemStore extends Auth_OpenID_OpenIDStore {
|
||||
var $assocs = null;
|
||||
var $nonces = null;
|
||||
|
||||
function Tests_Auth_OpenID_MemStore($auth_key=null)
|
||||
{
|
||||
$this->assocs = array();
|
||||
$this->nonces = array();
|
||||
$this->auth_key = $auth_key;
|
||||
}
|
||||
|
||||
function getKey($server_url, $handle)
|
||||
{
|
||||
return serialize(array($server_url, $handle));
|
||||
}
|
||||
|
||||
function getAssocPairs()
|
||||
{
|
||||
$pairs = array();
|
||||
foreach ($this->assocs as $key => $assoc) {
|
||||
list($assoc_url, $_) = unserialize($key);
|
||||
$pairs[] = array($assoc_url, $assoc);
|
||||
}
|
||||
return $pairs;
|
||||
}
|
||||
|
||||
function getServerAssocs($server_url)
|
||||
{
|
||||
$matches = array();
|
||||
foreach ($this->getAssocPairs() as $pair) {
|
||||
list($assoc_url, $assoc) = $pair;
|
||||
if ($assoc_url == $server_url) {
|
||||
$matches[] = $assoc;
|
||||
}
|
||||
}
|
||||
return $matches;
|
||||
}
|
||||
|
||||
function getAssociation($server_url, $handle=null)
|
||||
{
|
||||
$assocs = $this->getServerAssocs($server_url);
|
||||
if ($handle === null) {
|
||||
$best = null;
|
||||
foreach ($assocs as $assoc) {
|
||||
if (!isset($best) ||
|
||||
$best->issued < $assoc->issued) {
|
||||
|
||||
$best = $assoc;
|
||||
}
|
||||
}
|
||||
return $best;
|
||||
} else {
|
||||
foreach ($assocs as $assoc) {
|
||||
if ($assoc->handle == $handle) {
|
||||
return $assoc;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function storeAssociation($server_url, &$association)
|
||||
{
|
||||
$key = $this->getKey($server_url, $association->handle);
|
||||
$this->assocs[$key] = $association;
|
||||
}
|
||||
|
||||
function removeAssociation($server_url, $handle)
|
||||
{
|
||||
$key = $this->getKey($server_url, $handle);
|
||||
$present = isset($this->assocs[$key]);
|
||||
unset($this->assocs[$key]);
|
||||
return $present;
|
||||
}
|
||||
|
||||
function storeNonce($nonce)
|
||||
{
|
||||
if (!in_array($nonce, $this->nonces)) {
|
||||
$this->nonces[] = $nonce;
|
||||
}
|
||||
}
|
||||
|
||||
function useNonce($nonce)
|
||||
{
|
||||
$index = array_search($nonce, $this->nonces);
|
||||
$present = $index !== false;
|
||||
if ($present) {
|
||||
unset($this->nonces[$index]);
|
||||
}
|
||||
return $present;
|
||||
}
|
||||
|
||||
function reset()
|
||||
{
|
||||
$this->assocs = array();
|
||||
$this->nonces = array();
|
||||
}
|
||||
|
||||
function getAuthKey()
|
||||
{
|
||||
return $this->auth_key;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,224 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the combination of Yadis discovery and the OpenID
|
||||
* protocol.
|
||||
*/
|
||||
|
||||
require_once "PHPUnit.php";
|
||||
require_once "Services/Yadis/XRDS.php";
|
||||
require_once "Auth/OpenID/Discover.php";
|
||||
|
||||
$__XRDS_BOILERPLATE = '<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS xmlns:xrds="xri://$xrds"
|
||||
xmlns="xri://$xrd*($v*2.0)"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0">
|
||||
<XRD>
|
||||
%s
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
';
|
||||
|
||||
// Different sets of server URLs for use in the URI tag
|
||||
$__server_url_options = array(
|
||||
array(), // This case should not generate an endpoint object
|
||||
array('http://server.url/'),
|
||||
array('https://server.url/'),
|
||||
array('https://server.url/', 'http://server.url/'),
|
||||
array('https://server.url/',
|
||||
'http://server.url/',
|
||||
'http://example.server.url/'),
|
||||
);
|
||||
|
||||
// A couple of example extension type URIs. These are not at all
|
||||
// official, but are just here for testing.
|
||||
$__ext_types = array(
|
||||
'http://janrain.com/extension/blah',
|
||||
'http://openid.net/sreg/1.0');
|
||||
|
||||
// All valid combinations of Type tags that should produce an OpenID
|
||||
// endpoint
|
||||
$__openid_types = array(
|
||||
_OPENID_1_0_TYPE,
|
||||
_OPENID_1_1_TYPE,
|
||||
_OPENID_1_2_TYPE);
|
||||
|
||||
$temp = array();
|
||||
foreach (__subsets($__ext_types) as $exts) {
|
||||
foreach (__subsets($__openid_types) as $ts) {
|
||||
if ($ts) {
|
||||
$temp[] = array_merge($exts, $ts);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$__type_uri_options = $temp;
|
||||
|
||||
// Range of valid Delegate tag values for generating test data
|
||||
$__delegate_options = array(
|
||||
null,
|
||||
'http://vanity.domain/',
|
||||
'https://somewhere/yadis/');
|
||||
|
||||
$temp = array();
|
||||
foreach ($__delegate_options as $delegate) {
|
||||
foreach ($__type_uri_options as $type_uris) {
|
||||
foreach ($__server_url_options as $uris) {
|
||||
$temp[] = array($uris, $type_uris, $delegate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// All combinations of valid URIs, Type URIs and Delegate tags
|
||||
$__data = $temp;
|
||||
|
||||
function _mkXRDS($services_str)
|
||||
{
|
||||
global $__XRDS_BOILERPLATE;
|
||||
return sprintf($__XRDS_BOILERPLATE, $services_str);
|
||||
}
|
||||
|
||||
function _mkService($uris = null, $type_uris = null,
|
||||
$delegate = null, $dent = ' ')
|
||||
{
|
||||
$chunks = array($dent, "<Service>\n");
|
||||
$dent2 = $dent . ' ';
|
||||
if ($type_uris) {
|
||||
foreach ($type_uris as $type_uri) {
|
||||
$chunks = array_merge($chunks,
|
||||
array($dent2 . '<Type>',
|
||||
$type_uri, "</Type>\n"));
|
||||
}
|
||||
}
|
||||
|
||||
if ($uris) {
|
||||
foreach ($uris as $uri) {
|
||||
if (is_array($uri)) {
|
||||
list($uri, $prio) = $uri;
|
||||
} else {
|
||||
$prio = null;
|
||||
}
|
||||
$chunks = array_merge($chunks, array($dent2, '<URI'));
|
||||
if ($prio !== null) {
|
||||
$chunks = array_merge($chunks, array(' priority="', strval($prio), '"'));
|
||||
}
|
||||
$chunks = array_merge($chunks, array('>', $uri, "</URI>\n"));
|
||||
}
|
||||
}
|
||||
|
||||
if ($delegate) {
|
||||
$chunks = array_merge($chunks,
|
||||
array($dent2, '<openid:Delegate>',
|
||||
$delegate, "</openid:Delegate>\n"));
|
||||
}
|
||||
|
||||
$chunks = array_merge($chunks, array($dent, "</Service>\n"));
|
||||
|
||||
return implode("", $chunks);
|
||||
}
|
||||
|
||||
// Used for generating test data
|
||||
function __subsets($list)
|
||||
{
|
||||
// Generate all non-empty sublists of a list
|
||||
$subsets_list = array(array());
|
||||
foreach ($list as $elem) {
|
||||
|
||||
$temp = array();
|
||||
foreach ($subsets_list as $t) {
|
||||
$temp[] = array_merge(array($elem), $t);
|
||||
}
|
||||
|
||||
$subsets_list = array_merge($subsets_list, $temp);
|
||||
}
|
||||
|
||||
return $subsets_list;
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_Tester extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_Tester($uris, $type_uris, $delegate)
|
||||
{
|
||||
$this->uris = $uris;
|
||||
$this->type_uris = $type_uris;
|
||||
$this->delegate = $delegate;
|
||||
parent::PHPUnit_TestCase();
|
||||
}
|
||||
|
||||
function setUp()
|
||||
{
|
||||
$this->yadis_url = 'http://unit.test/';
|
||||
|
||||
// Create an XRDS document to parse
|
||||
$services = _mkService($this->uris,
|
||||
$this->type_uris,
|
||||
$this->delegate);
|
||||
$this->xrds = _mkXRDS($services);
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
// Parse into endpoint objects that we will check
|
||||
$xrds_object = Services_Yadis_XRDS::parseXRDS($this->xrds);
|
||||
|
||||
$endpoints = array();
|
||||
|
||||
if ($xrds_object) {
|
||||
$endpoints = $xrds_object->services(array('filter_MatchesAnyOpenIDType'));
|
||||
$endpoints = Auth_OpenID_makeOpenIDEndpoints($this->yadis_url, $endpoints);
|
||||
}
|
||||
|
||||
// make sure there are the same number of endpoints as
|
||||
// URIs. This assumes that the type_uris contains at least one
|
||||
// OpenID type.
|
||||
$this->assertEquals(count($this->uris), count($endpoints),
|
||||
"URI <-> Endpoint count");
|
||||
|
||||
// So that we can check equality on the endpoint types
|
||||
$type_uris = $this->type_uris;
|
||||
sort($type_uris);
|
||||
|
||||
|
||||
$seen_uris = array();
|
||||
foreach ($endpoints as $endpoint) {
|
||||
$seen_uris[] = $endpoint->server_url;
|
||||
|
||||
// All endpoints will have same yadis_url
|
||||
$this->assertEquals($this->yadis_url, $endpoint->identity_url);
|
||||
|
||||
// and delegate
|
||||
$this->assertEquals($this->delegate, $endpoint->delegate);
|
||||
|
||||
// and types
|
||||
$actual_types = $endpoint->type_uris;
|
||||
sort($actual_types);
|
||||
$this->assertEquals($actual_types, $type_uris);
|
||||
}
|
||||
|
||||
// So that they will compare equal, because we don't care what
|
||||
// order they are in
|
||||
sort($seen_uris);
|
||||
$uris = $this->uris;
|
||||
sort($uris);
|
||||
|
||||
// Make sure we saw all URIs, and saw each one once
|
||||
$this->assertEquals($uris, $seen_uris);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_OpenID_Yadis extends PHPUnit_TestSuite {
|
||||
function Tests_Auth_OpenID_OpenID_Yadis()
|
||||
{
|
||||
global $__data;
|
||||
foreach ($__data as $case) {
|
||||
$this->addTest(new Tests_Auth_OpenID_Tester($case[0], $case[1], $case[2]));
|
||||
}
|
||||
}
|
||||
|
||||
function getName()
|
||||
{
|
||||
return 'Tests_Auth_OpenID_OpenID_Yadis';
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,181 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the Consumer parsing functions.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'Tests/Auth/OpenID/TestUtil.php';
|
||||
require_once 'Auth/OpenID/Parse.php';
|
||||
require_once 'PHPUnit.php';
|
||||
|
||||
class Tests_Auth_OpenID_Link extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_Link($case)
|
||||
{
|
||||
list($desc, $markup, $links, $case_text) = $case;
|
||||
$this->desc = $desc;
|
||||
$this->markup = $markup;
|
||||
$this->expected_links = $links;
|
||||
$this->case_text = $case_text;
|
||||
$this->parser = new Auth_OpenID_Parse();
|
||||
}
|
||||
|
||||
function getName()
|
||||
{
|
||||
return $this->desc;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$parsed = $this->parser->parseLinkAttrs($this->markup);
|
||||
$i = 0;
|
||||
|
||||
foreach ($this->expected_links as $expected) {
|
||||
list($is_optional_link, $expected_link) = $expected;
|
||||
if ($is_optional_link &&
|
||||
($i >= count($parsed))) {
|
||||
continue;
|
||||
}
|
||||
|
||||
$act_link = $parsed[$i];
|
||||
|
||||
$increment = true;
|
||||
foreach ($expected_link as $attr => $data) {
|
||||
list($is_optional_attr, $value) = $data;
|
||||
|
||||
if ($is_optional_attr) {
|
||||
$actual_value = null;
|
||||
if (array_key_exists($attr, $act_link)) {
|
||||
$actual_value = $act_link[$attr];
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
$actual_value = $act_link[$attr];
|
||||
}
|
||||
|
||||
if ($is_optional_link &&
|
||||
($value != $actual_value)) {
|
||||
$increment = false;
|
||||
break;
|
||||
}
|
||||
|
||||
$this->assertEquals($value, $actual_value);
|
||||
}
|
||||
|
||||
if ($increment) {
|
||||
$i++;
|
||||
}
|
||||
}
|
||||
|
||||
$this->assertEquals($i, count($parsed));
|
||||
}
|
||||
}
|
||||
|
||||
class NumTestCases extends PHPUnit_TestCase {
|
||||
function NumTestCases($test_cases, $num_tests)
|
||||
{
|
||||
$this->test_cases = $test_cases;
|
||||
$this->num_tests = $num_tests;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$this->assertEquals(count($this->test_cases),
|
||||
$this->num_tests);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_Parse extends PHPUnit_TestSuite {
|
||||
|
||||
function getName()
|
||||
{
|
||||
return "Tests_Auth_OpenID_Parse";
|
||||
}
|
||||
|
||||
function _parseCheck($cond, $where)
|
||||
{
|
||||
if (!$cond) {
|
||||
trigger_error('Parse error in ' . $where, E_USER_ERROR);
|
||||
}
|
||||
}
|
||||
|
||||
function parseLink($line)
|
||||
{
|
||||
$parts = explode(" ", $line);
|
||||
$optional = intval($parts[0] == 'Link*:');
|
||||
$this->_parseCheck($optional || ($parts[0] == 'Link:'), __FUNCTION__);
|
||||
|
||||
$attrs = array();
|
||||
foreach (array_slice($parts, 1) as $attr) {
|
||||
list($k, $v) = explode("=", $attr, 2);
|
||||
if ($k[strlen($k) - 1] == '*') {
|
||||
$attr_optional = 1;
|
||||
$k = substr($k, 0, strlen($k) - 1);
|
||||
} else {
|
||||
$attr_optional = 0;
|
||||
}
|
||||
|
||||
$attrs[$k] = array($attr_optional, $v);
|
||||
}
|
||||
|
||||
return array($optional, $attrs);
|
||||
}
|
||||
|
||||
function parseCase($s)
|
||||
{
|
||||
list($header, $markup) = explode("\n\n", $s, 2);
|
||||
$lines = explode("\n", $header);
|
||||
$name = array_shift($lines);
|
||||
$this->_parseCheck(strpos($name, 'Name: ') == 0, __FUNCTION__);
|
||||
$desc = substr($name, 6);
|
||||
$parsed = array();
|
||||
foreach ($lines as $line) {
|
||||
$parsed[] = $this->parseLink($line);
|
||||
}
|
||||
|
||||
return array($desc, $markup, $parsed);
|
||||
}
|
||||
|
||||
function parseTests($s)
|
||||
{
|
||||
$tests = array();
|
||||
|
||||
$cases = explode("\n\n\n", $s);
|
||||
$header = array_shift($cases);
|
||||
list($tests_line, $unused) = explode("\n", $header, 2);
|
||||
list($k, $v) = explode(": ", $tests_line);
|
||||
$this->_parseCheck(('Num Tests' == $k), __FUNCTION__);
|
||||
$num_tests = intval($v);
|
||||
|
||||
foreach (array_slice($cases, 0, count($cases) - 1) as $case) {
|
||||
list($desc, $markup, $links) = $this->parseCase($case);
|
||||
$tests[] = array($desc, $markup, $links, $case);
|
||||
}
|
||||
|
||||
return array($num_tests, $tests);
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_Parse()
|
||||
{
|
||||
$test_data = Tests_Auth_OpenID_readdata('linkparse.txt');
|
||||
|
||||
list($num_tests, $test_cases) = $this->parseTests($test_data);
|
||||
|
||||
$this->addTest(new NumTestCases($test_cases, $num_tests));
|
||||
|
||||
foreach ($test_cases as $case) {
|
||||
$this->addTest(new Tests_Auth_OpenID_Link($case));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,574 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* A test script for the OpenIDStore classes.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
/**
|
||||
* Require classes and functions to run the Store tests.
|
||||
*/
|
||||
require_once 'Auth/OpenID/Association.php';
|
||||
require_once 'Auth/OpenID/CryptUtil.php';
|
||||
require_once 'Auth/OpenID.php';
|
||||
require_once 'PHPUnit.php';
|
||||
|
||||
function _Auth_OpenID_mkdtemp()
|
||||
{
|
||||
if (strpos(PHP_OS, 'WIN') === 0) {
|
||||
$dir = $_ENV['TMP'];
|
||||
if (!isset($dir)) {
|
||||
$dir = 'C:\Windows\Temp';
|
||||
}
|
||||
} else {
|
||||
$dir = @$_ENV['TMPDIR'];
|
||||
if (!isset($dir)) {
|
||||
$dir = '/tmp';
|
||||
}
|
||||
}
|
||||
|
||||
return Auth_OpenID_FileStore::_mkdtemp($dir);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* This is the host where the SQL stores' databases should be created
|
||||
* and destroyed.
|
||||
*/
|
||||
$_Auth_OpenID_db_test_host = 'dbtest';
|
||||
|
||||
/**
|
||||
* Generate a sufficently unique database name so many hosts can run
|
||||
* SQL store tests on the server at the same time and not step on each
|
||||
* other.
|
||||
*/
|
||||
function _Auth_OpenID_getTmpDbName()
|
||||
{
|
||||
$hostname = php_uname('n');
|
||||
$hostname = strtolower(str_replace('.', '_', $hostname));
|
||||
|
||||
return sprintf("%s_%d_%s_openid_test",
|
||||
$hostname,
|
||||
getmypid(),
|
||||
strval(rand(1, time())));
|
||||
}
|
||||
|
||||
/**
|
||||
* Tests the OpenID stores.
|
||||
*
|
||||
* @package OpenID
|
||||
*/
|
||||
class Tests_Auth_OpenID_StoreTest extends PHPUnit_TestCase {
|
||||
|
||||
/**
|
||||
* Prepares for the SQL store tests.
|
||||
*/
|
||||
function setUp()
|
||||
{
|
||||
$this->letters = Auth_OpenID_letters;
|
||||
$this->digits = Auth_OpenID_digits;
|
||||
$this->punct = Auth_OpenID_punct;
|
||||
$this->allowed_nonce = $this->letters . $this->digits;
|
||||
$this->allowed_handle = $this->letters . $this->digits . $this->punct;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a nonce value.
|
||||
*/
|
||||
function generateNonce()
|
||||
{
|
||||
return Auth_OpenID_CryptUtil::randomString(8, $this->allowed_nonce);
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates an association with the specified parameters.
|
||||
*/
|
||||
function genAssoc($now, $issued = 0, $lifetime = 600)
|
||||
{
|
||||
$sec = Auth_OpenID_CryptUtil::randomString(20);
|
||||
$hdl = Auth_OpenID_CryptUtil::randomString(128, $this->allowed_handle);
|
||||
return new Auth_OpenID_Association($hdl, $sec, $now + $issued,
|
||||
$lifetime, 'HMAC-SHA1');
|
||||
}
|
||||
|
||||
/**
|
||||
* @access private
|
||||
*/
|
||||
function _checkRetrieve(&$store, $url, $handle, $expected, $name = null)
|
||||
{
|
||||
$retrieved_assoc = $store->getAssociation($url, $handle);
|
||||
if (($expected === null) || ($store->isDumb())) {
|
||||
$this->assertNull($retrieved_assoc, "Retrieved association " .
|
||||
"was non-null");
|
||||
} else {
|
||||
if ($retrieved_assoc === null) {
|
||||
$this->fail("$name: Got null when expecting " .
|
||||
$expected->serialize());
|
||||
} else {
|
||||
$this->assertEquals($expected->serialize(),
|
||||
$retrieved_assoc->serialize(), $name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _checkRemove(&$store, $url, $handle, $expected, $name = null)
|
||||
{
|
||||
$present = $store->removeAssociation($url, $handle);
|
||||
$expectedPresent = (!$store->isDumb() && $expected);
|
||||
$this->assertTrue((!$expectedPresent && !$present) ||
|
||||
($expectedPresent && $present),
|
||||
$name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Make sure a given store has a minimum of API compliance. Call
|
||||
* this function with an empty store.
|
||||
*
|
||||
* Raises AssertionError if the store does not work as expected.
|
||||
*
|
||||
* OpenIDStore -> NoneType
|
||||
*/
|
||||
function _testStore($store)
|
||||
{
|
||||
|
||||
// Association functions
|
||||
$now = time();
|
||||
|
||||
$server_url = 'http://www.myopenid.com/openid';
|
||||
|
||||
$assoc = $this->genAssoc($now);
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, null, null,
|
||||
'Make sure that a missing association returns no result');
|
||||
|
||||
$store->storeAssociation($server_url, $assoc);
|
||||
$this->_checkRetrieve($store, $server_url, null, $assoc,
|
||||
'Check that after storage, getting returns the same result');
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, null, $assoc,
|
||||
'more than once');
|
||||
|
||||
$store->storeAssociation($server_url, $assoc);
|
||||
$this->_checkRetrieve($store, $server_url, null, $assoc,
|
||||
'Storing more than once has no ill effect');
|
||||
|
||||
// Removing an association that does not exist returns not present
|
||||
$this->_checkRemove($store, $server_url, $assoc->handle . 'x', false,
|
||||
"Remove nonexistent association (1)");
|
||||
|
||||
// Removing an association that does not exist returns not present
|
||||
$this->_checkRemove($store, $server_url . 'x', $assoc->handle, false,
|
||||
"Remove nonexistent association (2)");
|
||||
|
||||
// Removing an association that is present returns present
|
||||
$this->_checkRemove($store, $server_url, $assoc->handle, true,
|
||||
"Remove existent association");
|
||||
|
||||
// but not present on subsequent calls
|
||||
$this->_checkRemove($store, $server_url, $assoc->handle, false,
|
||||
"Remove nonexistent association after removal");
|
||||
|
||||
// Put assoc back in the store
|
||||
$store->storeAssociation($server_url, $assoc);
|
||||
|
||||
// More recent and expires after assoc
|
||||
$assoc2 = $this->genAssoc($now, $issued = 1);
|
||||
$store->storeAssociation($server_url, $assoc2);
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, null, $assoc2,
|
||||
'After storing an association with a different handle, but the
|
||||
same $server_url, the handle with the later expiration is
|
||||
returned.');
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc->handle, $assoc,
|
||||
'We can still retrieve the older association');
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc2->handle, $assoc2,
|
||||
'Plus we can retrieve the association with the later expiration
|
||||
explicitly');
|
||||
|
||||
$assoc3 = $this->genAssoc($now, $issued = 2, $lifetime = 100);
|
||||
$store->storeAssociation($server_url, $assoc3);
|
||||
|
||||
// More recent issued time, so assoc3 is expected.
|
||||
$this->_checkRetrieve($store, $server_url, null, $assoc3, "(1)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc->handle,
|
||||
$assoc, "(2)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc2->handle,
|
||||
$assoc2, "(3)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc3->handle,
|
||||
$assoc3, "(4)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc2->handle, true, "(5)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, null, $assoc3, "(6)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc->handle,
|
||||
$assoc, "(7)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc2->handle,
|
||||
null, "(8)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc3->handle,
|
||||
$assoc3, "(9)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc2->handle,
|
||||
false, "(10)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc3->handle,
|
||||
true, "(11)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, null, $assoc, "(12)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc->handle,
|
||||
$assoc, "(13)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc2->handle,
|
||||
null, "(14)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc3->handle,
|
||||
null, "(15)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc2->handle,
|
||||
false, "(16)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc->handle,
|
||||
true, "(17)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc3->handle,
|
||||
false, "(18)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, null, null, "(19)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc->handle,
|
||||
null, "(20)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url, $assoc2->handle,
|
||||
null, "(21)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url,$assoc3->handle,
|
||||
null, "(22)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc2->handle,
|
||||
false, "(23)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc->handle,
|
||||
false, "(24)");
|
||||
|
||||
$this->_checkRemove($store, $server_url, $assoc3->handle,
|
||||
false, "(25)");
|
||||
|
||||
// Put associations into store, for two different server URLs
|
||||
$assoc1 = $this->genAssoc($now);
|
||||
$assoc2 = $this->genAssoc($now + 2);
|
||||
$server_url1 = "http://one.example.com/one";
|
||||
$server_url2 = "http://two.localhost.localdomain/two";
|
||||
|
||||
$store->storeAssociation($server_url1, $assoc1);
|
||||
$store->storeAssociation($server_url2, $assoc2);
|
||||
|
||||
// Ask for each one, make sure we get it
|
||||
$this->_checkRetrieve($store, $server_url1, $assoc1->handle,
|
||||
$assoc1, "(26)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url2, $assoc2->handle,
|
||||
$assoc2, "(27)");
|
||||
|
||||
$store->storeAssociation($server_url1, $assoc1);
|
||||
$store->storeAssociation($server_url2, $assoc2);
|
||||
|
||||
// Ask for each one, make sure we get it
|
||||
$this->_checkRetrieve($store, $server_url1, null,
|
||||
$assoc1, "(28)");
|
||||
|
||||
$this->_checkRetrieve($store, $server_url2, null,
|
||||
$assoc2, "(29)");
|
||||
}
|
||||
|
||||
function _checkUseNonce(&$store, $nonce, $expected, $msg=null)
|
||||
{
|
||||
$actual = $store->useNonce($nonce);
|
||||
$expected = $store->isDumb() || $expected;
|
||||
$val = ($actual && $expected) || (!$actual && !$expected);
|
||||
$this->assertTrue($val, "_checkUseNonce failed: $msg");
|
||||
}
|
||||
|
||||
function _testNonce(&$store)
|
||||
{
|
||||
// Nonce functions
|
||||
|
||||
// Random nonce (not in store)
|
||||
$nonce1 = $this->generateNonce();
|
||||
|
||||
// A nonce is not present by default
|
||||
$this->_checkUseNonce($store, $nonce1, false, 1);
|
||||
|
||||
// Storing once causes useNonce to return true the first, and
|
||||
// only the first, time it is called after the $store->
|
||||
$store->storeNonce($nonce1);
|
||||
$this->_checkUseNonce($store, $nonce1, true, 2);
|
||||
$this->_checkUseNonce($store, $nonce1, false, 3);
|
||||
$this->_checkUseNonce($store, $nonce1, false, 4);
|
||||
|
||||
// Storing twice has the same effect as storing once.
|
||||
$store->storeNonce($nonce1);
|
||||
$store->storeNonce($nonce1);
|
||||
$this->_checkUseNonce($store, $nonce1, true, 5);
|
||||
$this->_checkUseNonce($store, $nonce1, false, 6);
|
||||
$this->_checkUseNonce($store, $nonce1, false, 7);
|
||||
|
||||
// Auth key functions
|
||||
|
||||
// There is no key to start with, so generate a new key and
|
||||
// return it.
|
||||
$key = $store->getAuthKey();
|
||||
|
||||
// The second time around should return the same as last time.
|
||||
$key2 = $store->getAuthKey();
|
||||
$this->assertEquals($key, $key2, "Auth keys differ");
|
||||
$this->assertEquals(strlen($key), $store->AUTH_KEY_LEN,
|
||||
"Key length not equals AUTH_KEY_LEN");
|
||||
}
|
||||
|
||||
function test_memstore()
|
||||
{
|
||||
require_once 'Tests/Auth/OpenID/MemStore.php';
|
||||
$store = new Tests_Auth_OpenID_MemStore('Bogus auth key ');
|
||||
$this->_testStore(&$store);
|
||||
$this->_testNonce(&$store);
|
||||
}
|
||||
|
||||
function test_filestore()
|
||||
{
|
||||
require_once 'Auth/OpenID/FileStore.php';
|
||||
|
||||
$temp_dir = _Auth_OpenID_mkdtemp();
|
||||
|
||||
if (!$temp_dir) {
|
||||
trigger_error('Could not create temporary directory ' .
|
||||
'with Auth_OpenID_FileStore::_mkdtemp',
|
||||
E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
|
||||
$store = new Auth_OpenID_FileStore($temp_dir);
|
||||
$this->_testStore($store);
|
||||
$this->_testNonce($store);
|
||||
$store->destroy();
|
||||
}
|
||||
|
||||
function test_postgresqlstore()
|
||||
{
|
||||
// If the postgres extension isn't loaded or loadable, succeed
|
||||
// because we can't run the test.
|
||||
if (!(extension_loaded('pgsql') ||
|
||||
@dl('pgsql.' . PHP_SHLIB_SUFFIX))) {
|
||||
$this->pass();
|
||||
return;
|
||||
}
|
||||
|
||||
require_once 'Auth/OpenID/PostgreSQLStore.php';
|
||||
require_once 'DB.php';
|
||||
|
||||
global $_Auth_OpenID_db_test_host;
|
||||
|
||||
$temp_db_name = _Auth_OpenID_getTmpDbName();
|
||||
|
||||
$connect_db_name = 'test_master';
|
||||
|
||||
$dsn = array(
|
||||
'phptype' => 'pgsql',
|
||||
'username' => 'openid_test',
|
||||
'password' => '',
|
||||
'hostspec' => $_Auth_OpenID_db_test_host,
|
||||
'database' => $connect_db_name
|
||||
);
|
||||
|
||||
$allowed_failures = 5;
|
||||
$result = null;
|
||||
$sleep_time = 1.0;
|
||||
$sql = sprintf("CREATE DATABASE %s", $temp_db_name);
|
||||
|
||||
for ($failures = 0; $failures < $allowed_failures; $failures++) {
|
||||
$template_db =& DB::connect($dsn);
|
||||
|
||||
if (PEAR::isError($template_db)) {
|
||||
$result &= $template_db;
|
||||
} else {
|
||||
// Try to create the test database.
|
||||
$result = $template_db->query($sql);
|
||||
|
||||
$template_db->disconnect();
|
||||
unset($template_db);
|
||||
|
||||
if (!PEAR::isError($result)) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$sleep_time *= ((mt_rand(1, 100) / 100.0) + 1.5);
|
||||
print "Failed to create database $temp_db_name.\n".
|
||||
"Waiting $sleep_time before trying again\n";
|
||||
|
||||
$int_sleep = floor($sleep_time);
|
||||
$frac_sleep = $sleep_time - $int_sleep;
|
||||
sleep($int_sleep);
|
||||
usleep($frac_sleep * 1000000.0);
|
||||
}
|
||||
|
||||
if ($failures == $allowed_failures) {
|
||||
$this->fail("Temporary database creation failed after $failures ".
|
||||
" tries ('$temp_db_name'): " . $result->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
// Disconnect from template1 and reconnect to the temporary
|
||||
// testing database.
|
||||
$dsn['database'] = $temp_db_name;
|
||||
$db =& DB::connect($dsn);
|
||||
|
||||
if (PEAR::isError($db)) {
|
||||
$this->fail("Temporary database connection failed " .
|
||||
" ('$temp_db_name'): " . $db->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
$store =& new Auth_OpenID_PostgreSQLStore($db);
|
||||
$store->createTables();
|
||||
$this->_testStore($store);
|
||||
$this->_testNonce($store);
|
||||
|
||||
$db->disconnect();
|
||||
unset($db);
|
||||
|
||||
// Connect to template1 again so we can drop the temporary
|
||||
// database.
|
||||
$dsn['database'] = $connect_db_name;
|
||||
$template_db =& DB::connect($dsn);
|
||||
|
||||
if (PEAR::isError($template_db)) {
|
||||
$this->fail("Template database connection (to drop " .
|
||||
"temporary database) failed: " .
|
||||
$template_db->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
$result = $template_db->query(sprintf("DROP DATABASE %s",
|
||||
$temp_db_name));
|
||||
|
||||
if (PEAR::isError($result)) {
|
||||
$this->fail("Dropping temporary database failed: " .
|
||||
$result->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
$template_db->disconnect();
|
||||
unset($template_db);
|
||||
}
|
||||
|
||||
function test_sqlitestore()
|
||||
{
|
||||
// If the postgres extension isn't loaded or loadable, succeed
|
||||
// because we can't run the test.
|
||||
if (!(extension_loaded('sqlite') ||
|
||||
@dl('sqlite.' . PHP_SHLIB_SUFFIX))) {
|
||||
$this->pass();
|
||||
return;
|
||||
}
|
||||
|
||||
require_once 'Auth/OpenID/SQLiteStore.php';
|
||||
require_once 'DB.php';
|
||||
|
||||
$temp_dir = _Auth_OpenID_mkdtemp();
|
||||
|
||||
if (!$temp_dir) {
|
||||
trigger_error('Could not create temporary directory ' .
|
||||
'with Auth_OpenID_FileStore::_mkdtemp',
|
||||
E_USER_WARNING);
|
||||
return null;
|
||||
}
|
||||
|
||||
$dsn = sprintf("sqlite:///%s/file.db", $temp_dir);
|
||||
$db =& DB::connect($dsn);
|
||||
|
||||
if (PEAR::isError($db)) {
|
||||
$this->fail("SQLite database connection failed: " .
|
||||
$db->getMessage());
|
||||
} else {
|
||||
$store =& new Auth_OpenID_SQLiteStore($db);
|
||||
$this->assertTrue($store->createTables(), "Table creation failed");
|
||||
$this->_testStore($store);
|
||||
$this->_testNonce($store);
|
||||
}
|
||||
|
||||
$db->disconnect();
|
||||
unset($db);
|
||||
unset($store);
|
||||
unlink($temp_dir . '/file.db');
|
||||
rmdir($temp_dir);
|
||||
}
|
||||
|
||||
function test_mysqlstore()
|
||||
{
|
||||
// If the mysql extension isn't loaded or loadable, succeed
|
||||
// because we can't run the test.
|
||||
if (!(extension_loaded('mysql') ||
|
||||
@dl('mysql.' . PHP_SHLIB_SUFFIX))) {
|
||||
$this->pass();
|
||||
return;
|
||||
}
|
||||
|
||||
require_once 'Auth/OpenID/MySQLStore.php';
|
||||
require_once 'DB.php';
|
||||
|
||||
global $_Auth_OpenID_db_test_host;
|
||||
|
||||
$dsn = array(
|
||||
'phptype' => 'mysql',
|
||||
'username' => 'openid_test',
|
||||
'password' => '',
|
||||
'hostspec' => $_Auth_OpenID_db_test_host
|
||||
);
|
||||
|
||||
$db =& DB::connect($dsn);
|
||||
|
||||
if (PEAR::isError($db)) {
|
||||
print "MySQL database connection failed: " .
|
||||
$db->getMessage();
|
||||
$this->pass();
|
||||
return;
|
||||
}
|
||||
|
||||
$temp_db_name = _Auth_OpenID_getTmpDbName();
|
||||
|
||||
$result = $db->query("CREATE DATABASE $temp_db_name");
|
||||
|
||||
if (PEAR::isError($result)) {
|
||||
$this->fail("Error creating MySQL temporary database: " .
|
||||
$result->getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
$db->query("USE $temp_db_name");
|
||||
|
||||
$store =& new Auth_OpenID_MySQLStore($db);
|
||||
$store->createTables();
|
||||
$this->_testStore($store);
|
||||
$this->_testNonce($store);
|
||||
|
||||
$db->query("DROP DATABASE $temp_db_name");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Utilites for test functions
|
||||
*/
|
||||
|
||||
function Tests_Auth_OpenID_datafile($name, $reader)
|
||||
{
|
||||
$path = dirname(realpath(__FILE__));
|
||||
$sep = DIRECTORY_SEPARATOR;
|
||||
$filename = $path . $sep . 'data' . $sep . $name;
|
||||
$data = $reader($filename);
|
||||
if ($data === false) {
|
||||
$msg = "Failed to open data file: $name";
|
||||
trigger_error($msg, E_USER_ERROR);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_readdata($name)
|
||||
{
|
||||
return Tests_Auth_OpenID_datafile($name, 'file_get_contents');
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_readlines($name)
|
||||
{
|
||||
return Tests_Auth_OpenID_datafile($name, 'file');
|
||||
}
|
||||
|
|
@ -1,167 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the TrustRoot module
|
||||
*/
|
||||
|
||||
require_once "Auth/OpenID/TrustRoot.php";
|
||||
require_once "Tests/Auth/OpenID/TestUtil.php";
|
||||
require_once "PHPUnit.php";
|
||||
|
||||
class Tests_Auth_OpenID_TRParseCase extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_TRParseCase($desc, $case, $expected)
|
||||
{
|
||||
$this->setName($desc);
|
||||
$this->case = $case;
|
||||
$this->expected = $expected;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$is_sane = Auth_OpenID_TrustRoot::isSane($this->case);
|
||||
$parsed = (bool)Auth_OpenID_TrustRoot::_parse($this->case);
|
||||
switch ($this->expected) {
|
||||
case 'sane':
|
||||
$this->assertTrue($is_sane);
|
||||
$this->assertTrue($parsed);
|
||||
break;
|
||||
case 'insane':
|
||||
$this->assertTrue($parsed);
|
||||
$this->assertFalse($is_sane);
|
||||
break;
|
||||
default:
|
||||
$this->assertFalse($parsed);
|
||||
$this->assertFalse($is_sane);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_TRMatchCase extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_TRMatchCase($desc, $tr, $rt, $matches)
|
||||
{
|
||||
$this->setName($desc);
|
||||
$this->tr = $tr;
|
||||
$this->rt = $rt;
|
||||
$this->matches = $matches;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$matches = Auth_OpenID_TrustRoot::match($this->tr, $this->rt);
|
||||
$this->assertEquals((bool)$this->matches, (bool)$matches);
|
||||
}
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_parseHeadings($data, $c)
|
||||
{
|
||||
$heading_pat = '/(^|\n)' . $c . '{40}\n([^\n]+)\n' . $c . '{40}\n()/';
|
||||
$offset = 0;
|
||||
$headings = array();
|
||||
while (true) {
|
||||
preg_match($heading_pat, substr($data, $offset), $matches,
|
||||
PREG_OFFSET_CAPTURE);
|
||||
if (!$matches) {
|
||||
break;
|
||||
}
|
||||
$start = $matches[0][1];
|
||||
$heading = $matches[2][0];
|
||||
$end = $matches[3][1];
|
||||
$headings[] = array('heading' => $heading,
|
||||
'start' => $offset + $start,
|
||||
'end' => $offset + $end,
|
||||
);
|
||||
$offset += $end;
|
||||
}
|
||||
return $headings;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_getSections($data)
|
||||
{
|
||||
$headings = Tests_Auth_OpenID_parseHeadings($data, '-');
|
||||
$sections = array();
|
||||
$n = count($headings);
|
||||
for ($i = 0; $i < $n; ) {
|
||||
$secdata = $headings[$i];
|
||||
list($numtests, $desc) = explode(': ', $secdata['heading']);
|
||||
$start = $secdata['end'];
|
||||
$i += 1;
|
||||
if ($i < $n) {
|
||||
$blob = substr($data, $start, $headings[$i]['start'] - $start);
|
||||
} else {
|
||||
$blob = substr($data, $start);
|
||||
}
|
||||
$lines = explode("\n", trim($blob));
|
||||
if (count($lines) != $numtests) {
|
||||
trigger_error('Parse failure: ' . var_export($secdata, true),
|
||||
E_USER_ERROR);
|
||||
}
|
||||
$sections[] = array('desc' => $desc, 'lines' => $lines,);
|
||||
}
|
||||
return $sections;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_trParseTests($head, $tests)
|
||||
{
|
||||
$tests = array('fail' => $tests[0],
|
||||
'insane' => $tests[1],
|
||||
'sane' => $tests[2]);
|
||||
$testobjs = array();
|
||||
foreach ($tests as $expected => $testdata) {
|
||||
$lines = $testdata['lines'];
|
||||
foreach ($lines as $line) {
|
||||
$desc = sprintf("%s - %s: %s", $head,
|
||||
$testdata['desc'], var_export($line, true));
|
||||
$testobjs[] = new Tests_Auth_OpenID_TRParseCase(
|
||||
$desc, $line, $expected);
|
||||
}
|
||||
}
|
||||
return $testobjs;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_trMatchTests($head, $tests)
|
||||
{
|
||||
$tests = array(true => $tests[0], false => $tests[1]);
|
||||
$testobjs = array();
|
||||
foreach ($tests as $expected => $testdata) {
|
||||
$lines = $testdata['lines'];
|
||||
foreach ($lines as $line) {
|
||||
$pat = '/^([^ ]+) +([^ ]+)$/';
|
||||
preg_match($pat, $line, $matches);
|
||||
list($_, $tr, $rt) = $matches;
|
||||
$desc = sprintf("%s - %s: %s %s", $head, $testdata['desc'],
|
||||
var_export($tr, true), var_export($rt, true));
|
||||
$testobjs[] = new Tests_Auth_OpenID_TRMatchCase(
|
||||
$desc, $tr, $rt, $expected);
|
||||
}
|
||||
}
|
||||
return $testobjs;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_trustRootTests()
|
||||
{
|
||||
$data = Tests_Auth_OpenID_readdata('trustroot.txt');
|
||||
list($parsehead, $matchhead) = Tests_Auth_OpenID_parseHeadings($data, '=');
|
||||
$pe = $parsehead['end'];
|
||||
$parsedata = substr($data, $pe, $matchhead['start'] - $pe);
|
||||
$parsetests = Tests_Auth_OpenID_getSections($parsedata);
|
||||
$parsecases = Tests_Auth_OpenID_trParseTests($parsehead['heading'],
|
||||
$parsetests);
|
||||
|
||||
$matchdata = substr($data, $matchhead['end']);
|
||||
$matchtests = Tests_Auth_OpenID_getSections($matchdata);
|
||||
$matchcases = Tests_Auth_OpenID_trMatchTests($matchhead['heading'],
|
||||
$matchtests);
|
||||
|
||||
return array_merge($parsecases, $matchcases);
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_TrustRoot extends PHPUnit_TestSuite {
|
||||
function Tests_Auth_OpenID_TrustRoot($name)
|
||||
{
|
||||
$this->setName($name);
|
||||
|
||||
foreach (Tests_Auth_OpenID_trustRootTests() as $test) {
|
||||
$this->addTest($test);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the URI normalization routines used by the OpenID
|
||||
* library.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID/URINorm.php';
|
||||
require_once 'Tests/Auth/OpenID/TestUtil.php';
|
||||
|
||||
class Tests_Auth_OpenID_URINorm_TestCase extends PHPUnit_TestCase {
|
||||
function Tests_Auth_OpenID_URINorm_TestCase(
|
||||
$name, $uri, $expected)
|
||||
{
|
||||
|
||||
$this->setName($name);
|
||||
$this->uri = $uri;
|
||||
$this->expected = $expected;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$actual = Auth_OpenID_urinorm($this->uri);
|
||||
$this->assertEquals($this->expected, $actual);
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Auth_OpenID_URINorm extends PHPUnit_TestSuite {
|
||||
function _readTestCases()
|
||||
{
|
||||
$lines = Tests_Auth_OpenID_readlines('urinorm.txt');
|
||||
$cases = array();
|
||||
$case = array();
|
||||
for ($i = 0; $i < count($lines) && ($i + 3 <= count($lines)); $i += 4) {
|
||||
$name = trim($lines[$i]);
|
||||
$uri = trim($lines[$i + 1]);
|
||||
$expected = trim($lines[$i + 2]);
|
||||
if ($expected == 'fail') {
|
||||
$expected = null;
|
||||
}
|
||||
$cases[] = array($name, $uri, $expected);
|
||||
}
|
||||
|
||||
return $cases;
|
||||
}
|
||||
|
||||
function Tests_Auth_OpenID_URINorm($name)
|
||||
{
|
||||
$this->setName($name);
|
||||
$cases = $this->_readTestCases();
|
||||
foreach ($cases as $case) {
|
||||
list($name, $uri, $expected) = $case;
|
||||
$this->addTest(new Tests_Auth_OpenID_URINorm_TestCase($name, $uri, $expected));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,260 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for utility functions used by the OpenID library.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Auth/OpenID.php';
|
||||
|
||||
class Tests_Auth_OpenID_Util extends PHPUnit_TestCase {
|
||||
function test_base64()
|
||||
{
|
||||
// This is not good for international use, but PHP doesn't
|
||||
// appear to provide access to the local alphabet.
|
||||
$letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
|
||||
$digits = "0123456789";
|
||||
$extra = "+/=";
|
||||
$allowed_s = $letters . $digits . $extra;
|
||||
$allowed_d = array();
|
||||
|
||||
for ($i = 0; $i < strlen($allowed_s); $i++) {
|
||||
$c = $allowed_s[$i];
|
||||
$allowed_d[$c] = null;
|
||||
}
|
||||
|
||||
function checkEncoded($obj, $str, $allowed_array)
|
||||
{
|
||||
for ($i = 0; $i < strlen($str); $i++) {
|
||||
$obj->assertTrue(array_key_exists($str[$i],
|
||||
$allowed_array));
|
||||
}
|
||||
}
|
||||
|
||||
$cases = array(
|
||||
"",
|
||||
"x",
|
||||
"\x00",
|
||||
"\x01",
|
||||
str_repeat("\x00", 100),
|
||||
implode("", array_map('chr', range(0, 255)))
|
||||
);
|
||||
|
||||
foreach ($cases as $s) {
|
||||
$b64 = base64_encode($s);
|
||||
checkEncoded($this, $b64, $allowed_d);
|
||||
$s_prime = base64_decode($b64);
|
||||
$this->assertEquals($s_prime, $s);
|
||||
}
|
||||
|
||||
function random_ordinal($unused)
|
||||
{
|
||||
return rand(0, 255);
|
||||
}
|
||||
|
||||
// Randomized test
|
||||
foreach (range(0, 49) as $i) {
|
||||
$n = rand(0, 2048);
|
||||
$s = implode("", array_map('chr',
|
||||
array_map('random_ordinal',
|
||||
range(0, $n))));
|
||||
$b64 = base64_encode($s);
|
||||
checkEncoded($this, $b64, $allowed_d);
|
||||
$s_prime = base64_decode($b64);
|
||||
$this->assertEquals($s_prime, $s);
|
||||
}
|
||||
}
|
||||
|
||||
function test_normalizeUrl()
|
||||
{
|
||||
$this->assertEquals("http://foo.com/",
|
||||
Auth_OpenID::normalizeUrl("foo.com"));
|
||||
|
||||
$this->assertEquals("http://foo.com/",
|
||||
Auth_OpenID::normalizeUrl("http://foo.com"));
|
||||
|
||||
$this->assertEquals("https://foo.com/",
|
||||
Auth_OpenID::normalizeUrl("https://foo.com"));
|
||||
|
||||
$this->assertEquals("http://foo.com/bar",
|
||||
Auth_OpenID::normalizeUrl("foo.com/bar"));
|
||||
|
||||
$this->assertEquals("http://foo.com/bar",
|
||||
Auth_OpenID::normalizeUrl("http://foo.com/bar"));
|
||||
|
||||
$this->assertEquals("http://foo.com/",
|
||||
Auth_OpenID::normalizeUrl("http://foo.com/"));
|
||||
|
||||
$this->assertEquals("https://foo.com/",
|
||||
Auth_OpenID::normalizeUrl("https://foo.com/"));
|
||||
|
||||
$this->assertEquals("https://foo.com/bar" ,
|
||||
Auth_OpenID::normalizeUrl("https://foo.com/bar"));
|
||||
|
||||
if (0) {
|
||||
$this->assertEquals("http://foo.com/%E8%8D%89",
|
||||
Auth_OpenID::normalizeUrl("foo.com/\u8349"));
|
||||
|
||||
$this->assertEquals("http://foo.com/%E8%8D%89",
|
||||
Auth_OpenID::normalizeUrl("http://foo.com/\u8349"));
|
||||
}
|
||||
|
||||
$non_ascii_domain_cases = array(
|
||||
array("http://xn--vl1a.com/",
|
||||
"\u8349.com"),
|
||||
|
||||
array("http://xn--vl1a.com/",
|
||||
"http://\u8349.com"),
|
||||
|
||||
array("http://xn--vl1a.com/",
|
||||
"\u8349.com/"),
|
||||
|
||||
array("http://xn--vl1a.com/",
|
||||
"http://\u8349.com/"),
|
||||
|
||||
array("http://xn--vl1a.com/%E8%8D%89",
|
||||
"\u8349.com/\u8349"),
|
||||
|
||||
array("http://xn--vl1a.com/%E8%8D%89",
|
||||
"http://\u8349.com/\u8349"),
|
||||
);
|
||||
|
||||
// XXX
|
||||
/*
|
||||
codecs.getencoder('idna')
|
||||
except LookupError:
|
||||
# If there is no idna codec, these cases with
|
||||
# non-ascii-representable domain names should fail.
|
||||
should_raise = True
|
||||
else:
|
||||
should_raise = False
|
||||
|
||||
for expected, case in non_ascii_domain_cases:
|
||||
try:
|
||||
actual = Auth_OpenID::normalizeUrl(case)
|
||||
except UnicodeError:
|
||||
assert should_raise
|
||||
else:
|
||||
assert not should_raise and actual == expected, case
|
||||
*/
|
||||
|
||||
$this->assertNull(Auth_OpenID::normalizeUrl(null));
|
||||
$this->assertNull(Auth_OpenID::normalizeUrl(''));
|
||||
$this->assertNull(Auth_OpenID::normalizeUrl('http://'));
|
||||
}
|
||||
|
||||
function test_appendArgs()
|
||||
{
|
||||
|
||||
$simple = 'http://www.example.com/';
|
||||
|
||||
$cases = array(
|
||||
array('empty list',
|
||||
array($simple, array()),
|
||||
$simple),
|
||||
|
||||
array('empty dict',
|
||||
array($simple, array()),
|
||||
$simple),
|
||||
|
||||
array('one list',
|
||||
array($simple, array(array('a', 'b'))),
|
||||
$simple . '?a=b'),
|
||||
|
||||
array('one dict',
|
||||
array($simple, array('a' => 'b')),
|
||||
$simple . '?a=b'),
|
||||
|
||||
array('two list (same)',
|
||||
array($simple, array(array('a', 'b'),
|
||||
array('a', 'c'))),
|
||||
$simple . '?a=b&a=c'),
|
||||
|
||||
array('two list',
|
||||
array($simple, array(array('a', 'b'),
|
||||
array('b', 'c'))),
|
||||
$simple . '?a=b&b=c'),
|
||||
|
||||
array('two list (order)',
|
||||
array($simple, array(array('b', 'c'),
|
||||
array('a', 'b'))),
|
||||
$simple . '?b=c&a=b'),
|
||||
|
||||
array('two dict (order)',
|
||||
array($simple, array('b' => 'c',
|
||||
'a' => 'b')),
|
||||
$simple . '?a=b&b=c'),
|
||||
|
||||
array('escape',
|
||||
array($simple, array(array('=', '='))),
|
||||
$simple . '?%3D=%3D'),
|
||||
|
||||
array('escape (URL)',
|
||||
array($simple, array(array('this_url',
|
||||
$simple))),
|
||||
$simple .
|
||||
'?this_url=http%3A%2F%2Fwww.example.com%2F'),
|
||||
|
||||
array('use dots',
|
||||
array($simple, array(array('openid.stuff',
|
||||
'bother'))),
|
||||
$simple . '?openid.stuff=bother'),
|
||||
|
||||
array('args exist (empty)',
|
||||
array($simple . '?stuff=bother', array()),
|
||||
$simple . '?stuff=bother'),
|
||||
|
||||
array('args exist',
|
||||
array($simple . '?stuff=bother',
|
||||
array(array('ack', 'ack'))),
|
||||
$simple . '?stuff=bother&ack=ack'),
|
||||
|
||||
array('args exist',
|
||||
array($simple . '?stuff=bother',
|
||||
array(array('ack', 'ack'))),
|
||||
$simple . '?stuff=bother&ack=ack'),
|
||||
|
||||
array('args exist (dict)',
|
||||
array($simple . '?stuff=bother',
|
||||
array('ack' => 'ack')),
|
||||
$simple . '?stuff=bother&ack=ack'),
|
||||
|
||||
array('args exist (dict 2)',
|
||||
array($simple . '?stuff=bother',
|
||||
array('ack' => 'ack', 'zebra' => 'lion')),
|
||||
$simple . '?stuff=bother&ack=ack&zebra=lion'),
|
||||
|
||||
array('three args (dict)',
|
||||
array($simple, array('stuff' => 'bother',
|
||||
'ack' => 'ack',
|
||||
'zebra' => 'lion')),
|
||||
$simple . '?ack=ack&stuff=bother&zebra=lion'),
|
||||
|
||||
array('three args (list)',
|
||||
array($simple, array(
|
||||
array('stuff', 'bother'),
|
||||
array('ack', 'ack'),
|
||||
array('zebra', 'lion'))),
|
||||
$simple . '?stuff=bother&ack=ack&zebra=lion'),
|
||||
);
|
||||
|
||||
// Tests.
|
||||
foreach ($cases as $case) {
|
||||
list($desc, $data, $expected) = $case;
|
||||
list($url, $query) = $data;
|
||||
$this->assertEquals($expected,
|
||||
Auth_OpenID::appendArgs($url, $query));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
2126517416 1503105722 107994742031567165457540274858809652167995244913839787589743578103625285208352685332617657612917013907706708046204110421143061814711041523408378123857885283119340960531860106377561159933747570456852792031929014142490977574671361334052940195520731561436107832724927338342871107723160776334443535305873323500256
|
||||
1726325708 97982531 120276049194830643562108817809662062106546923236483207874835831104433621725428405166395533625121884325430201809382464614237831903082554679507511419420917850293136497504021313018779166242697363853538302653639224106865664333535348491338293646599577557630201300627170167862878616413985927131488374258664616392092
|
||||
7191572 1822336109 122056637146069839485450157659463602136773435897258591538866604089577736061707581662949502933519623787237101424065925246227311788026398025228549571401681364284397681558495127293422405005519207011429758784679359026564663723906503072635741603815702201571462971153413211041068663899032199555395016545688330586044
|
||||
228786056 1675584603 117701151389970889003978379762267752133865163176557074701079147801046451813688145274964215828365957142552336288689654120601548113748929766366564174096775189852190965077394508456052823068488823291767811224538103381867631753777200820579564678159674117155563703553000884461777658090456283332220216734612556688513
|
||||
804908984 2135801843 64993745755656098807721600357147815184322152457013249228399624894951891365784451431980303960531348451816046446458097670030866575746640795583720668211568084611960590087205609635406810868042628237527172170079769791670793545166757565720288711565725471066283638538704293790079806106677373567711048953361333211210
|
||||
1122280790 1614259350 3970244390792364343312138669070883638127263175075582263096706481850448381703964455173288740017450440943500797144425033043394229962284552755667989452357422108026327690718801740503572676309934059296211509079412739861064178751353597300902277808636740745335474263237517162977595705012834985895341553367459792583
|
||||
554314515 998420920 123643361743671701825618173162391028658772950477687990712748798605914570427945055208640384218469111438408345424338893652923941552893606133066783001743721804859308011765507616515353882559991735865794891472781955621601467016660304188272123202130977476560852093272543539966026915472638392018462692756028817601255
|
||||
719945347 612820861 103551249110130410018728043034553056272870332237608830696804104933749752848182147616875273399120950956495972830177071656956289995248469136767050516935071277259217339496102844766065836859503647533631994664364053659677674596380230790347281302210808329346735637394258018381272973124437749621859047096780954428763
|
||||
1030625109 1519412381 15696617275088442746387785148060623054817901281945029743077460769180096631404983383910114661025034557230747207080210469011273591184527303007260363112037932265980126744700626024259985586947347501172863220738584453809309462129610346067407238209251289710742647393829531889303218223237301268534338307710560528439
|
||||
1711254768 1710707291 57671766580359527580383190392835992822988951359063099518333951473557157636791373831886967456320589708220219137556141104065094734173377513568373511612097050435132426608350879787688784646390242899955969071718348216328885834450215105058725433533776719158074043390881257587614495125963197168525883771897032429145
|
||||
350065369 319208735 44521456496863698728911963510653524876630475042295240074435222668882607096381437705850621136342821688618111659046306438623837465097724847737566157513351593063095577843263064035230462006868686576892037899378382406468120801597507834123281075093108794208153836881908434178839513489161646768450411118658866064760
|
||||
2060218994 1946043223 56312469398022909670236635086334904553302665496424591277087996113064393075310693844995965663947160222486178761741935506327835516277624460430181450292802834360724976701838361338230904004764511115279873515265325364671729600765057941485718305803874368460265173324375012707038078949514720443784809672434739391394
|
||||
348859478 486047271 63578529904279717544096579659734885121575283886072626718230632949600891106018451131129915865157675764791879663149288069798959505461654979937263948081560345222746334083402817181164255208790802816536212306902000509334761465449621953806270899950736579351124776383450108496252367170418747525612150563944975123906
|
||||
1012847796 1311216437 107243486601777772242638374457577339776317528440551074937135087437181884726459082109032187432358497015564158022857522392034581988349463322793155498885898276448910563934149930379053835676169014345745737841013305105289515557002942278171260275549569040668192618881235525671100756834785472005323827534045854021808
|
||||
1108188659 73002956 151810407586486667408500610375120927048683500513617431444670840241105574837701928593342245869128797827409414723271900961746330458448581633550115101600384307415146567797051023727766743006773542272526168313129133103058023736384944187039543948615045687254043611794926502253898300807539332514119558228945387167129
|
||||
1367891527 957164137 106888874248390844568539366153235739322099571679913873665077300044384432133087328354115380340807163549209282323027334598550750155549975114208460003069900549945106924101337174939911191001778776920788324219234143471273850920009578258747072782983631129326451246547584416492036977756842649955247390532642313031673
|
||||
1109319782 312705549 68015190517529836158634537187194145539209089151286211608940739126031607591236786876471227901028349157506546942329120582174574792522929377067808957872180985535362179866434055727341930725758279092655515659945664689974113139170079360543337269872976473433045950679959300152245802435127006127508284128226462808242
|
||||
77629902 1442208847 80002290434058357698705037287975366182731667140415670086832039653095542318592553515737200055739316505804591069679885064388918352070456242079053263046801427045473800954002156858264359891351667747947419377687560365442620710551484084591458509139700723197713694698034159851521977928611736821392017020477832037627
|
||||
1876665427 42392232 94638321177007894302596716790742601595610267055803051893624262442254201910985079684859058170169970420428917385076321338591735591117741499259022286688741758915429225227910702796255294628145448897362890044237980198958757175908654342104958253051607028469935368687936664986431151922321609065078691893879183189566
|
||||
559635525 1782490275 71365295096950865667427967092027725943054589808884646377867956234326896501650860934260905567087143525158504721587985301638221372965891635800328428504369765880956526297788284176796001565732103141822914955442743632126166019769189834699258461912602048002960149362882398622111007162709444738907309082349930416022
|
||||
743575094 32085276 110453584602878746921666429659148701413696049424461554973529870857842263810553552249241246313332783204009612578170167391820378603413812193480492843470042238103670641705732755583940134259794253885826115668806244330875357074130716388274584300227667628005544555311079499447940768673150499033922449576383527638186
|
||||
129818206 137481306 140835473021876998102027624369898079740454145360699735493249477450544517213808389172240396819192163023303266715591396745357472463341356969319556862236385556442904650009255138279232984377682804793224148996875324569988553808409865099882747099149617352970774643108291836908871124753511856578160489828404865664010
|
||||
570689556 1980693879 108353275894436996626884805554770441694866167783124178905252902978286824751598925059178987939656961896173921225105217325495780672752694383439806863122466053616930970271706866769895033633709670957150865005763659847698663978549871624628298476651867451354816053985969930735100533712902146229305011837945607699037
|
||||
2103057616 691067770 27024056452709622585420653808400360576905666723601175215091499609471301967744143329187436673102391151329548614036436716051750524604202541651425479133617399916946398092715923340837394931898418514658066714568415577105694330058750941172815095999450748361179045856199026312487393802486505084466623313733605784416
|
||||
481705774 1641440342 117722260864906582664053412535574009960206959347375143271559843536103545468155917636456429488071536410856812908716077868452921005581676036410474437330482920141777150620686622782118823530416466223519936589968714322291361670902315520017103387742935706013660879451297004924070011539277017717095949755265539759012
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
130706940119084053627151828062879423433929180135817317038378606310097533503449582079984816816837125851552273641820339909167103200910805078308128174143174269944095368580519322913514764528012639683546377014716235962867583443566164615728897857285824741767070432119909660645255499710701356135207437699643611094585 139808169914464096465921128085565621767096724855516655439365028496569658038844954238931647642811548254956660405394116677296461848124300258439895306367561416289126854788101396379292925819850897858045772500578222021901631436550118958972312221974009238050517034542286574826081826542722270952769078386418682059418
|
||||
91966407878983240112417790733941098492087186469785726449910011271065622315680646030230288265496017310433513856308693810812043160919214636748486185212617634222158204354206411031403206076739932806412551605172319515223573351072757800448643935018534945933808900467686115619932664888581913179496050117713298715475 88086484332488517006277516020842172054013692832175783214603951240851750819999098631851571207693874357651112736088114133607400684776234181681933311972926752846692615822043533641407510569745606256772455614745111122033229877596984718963046218854103292937700694160593653595134512369959987897086639788909618660591
|
||||
94633950701209990078055218830969910271587805983595045023718108184189787131629772007048606080263109446462048743696369276578815611098215686598630889831104860221067872883514840819381234786050098278403321905311637820524177879167250981289318356078312300538871435101338967079907049912435983871847334104247675360099 136836393035803488129856151345450008294260680733328546556640578838845312279198933806383329293483852515700876505956362639881210101974254765087350842271260064592406308509078284840473735904755203614987286456952991025347168970462354352741159076541157478949094536405618626397435745496863324654768971213730622037771
|
||||
24685127248019769965088146297942173464487677364928435784091685260262292485380918213538979925891771204729738138857126454465630594391449913947358655368215901119137728648638547728497517587701248406019427282237279437409508871300675355166059811431191200555457304463617727969228965042729205402243355816702436970430 103488011917988946858248200111251786178288940265978921633592888293430082248387786443813155999158786903216094876295371112716734481877806417714913656921169196196571699893360825510307056269738593971532017994987406325068886420548597161498019372380511676314312298122272401348856314619382867707981701472607230523868
|
||||
116791045850880292989786005885944774698035781824784400772676299590038746153860847252706167458966356897309533614849402276819438194497464696186624618374179812548893947178936305721131565012344462048549467883494038577857638815386798694225798517783768606048713198211730870155881426709644960689953998714045816205549 25767875422998856261320430397505398614439586659207416236135894343577952114994718158163212134503751463610021489053571733974769536157057815413209619147486931502025658987681202196476489081257777148377685478756033509708349637895740799542063593586769082830323796978935454479273531157121440998804334199442003857410
|
||||
75582226959658406842894734694860761896800153014775231713388264961517169436476322183886891849966756849783437334069692683523296295601533803799559985845105706728538458624387103621364117548643541824878550074680443708148686601108223917493525070861593238005735446708555769966855130921562955491250908613793521520082 51100990616369611694975829054222013346248289055987940844427061856603230021472379888102172458517294080775792439385531234808129302064303666640376750139242970123503857186428797403843206765926798353022284672682073397573130625177187185114726049347844460311761033584101482859992951420083621362870301150543916815123
|
||||
22852401165908224137274273646590366934616265607879280260563022941455466297431255072303172649495519837876946233272420969249841381161312477263365567831938496555136366981954001163034914812189448922853839616662859772087929140818377228980710884492996109434435597500854043325062122184466315338260530734979159890875 35017410720028595029711778101507729481023945551700945988329114663345341120595162378885287946069695772429641825579528116641336456773227542256911497084242947904528367986325800537695079726856460817606404224094336361853766354225558025931211551975334149258299477750615397616908655079967952372222383056221992235704
|
||||
37364490883518159794654045194678325635036705086417851509136183713863262621334636905291385255662750747808690129471989906644041585863034419130023070856805511017402434123099100618568335168939301014148587149578150068910141065808373976114927339040964292334109797421173369274978107389084873550233108940239410902552 40916262212189137562350357241447034318002130016858244002788189310078477605649010031339865625243230798681216437501833540185827501244378529230150467789369234869122179247196276164931090039290879808162629109742198951942358028123056268054775108592325500609335947248599688175189333996086475013450537086042387719925
|
||||
42030470670714872936404499074069849778147578537708230270030877866700844337372497704027708080369726758812896818567830863540507961487472657570488625639077418109017434494794778542739932765561706796300920251933107517954265066804108669800167526425723377411855061131982689717887180411017924173629124764378241885274 124652439272864857598747946875599560379786580730218192165733924418687522301721706620565030507816884907589477351553268146177293719586287258662025940181301472851649975563004543250656807255226609296537922304346339513054316391667044301386950180277940536542183725690479451746977789001659540839582630251935163344393
|
||||
33176766914206542084736303652243484580303865879984981189372762326078776390896986743451688462101732968104375838228070296418541745483112261133079756514082093269959937647525005374035326747696591842313517634077723301677759648869372517403529488493581781546743147639937580084065663597330159470577639629864369972900 67485835091897238609131069363014775606263390149204621594445803179810038685760826651889895397414961195533694176706808504447269558421955735607423135937153901140512527504198912146656610630396284977496295289999655140295415981288181545277299615922576281262872097567020980675200178329219970170480653040350512964539
|
||||
131497983897702298481056962402569646971797912524360547236788650961059980711719600424210346263081838703940277066368168874781981151411096949736205282734026497995296147418292226818536168555712128736975034272678008697869326747592750850184857659420541708058277866000692785617873742438060271311159568468507825422571 5400380840349873337222394910303409203226429752629134721503171858543984393161548520471799318518954232197106728096866840965784563043721652790856860155702760027304915133166173298206604451826182024471262142046935060360564569939062438160049193241369468208458085699995573492688298015026628427440418009025072261296
|
||||
83265103005695640943261961853521077357830295830250157593141844209296716788437615940096402365505416686459260302419338241462783388722843946886845478224048360927114533590583464979009731440049610985062455108831881153988321298531365779084012803908832525921630534096740755274371500276660832724874701671184539131864 141285570207910287798371174771658911045525474449663877845558585668334618068814605961306961485855329182957174312715910923324965889174835444049526313968571611940626279733302104955951067959291852710640374412577070764165811275030632465290729619533330733368808295932659463215921521905553936914975786500018720073003
|
||||
68435028583616495789148116911096163791710022987677894923742899873596891423986951658100606742052014161171185231735413902875605720814417622409817842932759492013585936536452615480700628719795872201528559780249210820284350401473564919576289210869896327937002173624497942136329576506818749730506884927872345019446 134655528287263100540003157571441260698452262106680191153945271167894435782028803135774578949200580551016388918860856991026082917835209212892423567114480975540305860034439015788120390011692862968771136814777768281366591257663821495720134621172848947971117885754539770645621669309650476331439675400544167728223
|
||||
97765390064836080322590528352647421920257073063706996347334558390461274981996865736612531330863478931481491964338380362350271734683183807511097331539820133036984271653285063355715726806139083282458695728902452215405696318402583540317419929113959816258829534543044153959951908676300847164682178008704099351835 92552521881196975294401505656851872247567784546370503402756239533783651371688190302773864319828182042605239246779598629409815474038541272600580320815319709309111399294952620375093803971373108792300726524826209329889463854451846561437729676142864421966497641824498079067929811613947148353921163336822026640804
|
||||
145767094672933012300753301037546647564595762930138884463767054235112032706630891961371504668013023047595721138624016493638510710257541241706724342585654715468628355455898091951826598092812212209834746162089753649871544789379424903025374228231365026585872808685759231756517703720396301355299998059523896918448 116669462839999965355861187716880953863237226719689755457884414384663576662696981997535568446560375442532084973721539944428004043491468494548231348032618218312515409944970197902589794303562379864012797605284844016184274353252071642511293089390472576498394410829972525726474727579603392265177009323768966538608
|
||||
34172517877854802711907683049441723730724885305592620486269966708379625109832852005775048584124451699198484092407720344962116726808090368739361658889584507734617844212547181476646725256303630128954338675520938806905779837227983648887192531356390902975904503218654196581612781227843742951241442641220856414232 126013077261793777773236390821108423367648447987653714614732477073177878509574051196587476846560696305938891953527959347566502332765820074506907037627115954790645652211088723122982633069089920979477728376746424256704724173255656757918995039125823421607024407307091796807227896314403153380323770001854211384322
|
||||
9979624731056222925878866378063961280844793874828281622845276060532093809300121084179730782833657205171434732875093693074415298975346410131191865198158876447591891117577190438695367929923494177555818480377241891190442070100052523008290671797937772993634966511431668500154258765510857129203107386972819651767 76559085024395996164590986654274454741199399364851956129137304209855150918182685643729981600389513229011956888957763987167398150792454613751473654448162776379362213885827651020309844507723069713820393068520302223477225569348080362344052033711960892643036147232270133731530049660264526964146237693063093765111
|
||||
18162696663677410793062235946366423954875282212790518677684260521370996677183041664345920941714064628111537529793170736292618705900247450994864220481135611781148410617609559050220262121494712903009168783279356915189941268264177631458029177102542745167475619936272581126346266816618866806564180995726437177435 63244550218824945129624987597134280916829928261688093445040235408899092619821698537312158783367974202557699994650667088974727356690181336666077506063310290098995215324552449858513870629176838494348632073938023916155113126203791709810160925798130199717340478393420816876665127594623142175853115698049952126277
|
||||
4817943161362708117912118300716778687157593557807116683477307391846133734701449509121209661982298574607233039490570567781316652698287671086985501523197566560479906850423709894582834963398034434055472063156147829131181965140631257939036683622084290629927807369457311894970308590034407761706800045378158588657 61612160237840981966750225147965256022861527286827877531373888434780789812764688703260066154973576040405676432586962624922734102370509771313805122788566405984830112657060375568510809122230960988304085950306616401218206390412815884549481965750553137717475620505076144744211331973240555181377832337912951699135
|
||||
36363324947629373144612372870171042343590861026293829791335153646774927623889458346817049419803031378037141773848560341251355283891019532059644644509836766167835557471311319194033709837770615526356168418160386395260066262292757953919140150454538786106958252854181965875293629955562111756775391296856504912587 86831561031659073326747216166881733513938228972332631084118628692228329095617884068498116676787029033973607066377816508795286358748076949738854520048303930186595481606562375516134920902325649683618195251332651685732712539073110524182134321873838204219194459231650917098791250048469346563303077080880339797744
|
||||
26406869969418301728540993821409753036653370247174689204659006239823766914991146853283367848649039747728229875444327879875275718711878211919734397349994000106499628652960403076186651083084423734034070082770589453774926850920776427074440483233447839259180467805375782600203654373428926653730090468535611335253 100139935381469543084506312717977196291289016554846164338908226931204624582010530255955411615528804421371905642197394534614355186795223905217732992497673429554618838376065777445760355552020655667172127543653684405493978325270279321013143828897100500212200358450649158287605846102419527584313353072518101626851
|
||||
92613116984760565837109105383781193800503303131143575169488835702472221039082994091847595094556327985517286288659598094631489552181233202387028607421487026032402972597880028640156629614572656967808446397456622178472130864873587747608262139844319805074476178618930354824943672367046477408898479503054125369731 30023391082615178562263328892343821010986429338255434046051061316154579824472412477397496718186615690433045030046315908170615910505869972621853946234911296439134838951047107272129711854649412919542407760508235711897489847951451200722151978578883748353566191421685659370090024401368356823252748749449302536931
|
||||
31485815361342085113278193504381994806529237123359718043079410511224607873725611862217941085749929342777366642477711445011074784469367917758629403998067347054115844421430072631339788256386509261291675080191633908849638316409182455648806133048549359800886124554879661473112614246869101243501787363247762961784 114503770698890543429251666713050844656853278831559195214556474458830029271801818536133531843456707474500106283648085144619097572354066554819887152106174400667929098257361286338795493838820850475790977445807435511982704395422526800272723708548541616513134676140304653112325071112865020365664833601046215694089
|
||||
76882090884790547431641385530818076533805072109483843307806375918023300052767710853172670987385376253156912268523505310624133905633437815297307463917718596711590885553760690350221265675690787249135345226947453988081566088302642706234126002514517416493192624887800567412565527886687096028028124049522890448168 15056463217273240496622619354104573042767532856243223052125822509781815362480522535564283485059790932505429110157271454207173426525345813426696743168079246510944969446574354255284952839036431873039487144279164893710061580467579842173706653409487110282515691099753380094215805485573768509475850463001549608836
|
||||
52345178981230648108672997265819959243255047568833938156267924185186047373470984278294897653277996726416846430969793375429223610099546622112048283560483136389901514170116723365811871938630317974150540909650396429631704968748113009366339718498979597226137532343384889080245796447593572468846438769413505393967 32148494517199936472358017244372701214529606506776255341152991328091526865643069587953759877295255050519124541457805199596762210567333445908166076384465183589342153762720515477404466193879418014196727238972417616122646440870364200208488239778452378059236162633837824948613596114768455832408342040970780086
|
||||
41095268619128788015767564971105114602454449306041732792746397800275041704886345704294273937217484580365505320134717320083763349380629342859670693445658118959823430378844830923452105707338162448974869312012791385772125813291388247857971218575518319578818336960572244046567099555399203328678654466958536663208 92166550199033418923713824997841892577149715275633481076285269142670107687867024550593869464613175882141630640739938334001211714884975032600306279287443909448541179109981755796752132502127330056736913454039526413284519137059580845856736918773597087836203497066909257930043736166431682872083389105176299181629
|
||||
40049143661018504441607875135884755310012910557581028447435354354754245291878800571089144452035026644953322330676651798951447670184106450649737772686119714700743396359069052813433030118630105307022867200053964644574786137276428546712005171080129190959914708907200288299169344380390093918556722227705114244981 108159089972386282154772900619022507336076619354549601813179459338897131937353741544606392560724999980281424266891537298473163753022749859939445293926707568015958367188089915420630082556748668489756475027008449860889202622698060097015044886961901650857610841562477736791450080980702347705778074391774667412741
|
||||
69905259478181995876884927656894491893594530150260951315109404530530357998889589977208787140430938039028941393673520799460431992051993157468616168400324834880926190141581037597526917869362292931957289043707855837933490285814769110495657056206391880865972389421774822461752702336812585852278453803972600333734 71821415380277072313878763768684432371552628204186742842154591000123020597011744840460964835414360968627162765288463383113375595799297552681618876474019263288277398833725479226930770694271622605114061622753165584075733358178384410640349907375170170910499615355511313349300918885560131539570707695789106185664
|
||||
26945345439378873515011714350080059082081595419023056538696949766471272811362104837806324694947413603019863785876836706911406330379274553386254346050697348395574746891556054334903838949157798006141473389066020212044825140294048709654273698482867946522782450500680195477050110145664069582549935651920545151500 80313315938584480048642653013876614091607852535582224914294013785054094052454758327935781971746329853786568549510067442145637007308960551652864942042189241081946607011847245280773379099020221884296226818685556430275385068764313042226925852500883894269809033380734632866477789520106865758504064806906234130588
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
test_case = 1
|
||||
key = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b
|
||||
key_len = 20
|
||||
data = "Hi There"
|
||||
data_len = 8
|
||||
digest = 0xb617318655057264e28bc0b6fb378c8ef146be00
|
||||
|
||||
test_case = 2
|
||||
key = "Jefe"
|
||||
key_len = 4
|
||||
data = "what do ya want for nothing?"
|
||||
data_len = 28
|
||||
digest = 0xeffcdf6ae5eb2fa2d27416d5f184df9c259a7c79
|
||||
|
||||
test_case = 3
|
||||
key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
key_len = 20
|
||||
data = 0xdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
|
||||
data_len = 50
|
||||
digest = 0x125d7342b9ac11cd91a39af48aa17b4f63f175d3
|
||||
|
||||
test_case = 4
|
||||
key = 0x0102030405060708090a0b0c0d0e0f10111213141516171819
|
||||
key_len = 25
|
||||
data = 0xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd
|
||||
data_len = 50
|
||||
digest = 0x4c9007f4026250c6bc8414f9bf50c86c2d7235da
|
||||
|
||||
test_case = 5
|
||||
key = 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c
|
||||
key_len = 20
|
||||
data = "Test With Truncation"
|
||||
data_len = 20
|
||||
digest = 0x4c1a03424b55e07fe7f27be1d58bb9324a9a5a04
|
||||
digest-96 = 0x4c1a03424b55e07fe7f27be1
|
||||
|
||||
test_case = 6
|
||||
key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
key_len = 80
|
||||
data = "Test Using Larger Than Block-Size Key - Hash Key First"
|
||||
data_len = 54
|
||||
digest = 0xaa4ae5e15272d00e95705637ce8a3b55ed402112
|
||||
|
||||
test_case = 7
|
||||
key = 0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
|
||||
key_len = 80
|
||||
data = "Test Using Larger Than Block-Size Key and Larger Than One Block-Size Data"
|
||||
data_len = 73
|
||||
digest = 0xe8e99d0f45237d786d6bbaa7965c7808bbff1a91
|
||||
|
|
@ -1,594 +0,0 @@
|
|||
Num Tests: 73
|
||||
|
||||
OpenID link parsing test cases
|
||||
Copyright (C) 2005-2006, JanRain, Inc.
|
||||
See COPYING for license information.
|
||||
|
||||
File format
|
||||
-----------
|
||||
|
||||
All text before the first triple-newline (this chunk) should be ignored.
|
||||
|
||||
This file may be interpreted as Latin-1 or UTF-8.
|
||||
|
||||
Test cases separated by three line separators (`\n\n\n'). The test
|
||||
cases consist of a headers section followed by a data block. These are
|
||||
separated by a double newline. The headers consist of the header name,
|
||||
followed by a colon, a space, the value, and a newline. There must be
|
||||
one, and only one, `Name' header for a test case. There may be zero or
|
||||
more link headers. The `Link' header consists of whitespace-separated
|
||||
attribute pairs. A link header with an empty string as a value
|
||||
indicates an empty but present link tag. The attribute pairs are `='
|
||||
separated and not quoted.
|
||||
|
||||
Optional Links and attributes have a trailing `*'. A compilant
|
||||
implementation may produce this as output or may not. A compliant
|
||||
implementation will not produce any output that is absent from this
|
||||
file.
|
||||
|
||||
|
||||
Name: Well-formed link rel (in CAPS)
|
||||
Link: rel=openid.server href=http://www.myopenid.com/server
|
||||
|
||||
<HTML>
|
||||
<HEAD>
|
||||
<LINK REL="openid.server"
|
||||
HREF="http://www.myopenid.com/server" />
|
||||
</HEAD>
|
||||
</HTML>
|
||||
|
||||
|
||||
Name: No link tag at all
|
||||
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
</html>
|
||||
|
||||
|
||||
Name: Link element first
|
||||
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside HTML, not head
|
||||
|
||||
<html>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside head, not html
|
||||
|
||||
<head>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside html, after head
|
||||
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside html, before head
|
||||
|
||||
<html>
|
||||
<link>
|
||||
<head>
|
||||
|
||||
|
||||
Name: Link before html and head
|
||||
|
||||
<link>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
|
||||
Name: Link after html document with head
|
||||
|
||||
<html>
|
||||
<head>
|
||||
</head>
|
||||
</html>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside html inside head, inside another html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<html>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside html inside head
|
||||
|
||||
<head>
|
||||
<html>
|
||||
<link>
|
||||
|
||||
|
||||
Name: link inside body inside head inside html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<body>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside head inside head inside html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<head>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside script inside head inside html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<script>
|
||||
<link>
|
||||
</script>
|
||||
|
||||
|
||||
Name: Link inside comment inside head inside html
|
||||
|
||||
<html>
|
||||
<head/>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Link inside of head after short head
|
||||
|
||||
<html>
|
||||
<head/>
|
||||
<head>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Plain vanilla
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Ignore tags in the <script:... > namespace
|
||||
Link*:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<script:paddypan>
|
||||
<link>
|
||||
</script:paddypan>
|
||||
|
||||
|
||||
Name: Short link tag
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link/>
|
||||
|
||||
|
||||
Name: Spaces in the HTML tag
|
||||
Link:
|
||||
|
||||
<html >
|
||||
<head>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Spaces in the head tag
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head >
|
||||
<link>
|
||||
|
||||
|
||||
Name: Spaces in the link tag
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link >
|
||||
|
||||
|
||||
Name: No whitespace
|
||||
Link:
|
||||
|
||||
<html><head><link>
|
||||
|
||||
|
||||
Name: Closed head tag
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
</head>
|
||||
|
||||
|
||||
Name: One good, one bad (after close head)
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
</head>
|
||||
<link>
|
||||
|
||||
|
||||
Name: One good, one bad (after open body)
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
<body>
|
||||
<link>
|
||||
|
||||
|
||||
Name: ill formed (missing close head)
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
</html>
|
||||
|
||||
|
||||
Name: Ill formed (no close head, link after </html>)
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
</html>
|
||||
<link>
|
||||
|
||||
|
||||
Name: Ignore random tags inside of html
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<delicata>
|
||||
<head>
|
||||
<title>
|
||||
<link>
|
||||
|
||||
|
||||
Name: case-folding
|
||||
Link*:
|
||||
|
||||
<HtMl>
|
||||
<hEaD>
|
||||
<LiNk>
|
||||
|
||||
|
||||
Name: unexpected tags
|
||||
Link:
|
||||
|
||||
<butternut>
|
||||
<html>
|
||||
<summer>
|
||||
<head>
|
||||
<turban>
|
||||
<link>
|
||||
|
||||
|
||||
Name: un-closed script tags
|
||||
Link*:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<script>
|
||||
<link>
|
||||
|
||||
|
||||
Name: un-closed script tags (no whitespace)
|
||||
Link*:
|
||||
|
||||
<html><head><script><link>
|
||||
|
||||
|
||||
Name: un-closed comment
|
||||
Link*:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<!--
|
||||
<link>
|
||||
|
||||
|
||||
Name: un-closed CDATA
|
||||
Link*:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<![CDATA[
|
||||
<link>
|
||||
|
||||
|
||||
Name: cdata-like
|
||||
Link*:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<![ACORN[
|
||||
<link>
|
||||
]]>
|
||||
|
||||
|
||||
Name: comment close only
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
-->
|
||||
|
||||
|
||||
Name: Vanilla, two links
|
||||
Link:
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
<link>
|
||||
|
||||
|
||||
Name: extra tag, two links
|
||||
Link:
|
||||
Link:
|
||||
|
||||
<html>
|
||||
<gold nugget>
|
||||
<head>
|
||||
<link>
|
||||
<link>
|
||||
|
||||
|
||||
Name: case-fold, body ends, two links
|
||||
Link:
|
||||
Link*:
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link>
|
||||
<LiNk>
|
||||
<body>
|
||||
<link>
|
||||
|
||||
|
||||
Name: simple, non-quoted rel
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link rel=openid.server>
|
||||
|
||||
|
||||
Name: short tag has rel
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link rel=openid.server/>
|
||||
|
||||
|
||||
Name: short tag w/space has rel
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link rel=openid.server />
|
||||
|
||||
|
||||
Name: extra non-attribute, has rel
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link hubbard rel=openid.server>
|
||||
|
||||
|
||||
Name: non-attr, has rel, short
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link hubbard rel=openid.server/>
|
||||
|
||||
|
||||
Name: non-attr, has rel, short, space
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link hubbard rel=openid.server />
|
||||
|
||||
|
||||
Name: misplaced slash has rel
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link / rel=openid.server>
|
||||
|
||||
|
||||
Name: quoted rel
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link rel="openid.server">
|
||||
|
||||
|
||||
Name: single-quoted rel
|
||||
Link: rel=openid.server
|
||||
|
||||
<html><head><link rel='openid.server'>
|
||||
|
||||
|
||||
Name: two links w/ rel
|
||||
Link: x=y
|
||||
Link: a=b
|
||||
|
||||
<html><head><link x=y><link a=b>
|
||||
|
||||
|
||||
Name: non-entity
|
||||
Link: x=&y
|
||||
|
||||
<html><head><link x=&y>
|
||||
|
||||
|
||||
Name: quoted non-entity
|
||||
Link: x=&y
|
||||
|
||||
<html><head><link x="&y">
|
||||
|
||||
|
||||
Name: quoted entity
|
||||
Link: x=&
|
||||
|
||||
<html><head><link x="&">
|
||||
|
||||
|
||||
Name: entity not processed
|
||||
Link: x=
|
||||
|
||||
<html><head><link x="">
|
||||
|
||||
|
||||
Name: <
|
||||
Link: x=<
|
||||
|
||||
<html><head><link x="<">
|
||||
|
||||
|
||||
Name: >
|
||||
Link: x=>
|
||||
|
||||
<html><head><link x=">">
|
||||
|
||||
|
||||
Name: "
|
||||
Link: x="
|
||||
|
||||
<html><head><link x=""">
|
||||
|
||||
|
||||
Name: &"
|
||||
Link: x=&"
|
||||
|
||||
<html><head><link x="&"">
|
||||
|
||||
|
||||
Name: mixed entity and non-entity
|
||||
Link: x=&"…>
|
||||
|
||||
<html><head><link x="&"…>">
|
||||
|
||||
|
||||
Name: mixed entity and non-entity (w/normal chars)
|
||||
Link: x=x&"…>x
|
||||
|
||||
<html><head><link x="x&"…>x">
|
||||
|
||||
|
||||
Name: broken tags
|
||||
Link*: x=y
|
||||
|
||||
<html><head><link x=y<>
|
||||
|
||||
|
||||
Name: missing close pointy
|
||||
Link: z=y
|
||||
|
||||
<html><head><link x=y<link z=y />
|
||||
|
||||
|
||||
Name: missing attribute value
|
||||
Link: x=y y*=
|
||||
Link: x=y
|
||||
|
||||
<html><head><link x=y y=><link x=y />
|
||||
|
||||
|
||||
Name: Missing close pointy (no following)
|
||||
Link*: x=y
|
||||
|
||||
<html><head><link x=y
|
||||
|
||||
|
||||
Name: Should be quoted
|
||||
Link: x*=<
|
||||
|
||||
<html><head><link x="<">
|
||||
|
||||
|
||||
Name: Should be quoted (2)
|
||||
Link: x*=>
|
||||
|
||||
<html><head><link x=">">
|
||||
|
||||
|
||||
Name: Repeated attribute
|
||||
Link: x=y
|
||||
|
||||
<html><head><link x=z x=y>
|
||||
|
||||
|
||||
Name: Repeated attribute (2)
|
||||
Link: x=y
|
||||
|
||||
<html><head><link x=y x=y>
|
||||
|
||||
|
||||
Name: Two attributes
|
||||
Link: x=y y=z
|
||||
|
||||
<html><head><link x=y y=z>
|
||||
|
||||
|
||||
Name: Well-formed link rel="openid.server"
|
||||
Link: rel=openid.server href=http://www.myopenid.com/server
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<link rel="openid.server"
|
||||
href="http://www.myopenid.com/server" />
|
||||
</head>
|
||||
</html>
|
||||
|
||||
|
||||
Name: Well-formed link rel="openid.server" and "openid.delegate"
|
||||
Link: rel=openid.server href=http://www.myopenid.com/server
|
||||
Link: rel=openid.delegate href=http://example.myopenid.com/
|
||||
|
||||
<html><head><link rel="openid.server"
|
||||
href="http://www.myopenid.com/server" />
|
||||
<link rel="openid.delegate" href="http://example.myopenid.com/" />
|
||||
</head></html>
|
||||
|
||||
|
||||
Name: from brian's livejournal page
|
||||
Link: rel=stylesheet href=http://www.livejournal.com/~serotta/res/319998/stylesheet?1130478711 type=text/css
|
||||
Link: rel=openid.server href=http://www.livejournal.com/openid/server.bml
|
||||
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<link rel="stylesheet"
|
||||
href="http://www.livejournal.com/~serotta/res/319998/stylesheet?1130478711"
|
||||
type="text/css" />
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<meta name="foaf:maker"
|
||||
content="foaf:mbox_sha1sum '12f8abdacb5b1a806711e23249da592c0d316260'" />
|
||||
<meta name="robots" content="noindex, nofollow, noarchive" />
|
||||
<meta name="googlebot" content="nosnippet" />
|
||||
<link rel="openid.server"
|
||||
href="http://www.livejournal.com/openid/server.bml" />
|
||||
<title>Brian</title>
|
||||
</head>
|
||||
|
||||
|
||||
Name: non-ascii (Latin-1 or UTF8)
|
||||
Link: x=®
|
||||
|
||||
<html><head><link x="®">
|
||||
|
||||
|
||||
|
|
@ -1,650 +0,0 @@
|
|||
AA== 0
|
||||
AQ== 1
|
||||
Ag== 2
|
||||
Aw== 3
|
||||
BA== 4
|
||||
BQ== 5
|
||||
Bg== 6
|
||||
Bw== 7
|
||||
CA== 8
|
||||
CQ== 9
|
||||
Cg== 10
|
||||
Cw== 11
|
||||
DA== 12
|
||||
DQ== 13
|
||||
Dg== 14
|
||||
Dw== 15
|
||||
EA== 16
|
||||
EQ== 17
|
||||
Eg== 18
|
||||
Ew== 19
|
||||
FA== 20
|
||||
FQ== 21
|
||||
Fg== 22
|
||||
Fw== 23
|
||||
GA== 24
|
||||
GQ== 25
|
||||
Gg== 26
|
||||
Gw== 27
|
||||
HA== 28
|
||||
HQ== 29
|
||||
Hg== 30
|
||||
Hw== 31
|
||||
IA== 32
|
||||
IQ== 33
|
||||
Ig== 34
|
||||
Iw== 35
|
||||
JA== 36
|
||||
JQ== 37
|
||||
Jg== 38
|
||||
Jw== 39
|
||||
KA== 40
|
||||
KQ== 41
|
||||
Kg== 42
|
||||
Kw== 43
|
||||
LA== 44
|
||||
LQ== 45
|
||||
Lg== 46
|
||||
Lw== 47
|
||||
MA== 48
|
||||
MQ== 49
|
||||
Mg== 50
|
||||
Mw== 51
|
||||
NA== 52
|
||||
NQ== 53
|
||||
Ng== 54
|
||||
Nw== 55
|
||||
OA== 56
|
||||
OQ== 57
|
||||
Og== 58
|
||||
Ow== 59
|
||||
PA== 60
|
||||
PQ== 61
|
||||
Pg== 62
|
||||
Pw== 63
|
||||
QA== 64
|
||||
QQ== 65
|
||||
Qg== 66
|
||||
Qw== 67
|
||||
RA== 68
|
||||
RQ== 69
|
||||
Rg== 70
|
||||
Rw== 71
|
||||
SA== 72
|
||||
SQ== 73
|
||||
Sg== 74
|
||||
Sw== 75
|
||||
TA== 76
|
||||
TQ== 77
|
||||
Tg== 78
|
||||
Tw== 79
|
||||
UA== 80
|
||||
UQ== 81
|
||||
Ug== 82
|
||||
Uw== 83
|
||||
VA== 84
|
||||
VQ== 85
|
||||
Vg== 86
|
||||
Vw== 87
|
||||
WA== 88
|
||||
WQ== 89
|
||||
Wg== 90
|
||||
Ww== 91
|
||||
XA== 92
|
||||
XQ== 93
|
||||
Xg== 94
|
||||
Xw== 95
|
||||
YA== 96
|
||||
YQ== 97
|
||||
Yg== 98
|
||||
Yw== 99
|
||||
ZA== 100
|
||||
ZQ== 101
|
||||
Zg== 102
|
||||
Zw== 103
|
||||
aA== 104
|
||||
aQ== 105
|
||||
ag== 106
|
||||
aw== 107
|
||||
bA== 108
|
||||
bQ== 109
|
||||
bg== 110
|
||||
bw== 111
|
||||
cA== 112
|
||||
cQ== 113
|
||||
cg== 114
|
||||
cw== 115
|
||||
dA== 116
|
||||
dQ== 117
|
||||
dg== 118
|
||||
dw== 119
|
||||
eA== 120
|
||||
eQ== 121
|
||||
eg== 122
|
||||
ew== 123
|
||||
fA== 124
|
||||
fQ== 125
|
||||
fg== 126
|
||||
fw== 127
|
||||
AIA= 128
|
||||
AIE= 129
|
||||
AII= 130
|
||||
AIM= 131
|
||||
AIQ= 132
|
||||
AIU= 133
|
||||
AIY= 134
|
||||
AIc= 135
|
||||
AIg= 136
|
||||
AIk= 137
|
||||
AIo= 138
|
||||
AIs= 139
|
||||
AIw= 140
|
||||
AI0= 141
|
||||
AI4= 142
|
||||
AI8= 143
|
||||
AJA= 144
|
||||
AJE= 145
|
||||
AJI= 146
|
||||
AJM= 147
|
||||
AJQ= 148
|
||||
AJU= 149
|
||||
AJY= 150
|
||||
AJc= 151
|
||||
AJg= 152
|
||||
AJk= 153
|
||||
AJo= 154
|
||||
AJs= 155
|
||||
AJw= 156
|
||||
AJ0= 157
|
||||
AJ4= 158
|
||||
AJ8= 159
|
||||
AKA= 160
|
||||
AKE= 161
|
||||
AKI= 162
|
||||
AKM= 163
|
||||
AKQ= 164
|
||||
AKU= 165
|
||||
AKY= 166
|
||||
AKc= 167
|
||||
AKg= 168
|
||||
AKk= 169
|
||||
AKo= 170
|
||||
AKs= 171
|
||||
AKw= 172
|
||||
AK0= 173
|
||||
AK4= 174
|
||||
AK8= 175
|
||||
ALA= 176
|
||||
ALE= 177
|
||||
ALI= 178
|
||||
ALM= 179
|
||||
ALQ= 180
|
||||
ALU= 181
|
||||
ALY= 182
|
||||
ALc= 183
|
||||
ALg= 184
|
||||
ALk= 185
|
||||
ALo= 186
|
||||
ALs= 187
|
||||
ALw= 188
|
||||
AL0= 189
|
||||
AL4= 190
|
||||
AL8= 191
|
||||
AMA= 192
|
||||
AME= 193
|
||||
AMI= 194
|
||||
AMM= 195
|
||||
AMQ= 196
|
||||
AMU= 197
|
||||
AMY= 198
|
||||
AMc= 199
|
||||
AMg= 200
|
||||
AMk= 201
|
||||
AMo= 202
|
||||
AMs= 203
|
||||
AMw= 204
|
||||
AM0= 205
|
||||
AM4= 206
|
||||
AM8= 207
|
||||
ANA= 208
|
||||
ANE= 209
|
||||
ANI= 210
|
||||
ANM= 211
|
||||
ANQ= 212
|
||||
ANU= 213
|
||||
ANY= 214
|
||||
ANc= 215
|
||||
ANg= 216
|
||||
ANk= 217
|
||||
ANo= 218
|
||||
ANs= 219
|
||||
ANw= 220
|
||||
AN0= 221
|
||||
AN4= 222
|
||||
AN8= 223
|
||||
AOA= 224
|
||||
AOE= 225
|
||||
AOI= 226
|
||||
AOM= 227
|
||||
AOQ= 228
|
||||
AOU= 229
|
||||
AOY= 230
|
||||
AOc= 231
|
||||
AOg= 232
|
||||
AOk= 233
|
||||
AOo= 234
|
||||
AOs= 235
|
||||
AOw= 236
|
||||
AO0= 237
|
||||
AO4= 238
|
||||
AO8= 239
|
||||
APA= 240
|
||||
APE= 241
|
||||
API= 242
|
||||
APM= 243
|
||||
APQ= 244
|
||||
APU= 245
|
||||
APY= 246
|
||||
APc= 247
|
||||
APg= 248
|
||||
APk= 249
|
||||
APo= 250
|
||||
APs= 251
|
||||
APw= 252
|
||||
AP0= 253
|
||||
AP4= 254
|
||||
AP8= 255
|
||||
AQA= 256
|
||||
AQE= 257
|
||||
AQI= 258
|
||||
AQM= 259
|
||||
AQQ= 260
|
||||
AQU= 261
|
||||
AQY= 262
|
||||
AQc= 263
|
||||
AQg= 264
|
||||
AQk= 265
|
||||
AQo= 266
|
||||
AQs= 267
|
||||
AQw= 268
|
||||
AQ0= 269
|
||||
AQ4= 270
|
||||
AQ8= 271
|
||||
ARA= 272
|
||||
ARE= 273
|
||||
ARI= 274
|
||||
ARM= 275
|
||||
ARQ= 276
|
||||
ARU= 277
|
||||
ARY= 278
|
||||
ARc= 279
|
||||
ARg= 280
|
||||
ARk= 281
|
||||
ARo= 282
|
||||
ARs= 283
|
||||
ARw= 284
|
||||
AR0= 285
|
||||
AR4= 286
|
||||
AR8= 287
|
||||
ASA= 288
|
||||
ASE= 289
|
||||
ASI= 290
|
||||
ASM= 291
|
||||
ASQ= 292
|
||||
ASU= 293
|
||||
ASY= 294
|
||||
ASc= 295
|
||||
ASg= 296
|
||||
ASk= 297
|
||||
ASo= 298
|
||||
ASs= 299
|
||||
ASw= 300
|
||||
AS0= 301
|
||||
AS4= 302
|
||||
AS8= 303
|
||||
ATA= 304
|
||||
ATE= 305
|
||||
ATI= 306
|
||||
ATM= 307
|
||||
ATQ= 308
|
||||
ATU= 309
|
||||
ATY= 310
|
||||
ATc= 311
|
||||
ATg= 312
|
||||
ATk= 313
|
||||
ATo= 314
|
||||
ATs= 315
|
||||
ATw= 316
|
||||
AT0= 317
|
||||
AT4= 318
|
||||
AT8= 319
|
||||
AUA= 320
|
||||
AUE= 321
|
||||
AUI= 322
|
||||
AUM= 323
|
||||
AUQ= 324
|
||||
AUU= 325
|
||||
AUY= 326
|
||||
AUc= 327
|
||||
AUg= 328
|
||||
AUk= 329
|
||||
AUo= 330
|
||||
AUs= 331
|
||||
AUw= 332
|
||||
AU0= 333
|
||||
AU4= 334
|
||||
AU8= 335
|
||||
AVA= 336
|
||||
AVE= 337
|
||||
AVI= 338
|
||||
AVM= 339
|
||||
AVQ= 340
|
||||
AVU= 341
|
||||
AVY= 342
|
||||
AVc= 343
|
||||
AVg= 344
|
||||
AVk= 345
|
||||
AVo= 346
|
||||
AVs= 347
|
||||
AVw= 348
|
||||
AV0= 349
|
||||
AV4= 350
|
||||
AV8= 351
|
||||
AWA= 352
|
||||
AWE= 353
|
||||
AWI= 354
|
||||
AWM= 355
|
||||
AWQ= 356
|
||||
AWU= 357
|
||||
AWY= 358
|
||||
AWc= 359
|
||||
AWg= 360
|
||||
AWk= 361
|
||||
AWo= 362
|
||||
AWs= 363
|
||||
AWw= 364
|
||||
AW0= 365
|
||||
AW4= 366
|
||||
AW8= 367
|
||||
AXA= 368
|
||||
AXE= 369
|
||||
AXI= 370
|
||||
AXM= 371
|
||||
AXQ= 372
|
||||
AXU= 373
|
||||
AXY= 374
|
||||
AXc= 375
|
||||
AXg= 376
|
||||
AXk= 377
|
||||
AXo= 378
|
||||
AXs= 379
|
||||
AXw= 380
|
||||
AX0= 381
|
||||
AX4= 382
|
||||
AX8= 383
|
||||
AYA= 384
|
||||
AYE= 385
|
||||
AYI= 386
|
||||
AYM= 387
|
||||
AYQ= 388
|
||||
AYU= 389
|
||||
AYY= 390
|
||||
AYc= 391
|
||||
AYg= 392
|
||||
AYk= 393
|
||||
AYo= 394
|
||||
AYs= 395
|
||||
AYw= 396
|
||||
AY0= 397
|
||||
AY4= 398
|
||||
AY8= 399
|
||||
AZA= 400
|
||||
AZE= 401
|
||||
AZI= 402
|
||||
AZM= 403
|
||||
AZQ= 404
|
||||
AZU= 405
|
||||
AZY= 406
|
||||
AZc= 407
|
||||
AZg= 408
|
||||
AZk= 409
|
||||
AZo= 410
|
||||
AZs= 411
|
||||
AZw= 412
|
||||
AZ0= 413
|
||||
AZ4= 414
|
||||
AZ8= 415
|
||||
AaA= 416
|
||||
AaE= 417
|
||||
AaI= 418
|
||||
AaM= 419
|
||||
AaQ= 420
|
||||
AaU= 421
|
||||
AaY= 422
|
||||
Aac= 423
|
||||
Aag= 424
|
||||
Aak= 425
|
||||
Aao= 426
|
||||
Aas= 427
|
||||
Aaw= 428
|
||||
Aa0= 429
|
||||
Aa4= 430
|
||||
Aa8= 431
|
||||
AbA= 432
|
||||
AbE= 433
|
||||
AbI= 434
|
||||
AbM= 435
|
||||
AbQ= 436
|
||||
AbU= 437
|
||||
AbY= 438
|
||||
Abc= 439
|
||||
Abg= 440
|
||||
Abk= 441
|
||||
Abo= 442
|
||||
Abs= 443
|
||||
Abw= 444
|
||||
Ab0= 445
|
||||
Ab4= 446
|
||||
Ab8= 447
|
||||
AcA= 448
|
||||
AcE= 449
|
||||
AcI= 450
|
||||
AcM= 451
|
||||
AcQ= 452
|
||||
AcU= 453
|
||||
AcY= 454
|
||||
Acc= 455
|
||||
Acg= 456
|
||||
Ack= 457
|
||||
Aco= 458
|
||||
Acs= 459
|
||||
Acw= 460
|
||||
Ac0= 461
|
||||
Ac4= 462
|
||||
Ac8= 463
|
||||
AdA= 464
|
||||
AdE= 465
|
||||
AdI= 466
|
||||
AdM= 467
|
||||
AdQ= 468
|
||||
AdU= 469
|
||||
AdY= 470
|
||||
Adc= 471
|
||||
Adg= 472
|
||||
Adk= 473
|
||||
Ado= 474
|
||||
Ads= 475
|
||||
Adw= 476
|
||||
Ad0= 477
|
||||
Ad4= 478
|
||||
Ad8= 479
|
||||
AeA= 480
|
||||
AeE= 481
|
||||
AeI= 482
|
||||
AeM= 483
|
||||
AeQ= 484
|
||||
AeU= 485
|
||||
AeY= 486
|
||||
Aec= 487
|
||||
Aeg= 488
|
||||
Aek= 489
|
||||
Aeo= 490
|
||||
Aes= 491
|
||||
Aew= 492
|
||||
Ae0= 493
|
||||
Ae4= 494
|
||||
Ae8= 495
|
||||
AfA= 496
|
||||
AfE= 497
|
||||
AfI= 498
|
||||
AfM= 499
|
||||
AfQ= 500
|
||||
AfU= 501
|
||||
AfY= 502
|
||||
Afc= 503
|
||||
Afg= 504
|
||||
Afk= 505
|
||||
Afo= 506
|
||||
Afs= 507
|
||||
Afw= 508
|
||||
Af0= 509
|
||||
Af4= 510
|
||||
Af8= 511
|
||||
AgA= 512
|
||||
ALDs7paJl5xPh6ORH61iDA6pONpV0rTjGiTkLEW2JsVsRKaRiS4AGn2PTR1UZXP0vXAmRXwdSegQgWPUp3Hm3RofRcDh1SykZBLif7ulau1hVO+rhwRyKc7F8F+7LcMf/v+s73eOXUDbbI2r52wfr7skZy/IELhsC8EK6HzhACI3 124241322153253947064453752054205174382289463089695815605736438952932114700118408072544073767229325045596832952652232288773280299665950768731398747700657715829631597019676014848183966683866396215048196276450953653433516126074463193382764063985175903718735372053536664711482497859539116009770850968340298474039
|
||||
AOzgU1s6Pd2IkrJlvGND8legXTe50nyDCocI5mwT9rW0YsisY5jaaEOcu51BAq9MmXBPeVX0k/jlXwH4Pn3mCpUAU1rEOsTdcmSJp35siKliDdhTZHHdZNMW+igfXGX5OCsA/BaBcGnE6NnrGWXKyTOoVUGQLEkL2T5yhNUaCT83 166340174936369324883416612727439279977041963320514134445183426741643586944819834936989524033374309932122967866930503619179389342537723598234062828695747850043368572301869699886931403612266216965783079972698791813140295203826980649434652168563255385527187360027803388963151668338040517316899628026707657178935
|
||||
AO8hrpw+lDiJ13JahLtCb1RenupQcNd0wlTSck9OLL8wB/x6gAoj0PTLV05eZIbz43N3GUSDmmckjlxdHXiBJ9rsoB0P95l1CWIV+4rXblCqxmOdmlm6VZ13bqbI0x7l0cjeMrkmk+yJ067WqUolqQBlUWMTuJVfkxALJYH5xr/C 167923899524385316022824282304301434707626789716026029252173742527362300338760906999615029022863637963070711762128687835779073122264515776657475985362344360699359591353388569856862973447791264902182048648600267737826849280828116753682917256540180401899752566540869918949003470368970029744573140084219550547906
|
||||
QxAn7yrdVs5tlHV+Glbqdaj67c6Ni8am3bBLOL8PV5HbdrLf2xIPmNugo6MfUwFSnT+ZPJ51+VTOsItaNwCFju0Eh1cqyP3JWyLRPE7emKuo6xRhf+5ik0pTg77LEF4JXW6ofDqirpR4alFi0G2d9yImQPphsYJwYGF/nNT8u0Q= 47093316905427544098193936500644355852669366083115552072584429220248776817916430034648347490325490701471113667554329499736495877969341478442613611948220957798780043076906836236556612316544460763366275536846463456405604189392790111985912854476264292503164100482712281088955640964034295834935468665872932715332
|
||||
AI9PVzrbJUvmCihwSFans1lBKwudGEZpWWu8pkSK2zVgzGhMvUoGgMp6TG2zsUd1tV8zv7KsVD2t6pXmjT1wPUynufq97GVHI06SGpflDTt30WboYRh3DgYxvso1sOjUXpnDezcaqc2Aiz4nV5MSShkBlyBjA8z2worHDE+uXqw0 100635651531872121827765663065728398779771663753008344681972226973080394359405041113312675686974926993279775427390065833081040771269307007695807025882757371805607979134114890454059957194316765342461291139168706134406917264848659448693866813989352429841300235734400772946895458374870482441457514575059390213172
|
||||
FiinVicXOqqRLpxcGTorQpSAGeQ/PfDOuzYK9ViFtmPv6D0cYPfhUH4qXEHOejvmX+0b4lfaX8MWPVZxlqpfXiU9BhG76HJxkLF4ysipukeOvhoHzvcxE5bnhSF1i//bOSifATBLBEZInwqSVg5tHHPuuCkwTL91NqhOulp7Lsk= 15560440884463435471963622630292643727112462888414585143143739400703889930416938984547754943252935620248108237258540176511252143752416771350868493435174026287082706690332705481726295797196444796135827460509780634261726494455068460028424141500629527968240913757449787164107068039175831847071025316475940056777
|
||||
aYrxyQN/hkBne2ayqo2/iDLF3DZGgk080SOMJfsj9h3Z1OfFZM7TJA+y+/O7niqatosvKrfHrAw+Qs7c6tCZ6NPwYJ4QJLOF9bqH2u2a3fkI954voNUctlUagYUJsZXV8hdhLM6NwUyIZ3ZFkPcpTZp7nKQQ84tr1a8VjDIT5/o= 74114640794666001532816944350975062126079079113921109750255283189037502412929005615388097912507598112836936032143435813588205939470002911374442844578739574773399427907766548612582213272643279263782396527705126350063372192910060171635870872236876399794128383338399728947176692692942605589343038282957050865658
|
||||
AMpCUeKUX/vtRslWiUUuXNl1KA9uDAWjMUkTrdsxxRDESI7iZIn3TR9lW+0kV5fzkLF18iYLAwSGBmX1PS/T0UVFmoBPJ9yS7yktNL0lpQ3noyGFn8HHZ6XB3FkH3jegIfGbvwwhnhhFzpHPrXlpO5iU5Y+rexzp2XHWt4yJGuIL 142031143422642739313498629438991149460874309300342349421794421544918823888598660275343727563280565210534243383322796489809683834300630555650331646026843796764549231159336347965502383849513994449309613369541991287590422095953275586374371960367000083487965487661436037637475372929033613295072397262739084075531
|
||||
AIMIQVz0JIEKEI+PREu94m3v9XoiU/Q0CpsSuqkwSSje+Wyul5ea9oU5qgtOpdkMUOW91BJo0DW/GMZ8v3C4qyyP29TtjCcAHObJi9hfLSlnTSuzXZnDStooYYKqzfToLToCaAJKCXiXAVW0vWtapLnyqafrf/KgyGZ5u4HfXKY0 92013973253053602863003242446596060337454881568126916916519869242232429836082762281129448384605359749247852792606718908482332975424967542242332487707042773885428473061056052851768940900752317020681189773407893371297668591494665352294885305475871917069040377145530889271334616499701769138948975263435137525300
|
||||
ANfP+zPBTR27afneyac1KJhOB5Pq3AXB+SoAXJvQI/GkSoNhw5KdfqoIkLcoJi8wClCm424Gm1AdrdGwDFOM/iKTSPkrvMag93+b2EbQGX66/n2X3YRFNkgq/Gtb+2M8oCcAL054Z/iiMD67aU5RWzjqS64ePHsn01bJ7dqLgpMO 151548639867177154896951257541227014781655576169318283047778755573323724856619156348444192550664853912434681577093459933599575436686424046466113215132845213008587152894642577278656978304699131916299275797578171518984206145555369576872231567191579337901913492071976578289189524123204040497290426960375042970382
|
||||
AK0kHtacLGu1NFWMADq2rG8hpzM4UEYyPOL+aMJbnwXcUYptRIxb0YFZg35RN/RiZs4lQsiq+kEJKzMMV71TsJq59vMkIZhZoB3t8g9ZqBZuq0JYcTICDwRpNSttJidVpJ6P9sR3s1xPMYKdlSwt6EEc9htOXfZU+yHKYgn98X60 121583812047864398969816595368193171848971298823388059338224714026742264861090347096116404814514279627148994345584790617974476594451626305761040465570524035369799925437276511604752129817947910677564301623631349399504187314174538914591944778074509068973226322566160587813128746039859381466427380402262866230964
|
||||
W3sZlWW1Aev3x/DiH9MzwCAZzBj++x9cknLfGAHwgFqkLH6vimEH/r8hi85hzlCOG5CjwhoZ0D/Hsfr26ZJ3X4chG84byrfDnek1V9mm1++v+clJvlYgcuVgn2Opsba2TILTm1MDB+Ujs9brJ2AAKrE9+ep5nvtQVeG9PUGtdlo= 64240043913835461386212515483198059541440539167395859777194837833769712010594411295323900074066077107346806786205590345517755715510695858065925747020336398305793661773798243627926904542715123849691490667964262778804487343218972081260210371192903128886030021862362141928329650003493687310970684093289133340250
|
||||
FTQRk9/BIj21gbLwI22fHJWYj+8Ghdcc613hOtJ+/hQmh73HwTXLpaGK9aCptxVbpjW0r/bxaRjmgxu9u1CCZh5yRd7Z46Wk/LIPXGd3ycQzqRMFB7TISFQGJIcFoxRp3Eb5wa2OyrUg7c/D+kb7oFJq9P7mEwIh8TpLzwmu4SU= 14889529068556301710329043521845510156960298822469914567758538023025100741826628180855835334285179977296740667353391766487166458692144569279381035582718738461626140662441222061900764829681913534146898551570916312642104487829660946024590782808750587095559047648957238487820069966851521487428624726655438348581
|
||||
APYXO6uGvs9qWiEAkcWsaCaCrGJJCP2Z1g++XlJ67oZIgEoWITn3T/R2/c4edAfwUUzNHAYZN1h2dSrRoqlrRXrbxFtGOuRCUrXcGLFFcEbTrtm+z5z8xGRfcorx7Cu3FIBPMK5XcGPcbRZdyP1gBkeDMvuBNAo0/To+LP/dhCNM 172810804474418448604443090732221483571611665465870520701624598983692130272337358406272727413570938793741430131635927237320173996217984860203754686741782921346604605228620148450611724714868551781003004492587584071978757421616871762681049508123223983431502852926521520561941051298696758046005573332373854233420
|
||||
AIDNxhnDEe1kTJ3XGfTS8zKXeXPRdw5yifm8j8Ibzj/quExy7hFPtKct8hRskPR2qwTlMiW9Ra8Npg2USsqHV0rBoIkX7E3psxq5LBfp/q00l3SEBuLL4K2FGR87bPgU+Duk3RVrNMnColiTcnAR5XkoeWhn/r9MfJMIN9Y0FEh8 90449107125498302548188660544012777357148118984122992664008792590422284061463729084479315745509706793674355738023180454297730948397413371686013210006834869294564190666543874617716180411178090109573192518129248278410216362657350215009192850017507998797754539132540293137589672869131300859207213449571846080636
|
||||
AIRWavxYRsGlH0Yr0DudwrpYtbrByf9ZsDawKom7ubiRfepqYzcBlwt4adMMnkYSaXeYtOsD4KBm2ZvLKN3++RkYNmxgkyarORBEg7ERyiThBj7Ksw57pNHCAoHtBEhH7Wp9mHhuZtPvPgCEptmwCu9rYhLt4zZp+Zq8a02dkXvM 92930601962515884925250459851491509622611227724602941760145671636277317511265759558869239180653492283311584982044597979173761619470326096725838197524704577188104121460089235709339932110663536557497112887112782062772810759971739760085128369628777812332518137107605855679096146402427144185104230596200130247628
|
||||
AMNJGLcAiJtL5fUfkesWKYJurdYSnvsOZeZcrg7bemkEVjF6S9CcojimUl+ncr/YY5/EXnU0mg84fObtDxWWdJ7z7l0CFcoALTyEatDYKshT0xvdKY3u+LUShxIAyk8EcGnf+KoEaa4Mx3tg2oTBnVegXClOakNTWw8bu2ItagoQ 137134165107366719462230252606689766470445826753581409513106273517221906418464863733870948759313279128624638614534848890858250894834883265387344539280755177217350585564186248554307335197387734431939154077778003706720017441895613190141376534460438929588407764609772857975000507660651583780079804513519571438096
|
||||
BmGPZt8XqqI1PuLN4K1/PZMi2rfOYtHEMrcwZdSjKRm5qTkd0Pbb/5zPV07TnM0uLRvIQYTLloEY+GYyn0K5gDTEZpEtQ8ee6Y87zYGDwcf20eqYNxkA7FVV71vqCP/Uw3Oi6B+hMvsWZbvv2vH6MkAeADCrezOtwqVS+irftyc= 4480956865245875120472829476982311611308898564405318773810939350829150182630548948231116574193987272498161864310429976564278532538229396846813874244969927890037756969704618336242255039858182439641759659872128285423988638335967412040624105824571426792562334458751137508116412821914961236269913776304372561703
|
||||
APqFgCIYbJWuRyEGuOStPvcprj2PILQ0JpgwQ2jLKn3DvkWSd83qh7PWGKozGavsjh803K+ZzI7P2wP+Nc0r0El3q4nzaHvKaCtVRyMwbXv9wYLFZICeM6J1l9ljUMts4tbDoPzkIy3ScU7pYxarBWqMkcBU8qL6NN1vEdkeu0fW 175922170410080716883576123079908758276229469783745771772401183721225804343343063277676406040455068452258961299511343441961963941297631097736305638850193978800615558067791016294285848963023036905095022181004058235239390870177623185946205281141386416867569004073524130001309977475780893497185890756991672600534
|
||||
APA/rCcGeH6A+6ZwaBBDM6mB6tTD8mjkrOWEo/pK3MCZ+rrErMBnFp2S19GhlLOfuY8BHS+D834Fdm8+3wKYkWnXZpGb+e3v8ofOQ34G1HvzULOYtrEiC4ISZRt2SSyz2hU+PBXjVnplsHWTRxZDmBxTJdgli4ItAqxGCxj/aJ9m 168708388929747822981923386197903561880341990893945097067702518857172133291360611402092714329372304718329568897960770488377524912057166920574319430820488930520807742026377043178502591886293565177404635365772829346030773275726024973460121300339258054215286249329967181244588558220467488638468686270735376228198
|
||||
AKmwrLP108dCGWOWxE/6woJVLRi/Kra/DvdsPkkrZQmWIlUT7IvwM4gU6bUr4f6wpT08cIQls2cGh7dbSEaO0xLa3mmtKhPiAlzSnz0wuifF3JT9U3uXgUfCZuFtE0z7Oi7WTOrpl3k3GA7JFvXnY0lwblIQALVf6oWyNETnajGl 119160465301384937485959146028591622947513292915838943629387700439301197965652871741710280647524383590817798553034250156068573474278225305190573334054718387045488098320076877626430189054572361967283632592181431701411266656256255758079114072932140551282607247364388070762970060420036793573956057551235306893733
|
||||
VTe3rCzAL1Sljo3QAXEkAdBy1ZARHZwtrj6ZNRa5ttqd6/l21g4z3iHCeGo4rnE2F8wYTy+NlugjXw86OS+XojW5y6UzTtx0HX5IJ4POqN64aXWmaklGzroBEYWeuFFKcgQN3NOxkuJoDQ6VElP7Epz69kj5CsKJUwL0SjbNrFY= 59841866347633473702601462509811342285929528424012250265905695635971518533504187799047710303717472950129869674786231155102509311322791323986824635569605105662070745033595366004805920086888891275288347907772640070278731650628917037915863439204501060041944275512863990729926528905725569467329169134226609384534
|
||||
AIZt1xGhC/HrvpPASsvVIVdsu//tn0noyJmVYh3FdQ6yIh1uce47iCsrV1yvYqx5ZTbC0vnfnbjFcWqH+HtLX/DelgvhEwzqJ8hwQrfE1ShLG4ZjAVo1Z4GCjrDcEUMlwKcunuSJssuxeQuXwTLS92+q6QeBSS7OmfxPX29CLb4B 94399298271083745508290936113986978382457275531684761701599029877008571741877683365769553170771833981099580359640421358853566501815723434822307977440496208486103754978934472597505865596938563438311337045817621762649604204720249750058676095769230214181772215323235427976398686727606000594646472236822594174465
|
||||
NIhTPpWXS82VTA0LTd6TfM+HgLgUcmvnMYtLqPpuqCKZwalAycwl0XFYNyVvaY21J94j92ts/lRYgVtHDhk7/9nLXq5js/lsUnG8rWPHJo11JTxvW+df88aX0pw8u+biOWt87vc1MW1dsMTTsJFJAeBx77qU/Cwto95IVqM7vSE= 36889590210230649939994518345793530042252563793069578097360569338647730438860274349862767107939590441616825589851005429465345268710487649366046960918184701290985280638488938340668212498212581853679035928093386035688597446809895381618260692378376844452061580510108168030682664507293277674052032318576713776417
|
||||
KXdi4A2Z7tSiiX9YGtDtxUXIfQvPhcc48rUH+Q2SnXL7fLNmr+F4Rf3RiFBRiHKocPfE94pothop5qQJ5X221/DbEKWK6s+ChfQ636jvRxojoLMab3dPtaAPpDJHrfZMxbT4ZaDJT0tpA2e+zZrzBuDs+UUgCpty9nxtdm1gS7A= 29118662951481660380477444121362422614202367719725087486810943918529894738076273660245405874301505615796632229852040910511025841576465052938308369421493312085081188509808322692130449282585522349552501983296872614029139293444558468751646868108213623606366977549477663987815308260383403466635254115908032940976
|
||||
AIOTBZQR2EJJRmoWdRNFLG4fceoS3KnRTHRpPdllhHODqdg+QxTOcOvqIzBqgdD0JgO12SuNAjLQOiz0jhd02qkXw9Y1adGuKvL97ARFtNEuJiNzFAj7KpDLy2zk2rPJp4Lp7cjQs0fe8BQYnTzTsNRGm+4ybln/gse1YWu9w8y5 92394618277596007469808288231093678404089765494062813665106014405059399079199990128824492247005602685377185496959522609467906358619318009231448503013528692450191782140091818984176967246749464502089280153086163239846744554575017530385347720563798041108608545014076448155956762636929707905789978331102411214009
|
||||
NzfbJRBF4pqEeborJrjoknJgpfK+DZh2k9cE5dcElMPZ2Zn9im7desWGiBSQnu3KbTO4L/t4+m6nFTNcbIJnqbVSMDHdsfG72rG/t89aOuECQw0HMVVgONNNa6i/mw0jZSWnRLD4fa1YgbUlMd8jeqO9XcBDB4mVtDTxyeGa3vU= 38775530011374537813502898274019389132620116890266344603221997943675706375698597061571989090674289834838060050848545748579361837989319487970580969082824601965845786771062335733318139530316825802589479118956745739691326447349403950997231306042638797277408335778415717988679050762936401945487285814799382535925
|
||||
Y4BVPZ6necuLSwaqYEPeZp0lt9tTGFl/WCJJbwg7XpyvuwYKtzagC1NLzY5ymBfwGFw1yRlQuyGsYd9mBfC99DuVCIeh0JNrhJN1bNfoSzy5UO5+dmTr+dm66VGSRS0tFcViDTfCIleTV+zxo/xuZT+Bjxq7kZue8zGkjp42Kmo= 69872189501616471647606976308259279995249122669120675885925763529037695584466011511740991152346215507625265226811128801733353566555339153627478941716586678793853828514394269931890370517258825006937741437480128878717892485074131232336852490940507703859793477547154689914725314529986438108117871674332626168426
|
||||
AKCP9Mto4q/a2xNqM4N7PekbKspwt48OGPre+iqVwPrSP/jWKxg3CvvLNZzN5P+/FiUGIklMMFJ8w76OaHIPqKuwckj1gvCLECJEE+UAZWrNKPmpzd/ootN9/kQhNMuloTFCyhXAUUOXJ7Z0WVLb2u6fn4zroszSMBoWQEKC6lcq 112750701794692134675959811050012620191158543234019977304167102486465198271340022889272244811582365901584420008564301920174477182946432553537794834985703732129975734658113610563794129371053853971031300761815004524681756388784922001759202643614966614186697992611399618828963452661554240362943588548146868410154
|
||||
APOTAFA2waoAODECaGNgCHa8dNN+cjMnD01M+IeQFytzo9RLMzzzg/gpTUFpyLtFMcfbCkDYQMLXwE4crTimdz5sVvjGQ+5fSFQjoDY6Bw7MO6NAcLzlV/sI/1WyNBKaLQbcl2720n16tdUcdckQNnV+cC2J48CVxYM1c7QQlxA0 171043636512232272455501595416608280460445723238023572475354665686544174728784633443479486247342724860289312593374524429736857970220153680852977711594899595712511352458264354251161579203922747468321999465061463474727943140910084880926005209538535217464825087114791420210981711903880998556269523363208766099508
|
||||
AMGpxRlB8WVnsGqyyiy3/mzrPymtJW1o1HcDErK11ZwQV5PwTF3c0THwlnxDmcziLWHSWgPQwfRddVDCXMGW9BffJn+XO6aTcWDPmDAh+1DbWJPE1aqApGbHvQ8HONy90dQMZf1ayuwceWCVTuU1wnHdo9F/sIsRbuu7ic2OJDzY 135994898408425255747055209966103741651849229328236418804928584233229830656742052333413774490626915784901255640138520158698845938184666683995579777154437927013722740366497459963753542029774185193376253885864514386760437194444013834088425088260658670140534670789371556026135595577395047002643901630053097946328
|
||||
AJAw4uDYdSYkOrjtwJVWLv3pi1+UxWge4RmkWKqVquTsAVcT2tRZ+MFdHM457Hl7fmFIyxvGZQy4c2v1AbHEfPR8ID2sCRQpdcfrxEUZPMDqxfnHHm0ziny6W4X6ggdBzMp/sBWaVNTBL0e61/pELBGYNRGFMzGws7HQkr/sro1D 101254336834199527040756567675327011562230719161388328289463594628690618298993695452746353237675715087353241661592074446889034411683413957950360025295995263477031608845241728493807755308798509893719674568267846671753070163272328014412744008880395248474446310603301447848026040555910147467745595720879397834051
|
||||
AM09TdtXgYL4FI5CGNiVjf0T/AN/pZ5zZsBOi1MAUKMURiXnc1x8VKYTqM9Xb86mqNBBqphynIQG6/3e/YbGJgHlsSdrmKbo+P9daMr02I/7Z76/7Osa8+7Ky6lhVCbU3F0tBH4WvopkCQmuJ267afgvDD5kB+9uNr28deMH00cY 144124056591600568767398029380314564902309327093641173350205276895603332085753288682409279238417493662029954512382520307259348748813767324609446500382301421328754981718014234615523158887865271179104711373675849713359713282937065993613915015084108700238420759344034475478243507306107546245540340758766909867800
|
||||
AKDhK+/BKGXbrbBh2vM61OP8LN81YwlJKe68KNwUu4tjXlQg7i49Jis7QKPI/YFPUpSNTu5N2iCgeMnCX4+r3NAfivOao9lw4N3nc9bi839SIWdlokhwBHBYmCIgjehUeBAdkU4jKqlE06pIrpRmSvBtn7O4aWTbT+C++ViYAcGF 112973480670453665543892521898882856059335781900313607790238402438320486344365203510769919022496690291280873287383392088872774202832124927485754495093552572232234532821756395965072330282810574669371524103814871172318519695921477775100282448247625395376072233777533359104085023946019406729587713120941266551173
|
||||
ALxDiSxHjfxvP8ETvpE+SyDPTS7q3o3zCK519WTepygC58KSRfvDnIVIyV3toQKzgqD50kF1Ni5D/wuaSs62y3zg3kELX1g+WuBCc8+x50+kDtbHXa1Me3et/OqVS/QeppkcjK1UZMU29fXze6P/w6aQfvKQkE7koeQtZBKkYc0p 132203344567902304830160099595561253300484092355345272411265169562971473393256361094745618829297250316196312398486598077249124198329075791740755862221465178128527292695331061023291345396067863215552021206609309872689233899464919108147533679134727064586730810633196817136739658243232643507412032417747255282985
|
||||
VF0YUTvy8Mfi5o6X06DEvLm87r72mAtTdyyLNr0/GXlk0Xj3L2Oi2bVUMtcXQNRXg/mkdGP88pgdaP/eMzqkUU++vJ7t3UgOC1i3SHegpiBhhZh+aZHH/wjFV8Mz2XZB5z8MpMgN+QwALK1TT2Pyt/feQTsOy0imVanB5+OvCeQ= 59242171319056188000481457618922567543461456096441095927600135114274111606802456239311634638536207588762066940095527920532936960549439269891703098017342732142860571277442598349453761561189719823290643146391349978698217357430495238876700400634593256155537598291759795109752990651995982467695091946768443574756
|
||||
ezpwBt0N6QhTusiPcKrBvSB6yuk/KShTLUFQHdf5J1u1fgDYrp+aOWuXOFVfOd0bweiG4UxBQNXB2IDFWfYON0fBoaDqNk/41YyqXBSkKbiNWLi1y3zPmwTAiwK0PzYp2EPfk/t/j0HsDbvebu0ygcxb2tPqj4EQ1TXEdD007kU= 86533835313999945727720083706940213467453975054116752898416709637030456504024135513972566184073843025739226187558143854850980654667596935003124034699919861200483994576288766702308068265526535622439762454501169018136389983894783905946543636163866717367545972667876983557989192393479830223914708619684891389509
|
||||
U8BT26zT46tTZnkmTNxGUAlXbJhk5cNi4AMSd8fSvZHm55siMFGJ8Jl7mtdzEFR1UFAyEztf2fUhxdtMLe8ei/OJgM0j7myQ9STucEwnsShT7QS/DjBmfvcC42sl1CRpXkb0ZLrEJCPf+crtLKGrG7ExS1oawIAgALBiMQIL6mE= 58812148564290791415180898639607206220554150794356494356250223429674091688305329629529905854147200457536549527135776329004085047145097927266797668252160196098870200925284256433894773392353678965699083286106628662506590268955650280670838340651598082083455821825076016227525614626726458235627297885815646710369
|
||||
HfYii3U1SIkBZl09RHaGGA7H3np+qxyNeeCNY07PDl8LwZAaaYk/bHPeBVboan0I2X4o78zCD/gFXFBJ4rxwwUsVjHEioyO2JcpV2/oDOelJBD//78WzBMMSWt7ZKbJV9uYr9ZUM0BUD3fsk1esFCEdnDJdr86U0UMmiig2R+ME= 21039655953870571289679214995029926285040274249531458675115179004718812090027267801012507748013357317597416722235988917212676802092082137617336199787762782958420742299451435320649616271885264333948336627286638368859041172783505464468640994920853000441536629081040963398001710173320125308624362209157720438977
|
||||
AICOlee3daFyqTrTdtWjVb5M2rclh9BpIo1CRvKo2bF7NYcjrU0/VvbOnTVXDwdeGMLupbi76f0BrfDxYtkzMXvIZlgoTit4g5ennnklDHFBC5cogaGlri8U28w4/h5oMunZ1O4ezdpRgVJe9nTP/sSEMYiNS5IA7Zshdvm/XccF 90275777798511290102824338787811725003177532250296755103300529948194832904403489332420505850668003332750291879153080212231952155092379375422537931240723308384652734942204313672973885652497290433943089371705605128843469306776615573873479312715317072986990219294942040272550822460408702072075001377245051602693
|
||||
L0QUSVIjxvE201b1ztRZyOOxy8vkUz6626TH4tbLwXjjc+AhmrvplaVlavnOgHqve+/L18XNuAYP4BqdxIcWTx+yxBKm4ZS92dRJdcAtccvZpEJtYjdJvI6qbL5Ph6HluaVZwp4dyFyXuZOJGTfYdTb7PUWM0jNT/xsqyjxSQ2U= 33191267986826803728285073844005357792766429917696698533494382218509532051029343127452480789088572904364699220151221680328978554239767633887572649589456766209242252549993823283929686430100804479376247660556781589549613316880150951333982646510273364068770923588389668733632648346075516618646974067295703417701
|
||||
APlD9ECKJuACUmQUsbd2GTOpb2PgQVT08C/5hyNEVdA5bWoICX7epmoCKCybdolk+cfEBP6fSz33j+Vn8MbeiHBLdmF6ETbmcyOjldJ902MDvU8dqAa8IgEZN5Uh5x/xzN+3dqk9o0ji7yi291u90rpfIh85PPpDat2B4l5zs9i5 175040148659257809883308984693597046378367187659749953472629929701758633206586720399909808941145946314755491399962797299295431089674294356220216615950668954164397362123668926410543898553191541662075745481299747832013627018846822876386760538344447600390187421938699064459451308870669878673306013635576901916857
|
||||
KB7N0tE+A5vFhyrd/m6Qe1wTihkjqmBn+rinfmMAzRlvtxIBSyDLzQsOQs7L4oTG64ABU+YwcWVijvoeZNamaxGl4hatAH1pRqmC/r8FMvC4vqiFTbFHzQhkjM7uoHD1aKnxyBVgjMj0E0KZjrRxydZjIR2p13FXjLP3UQSFtII= 28173452509830313810392326357601136401754938805266458365469366750775669869895498658593356375710132149836430968810246171974040975430205200958564616924399794768861923079158311829444850822144940112488994119845741191519421434257276977333662656888696213514226866147767570046232093727585815615828360199830275208322
|
||||
bxFgV7eXwnbQScl4VzS3RTdcMW+NY6pcGkT1UsqHIeDVyBb8DnH/2/Z+DX3zniR1iW6FPdvhJJeQyPIax1ohILa11R27C1TLxGvTrRBGUycxjEcBIxamHveBsXbECWusYLEakeSDg9x4BTWMz1rTQajkorBoeEjYuW+xBxQtXME= 77994515143740690952370766995249847650881300682406161400195705464876513409097078624084133111941171517535435606295232558665316819077765607639545069239931096306624817379462598756505457054433358548941076472902905065316335603665413114267741896000877284610377452471067725794013283338924419969559537339967562669249
|
||||
AOH6E2eBzD76QdTJ6QbR/7OeF7AagUif9pEYx7fMqrIsXCJKKpLV/RHIItCDYP2WO4URCaVueoAJe3M/Shj4o6efvH9pf5Q8MLM0rn5MTHWhThivqYQDwjCp1ZsPgq1VFS+gcnmwgHhj2W7XzJxiNPeRXlxI2vL+XTT/wPBYhqEP 158686346608862569574095184731081143351413141116869402750758091813874232272198082464382169470744476593016502816563462778075467588097653320101723165887488327616477297401486647183409348122990505635004320879840358339260797834264972100385692477324858942142372580281421734058008608134075577990829273447077276721423
|
||||
ANDDgNXOB/rXwmS4KEjiHj7RCDocVrMv5SU0aw6AJzNTBfseFngqidXx2AJKOEeG7RDDN2gzn4K4qJktF0AIPG2JbELlLUu0MFlpOLxamp586qyp67Cl9OuPq3UZTyQhIsSIE3VQkvxuQkGsaV1owDV3BKIWQbQEqMQI3yT4ELHm 146598844784260148346676185962272439320781765598895126402049215152385925250917998794921584290777625240122575975327405909800121511343265147922400813488099624745229653124857224399973509428158163452130086943873214460600035260925149630502192183407327427517292065083168010281295559088633086659209316582810260124134
|
||||
Vprr6oBnWuxIzyTZjuxlKSdZhBc0upeNBHVIlXpQEnN1Q+XURKzp4/6Vg/koITftr3SMSgGpE7LkrERMGFgYaqM5XZ1RXYFKT9dRJnz9VRDITVZtdkDrU04bqo2Ur+jvZhvg/oHBDTgQ4nPLJfHO3+GEmUtck+g/wOVozMMgufY= 60816213163057201559480662231646403262735082707152897397414589876256824040344252799972529759737904461369360580708093117244392116003622336721789703580184437841209963565058475060017600871779929808204093448248984201640754565635410002090180110910120481044515630478472999135146756643143415057403006410330361346550
|
||||
do4LGsm0afQLHl9alWF2RVyEKPxLIErsf4pTPgScRE7ZiTSVErbCDeyzd/KHzhBLQs/DhHHcw+OXj541cIRm6jaLVKiT8EwLW/dVG0AkVli83sFh2f56Kk+bCGSKvfGEQcGLY2k7nQ06zoMlYR/xbZCka6Q6kSq4YBDQgigQ1lU= 83252051731120517035090523892596419800592471447735288551342681962005778435125655090199060145942826521644585427683714084736143440310518046334877897672493531918539106001203807757254797471481884534543367685912500572052457610702790097953420236852480969038388056545966568595395722585797418296411673622376893961813
|
||||
OL2Qoj4xkqRrQmuuLwrABG3BMMBNGjfBtVBNTdBf7g027Ghkk/z3aK3jKT1EPpdiOdn8zXYBSO1mTRGyK3n7Jo8ICOcnlBOF6cZtDsb9bvSVE26MOD2wzl6irU7vzS+s3vGBkN3AazrxPD4czk3xezA9y13DJVnNzgAgIQHEols= 39844525812817530522650122383059885756573694015271773938493414420875846359054562126060762455794481186614035892021706051863945033061233991184379580556219478200155757966121832613842937722944431875100059046588723473670448006803481527981834627086055642349130254917244469014754132003347635357123155857820000494171
|
||||
Ljgn+3Hcg5DOf6usRumk7P+ZrdTBRmo968HdZU1mS7LwLW3Hii2KNkwMV7J77zA0P1pnvhMSEEeh1RbCUjLtSIbt3RIcOEoc+aO0eINF8r99l83xF57CBI3MDA3AAbtaYATy/NUXSC2h4W5kdsQuR88139MFi5y8E5njqxHu3UI= 32456338403763561215581247445990611953939298888251578685087656354454727113846722731945605696397627662593375001096230320486703167389461057538581895745078593206660798580358701927596287363374862536765135996838944212622199018632046955402325290145163082309469649329852148345837780541107029165352782710901375425858
|
||||
AMt5/u+ZUNm+Xsucr4RQPUu6ExAOq/Jbcjm/Kb2YIAaEQ1czIL82wsu6YmpHcfMaxLjY+EnaaF+eCWQPeGd1av919+QFbQPeh5DT7ZT9klK7BFyVsN0nEDJQ3AMMJqq6lm4sUeVxDVTmMypYnkzRl7jqzyCRY1MHA+o2LyMECdOg 142886089970163885609957244378225169093559131065687633458877059657380607541767850701139140472705242750285722732461954100519608059127637509286558848391554697942686619832870045594188204522385787253648018847569919409782188708374165437385572046835539379151066214153911415525465041951116179326632238059135825466272
|
||||
AMvXeHCaa+zk5VdB27KoS8XpjSUngaw7Gwlq6e2RrkEOxBhU2rGWGJ3fhq1HBNRxDf0quqfYTMd1speisaEr3cIyx9BhYwB6A+Nex/Sf9DSixezhcgEz6c5CfwUYP0QTTOiZDqzz+GcjKikjN7DKJTO0WSXMRG8qX8FBbH0rlc9l 143142496664357119491819741364830737485524654099662921673419335301323845847085335210884201567922636945282124120681371777665458057821603161276185071778040317947168899788341482064834489328957963447735297898161379277478278414388733161844053774747425459239004132791029364174047523473372650441001639174571312926565
|
||||
AMxoMXHfE2i4khsAkv/lPtLQhbWUjP3kxYmlJkpacpicBB6z/TmG5zjmTC/sqzBvBn3J4UvMzKYFyk9/l7Wnuc480500a3S4HRVtMtirPueV8v/SPktL67eN2zoj1VZA/Rex0aRGjW2CzEKGwEn3G2bZSgdT8hKv7AypF69ppjz6 143539479941314279463880342636704987025205547180882175105616955926182352311179043850344463145750154442573797875223178075233807385237935671604701513551125937539235111702655902037518920150424691586943553275517626347557879039695678271564616114192941679606063184290901862703975921261779714258077775731727612132602
|
||||
ODvOKg7l9RCn5CePG1FfMitkR5l9+7JK67eU+WeA5p1YXCcKS8GbYAKCtXPD2QfxmQcrNYfAc6Yb/kksaq29oW7MzZuTDzK0HXY5xBc/fJzEuvU51gaI0PR3cuU1qRlLqwmIlyt16gto+2E64BgPgIKJcAjx+TfH/EqNeJ77/W4= 39488587053253042573878502921384752550143716864908041972426777545317969264945056510991363961916339225192727727267483337259701961148978214005913510275048195308792987888118270387288989623193626554910652030960235845935461155296845475356011099372367616732243132816329531758943935324760665826550992788664237161838
|
||||
AKkznyQtB+PGvbVroM5nUIzhJUjiNj7q4fC9sSFbmDgvehnwPElVlie6PimH2FKonGV4GSaxZ+osil+9omfkb4rO3pq8fy5KcFSw/gs09X/U2eEEcUt/4oSbjs2NaMIxQftM2CauULiwfkWdkMFTBkHnh7Bbyocc8dtmrBDdoI8a 118817437232756222334188081193205110010964766506378146125932730686679941224328135190204402802650523704343176483564284220367074983943319572348376466341132480772885833789613392397284313483009178508647973749522358005819092779831781339778163122774381387989185969990310049504391258988402795259963134610905036263194
|
||||
AJfwWA7XnYbTjlJt+9hO/Q/OubHkUkyMYrN6Jd0cN5MG9Rg8W3i8U6oJxT18p4XozkiOgPlF1lE7hIAW9KRKJKGTue+iw0okLq5UNMu2Ha6l5/wzKi0QzRVTBnQm2zjPlQpgUorBBty5mcbt/B/Y3vOE4I3iVXklVtjQ7zIBHaNK 106695084438708194568048926154027115609888551145480521213711726807296356271397749432698558860759334362315257102647885062353922543502466463770991058956633500180245599467233361812610650830611712448187310827443315947425061886163301613989593906515923245020641415290300558869209909418659128196109640872398602216266
|
||||
aCXItk5XhuNrbrqJr1Qm04U4y4AzSKDMms11PgVcdf5fCGdizibh6/oZqx5OitM26nRz2vob8F+ZIP0CIyIJU0T1M50dVTbbpwuVNdv/XI6gHekQt0d2g34x1TQJIcsT1VWwGWTPNMtht1hezBAYxwv105AGKnqdLiz04YAdEk0= 73134927546833985031652237686088635686032103401394612286045377544136784429757461671691980910279873140130943470029643791712859175007885735170485461366406852784845528918253441791024065848540598601036357817496637108534035807393364939272891745520961269029038360205258229770737579266643408540634722493263322616397
|
||||
APNeoaWlyNa554OtHP8F7GAY5V9F7LMoF2ssg5wBmsgGFktrRH1C4FdyD0COrzIb0Vcko1/HiTnA9JXlfGKc3gTHEnO0gxBSDjK41L+EIgUfR0EhAD9iftTaCoBM7qZN3R1MYrSz3sevQZNMFOOnRrzwWEXnJaPKAZXvsqPzOIF9 170899982929163229592439208307232242235219591108657660041403142612622997092685093132858257827585941687488772925553142105567685213341947938835403410054637382864108739466539574004149772568683507025358331323655651148107044968424043673850583150424463706583215452211942132017052425497789362680979074312857823248765
|
||||
ALhwBfBYpOk1pfJcNut0C2fEAd4hhYU03/ZQBqVe/7MgpEDjro7oMvSdba5kjH/VBssmZVqpvuZ5lG+vI9lXLukhwRKJg7m67HG8lZXvjDmjU/PCjxBPNt5r8/DziETYmMa+fhaMTw4hedZcwDe37t1VPIflvM94sBKu6be9yJAn 129516480651398210587505113546142851617282590236388547627336279692965778911450075230961856270046942312918567973875005814982283590898552829322178788678196583244198944578081007477482775130405341039067711963061287597331433268366003672643052056973656674139309732186091974604170508497340243515339072325943686631463
|
||||
c9vpoiZvtnj71b8XguD67WayOF57QgOX4V4L++nG2u/RY9VT2+0tJ/C4NIawVa7ScQZAPVLuhV4J50HJX7FZgtY5n+lwMzNo0av7i0IqTS+1BBO8eNJy2wkCbWWBxNybuNnF6OK7eXdPb2Mmwm2OmhN2/j7HAr0cD7rK/Hnif7I= 81358980280155473712258342299472964374474635149963153129588784719499494479288254287754874893180126149146558961101860327826747785201363745989346818037655063262173536227595206355647880155693272153902647256175878517626925488264893732295267833614283963802283320574654949992393798458265266551024756663538388467634
|
||||
APArEXNLzDydcHrieLDReJryWxFzcsN1dxjpJIVGeJp6itsJOrUtnmXVnETtaZhWsmN3/Zh0R7TgJ253f7PZ/Z2xCEdqF0hs2MmnERSywdWZQ0a0McbDUUaDjBNYFht1wvS6djbI1b8RfayrnEZ0miYdzrrP1ntU+5cM1QBAvj6T 168651870043094856205824264282870999215855903395882323164614939540734011037112413507417141209480771157672307388419164831992909066097194364645695794831939514470650008210390333649278806163193463937050083854756730458780288720541495880958909249273048328511615821480782977316719631334570687241232556472064072892051
|
||||
RhGyx6xibf0OvY1XjnmX5na3G7emG8PWbvEa1kIjR6pK6K1MrMZnxFefXpHWInFS7ADESNI9LHjZB8VW5QrjRVPMksgdEAlkhY7MyQxaclUlShFl2AfKYBfIIro+vg7mUMzMctD+07BLk+jejRHtPVIxHmNnZrZYds80ve5z3Xw= 49204219353786910100605282012781696579642953908541693903348594981245301165936599174304121350092894937817100350990938057159324959104937469442065996667276651025661016077514839755853073999975805394464570132481314896694678249282338429544941873047382467276103868995474424700207571657816852575364781281563515280764
|
||||
AKbFfU3GL6NILVyONPVD/X0tffk5HS//7FBp7n6JKMXu3VXvWnfTl32R0WyVHk2yP0iIyi6SUusSicOH9ncO8KJHmaoMGN9Fn+Zq94FTFqZne5NxHmCtwRAbFNDVGg4FeemGXEe1S5Kk1VcvWqnp+QgY0uwa7RtT8C7/T+1pZlwq 117110890075563714812929271250884717870581483065920538069845585667296154465072587148155060755111295509684258790280104272121160614620669593483929827848744548171793187278583947500205314283462739235860439216105116687015890394925743036369717346234391524403038196640934551590543386844279091801685432977718405127210
|
||||
AJ0xZ9dfRc6P4W31bMHBymgOq+38ETEIMvMtr+wB5WTcsquZY1IUB4IVkrHaOo3W2SIr479IfJOOQhmvyRS4iB05yDI88Z/fJfXarkH53gDivECuo+5+JmV7e0S6gCvOuVamwoQjlK3G32bCV2946ry4EyIsVZ6Alk9xk7X5HfGU 110384671994603894282707302829898242894456931176497230904862171369974466400767175784681299142670706023468915238955836087425993929524341269289746060546848852729416925808186253355106621584826213979718185296723694190658548757311188764342751280681935289121682174507629679900374674992438818324999211250580434317716
|
||||
fjzmb1D+YBU5Wn1GlwhxjiJS07k+fXxjeNRbOv5SjktzxOXmautO8xZ5ACOlYrTt5G2gzW2PU6sYNfByQ0xoUSyutOuQlD2r+8MnDrxCo6RxT3P0dUSX7q0IVj+oLK4GPbscnKLfe6KqUcYLMgKnDYnc+ztFD+csL6BQnM9WMLk= 88647261832601702291191332432291274285041869480562430895152086741320122435409959711452438332192792226899741738806447713240934608106883094466050154088410020909933636902495700779087737304255058561688767369900548260278700135161077055869478387490726087630962098228537973426295306997128615315548440548541717688505
|
||||
YDg99aHkQSh9RjytWknbXzcgLD8MrWUEHF46yQLHYANKXaQYyf3yGM9TYPCDUqWbOapqQe+XfOCoACLyRg7vVDsnOPRDI9ZFUgCQBNG06ZOxzktEhnNJoRC99da8jyodFqqk2f9UD1lVa8tsQdatjUDocwgJaDAOpYEyGnUlbXo= 67567767932654827067250684965667741848878457020992905661955722020937161710030993261011062929936964216357930453809610708591260182295097124272956485574313839759737390934220465669626974544253750900911093325004172643146669082793591441922014060981070503803266774197958528843445580649512373693546027107823355522426
|
||||
ANdsfO+cNtWsbT/QJHGkYAL2WCHWVPrX6oEz78pO8lUwiigVEow5roLI5Tm7GP7XffjF95z5WDxzpoam+Bfp4za75D6ZEHQmuFnpWQAmNLUHdKUE6UcsWN1rbV1uY+x+Nr5Vni/M7PfQi1yRTTJTYav40tFPb9rY48FsUotivoxd 151275723772668372472508916060743043308364940375633847663054782759325087560768667906829087958412643723335046123025802453213225972572697773468957759328009026531148112732519692142632237595562259864125679649273054426879080697360204352423668940795473103047320116317252295126635024518179060076282921965794883439709
|
||||
D2Z8YA0G/vzEVVQ6itLPUC92r9n9FKRpf6lDPWIgpZOOfIkukPp7zzTlo9Ej5IsBrZBbtGz/eYmlHeZ8Y9pQj8HFW24HeKYqjmR0ujbNxI0QgoE+VUwPVg0HhoQsOGmq47zpXpkDwpOAZbMh/t1Bafq6r2zM0qmiwOacJ8KFUas= 10814483230552506566705634583020057064935800294861277580077052473134972003523900930560478187758928889017740705417070994563709463926267126567504805864719383185267204810142444719634360655595490833208838383875687102074846353850310954150927702228780599083427768247170427544730791038729428517279760042619935478187
|
||||
XoZpSMHqlOyPYJS7dWSRNDJHCkjbo6+DECzu0FpB9O8bftcxan/06Twbo5d1lEqPlLx3w0XeWtrmCSCaeVcXVtlY3QuPjdKPv8LBnnhslPOVcbGyflaTPXU+ITWE6rwnIF+yWQl3NIwCV4EBtCT+3U//Dt/Ebif9gzfKpKltD6U= 66377743237695515693282032069691369056215169443985727092982918806809030742478033317158686828712146024066618073633406428345129492010236994055590530566431286733776441810601990431112187030942086686719669823512292071202675269428014136307286941704297995292544712278047959299939833088742083527714893795660235870117
|
||||
QUbbkyJQ0Nru9c/nPbphM6VxHp5DWlai6407KIDbTGvUReVYI7de1gO/BFphL9GA7gDareYoMuej3/SVp8lEujXywtXzjiI+j2TzR3YYiMBAMhsJO1wU9pxy69Cj5xeFFlrOycjE9sPS9nrqnEEEFNPiK/GDDTHj0KuNbWSCLrI= 45838919357034925862751142472777409057791233610959872523563363744902783251621354580995921495295078179996083468819097423327554678806691589090814275138081407920379810144694354354954459732280968086760894209634364189264517251735804373673532012530665557440070501687207620525228416650281363557992436992284712644274
|
||||
F+uI7ARCeAlnPLO1YR7RJj8LyhtE/EJMcY45lsNMff0YeENe8KOITZVxNA55FcxDYpg9sKi1UV3/ASqkqpH8MOxWpBdT2UwSX3oBkp6ETfJKqiag0C4MS8cQVsfcKF39BJ6KUE7X6KUEj11j2YIIRREmLPyZ0LatG7dN7Rmv2iI= 16797235966984072293396362937533957334369977688369659112225970370748312376722010874726300554329794854683394163379447263409228872034356195791733533528404245739693397078461712458035888813157166614479153484688995068722288153129390850561042173295997770817893349738328312152341860704179681230323810266038959856162
|
||||
ALkEoXznA7BJlBIfA3Avl9kygQcxexEMApwduVRiXeYG0uEXMQU4rgMJBlPqs+ly8LTIcLFaLnJAG2KFQn2GXz2TNa7w4xkegkrslIJEtBWX/lc7VzRtcLbhaXEs0Ci1ValnW9Up7dYOj3Qw9eNo/9M9b1fD9TI+0QXFtp1ge728 129924120553920201168632484268654219915712271781591182777925696006023100660478316445751842982460082888615429513674356810187315558964251402722465707617058251479494744427428152566665405423424700027316505872162698141109433045594670140335040479559124757490095995568556894332243767736124299898808796118800328801724
|
||||
Ki3FNTEE870E9GaNtbT418CLSmf++s6Di3hzAy8NgiDOFo+uuicJa54V3JNRxOBc99sl/chfZuaBQt14BFOQ0i+9rm2KD82okNABd+SNfXOb0Ow2taZX8CpkVJYDyphFPyHbPIKmzwMShNx9X2z9w4++tJgzBzGcFTPv1nhAlxc= 29618953883711174042338818332957726953262658484143534778541769862244883781157097499904047532839425875312731531093860721544220959674634750905085721866390609141599426547378130082409488797303960018348798930232014390380383063108812922828160584483043190739354817699497573863286563890071313017508437166939160221463
|
||||
AJq8tcSnAq6M32ViO4hVGiHY7Tb08cLVyxpl/v0Y5adYblvjrbsFcCmsNDi5PnBOBl5awR7KZdQ1xgq6jIs+SQbccEMvJvGUZW5MgcHrXBj9XVd+8oB0z0eahqXpgYBqLDeHLU6238xR3dJYFf+Xrcrzjg8swx66OmQKkAQVJtdq 108660120968150664552423780971948386965268856900017812123107864829782135741514930439461240950044759098603910762272795612101834680870627850178371693837566833495418727543557712057554231215186486008080050486837716071537742708913279026303380104388546316647349432118287628353129105425052237438199445863950767806314
|
||||
AI3mfrgcRwtE3mA12gSoQV1xyIGy/YA4pCCvja4mTjvzQOAfiZL0efadxZH5awohCC1SpZDCFsE9yYp4LugHKu/A8zMcp4k5ena8sTPDkSod1yucjybgmVJ5h17Pru28AzHQ/YUmCnojQv55aV2+AUhxzIfojY+NT2PKRqr+vuf+ 99645829268436288676280252226747461064597487404802430565833102291706103139410465131373666856042539909746769688396958963177805479987372681967013633920910376342526433530508868114301205524789149997372160919406352823342811006288909548557622230243808373083272214426118230701324879006645047374853535922112549545982
|
||||
TmXQ+D8XFKSclXwnTIH8d+sb1IV0gfm7GagJahaFL6A9rvYaZ0NTizkG5DQ0RmXyo0wPmLork/296whsdNdUxVAwnGFlWWvMV0ftR1fOvN9KoT0WtVZ4Rmu6Fuc7q1PskAZzIp7MkOAxILO4iX5dNuVC+GLZYIbpTel3Ga8fXuU= 55052751096768041533898435453266875315629605001878362193939750978427494147944918632414581744895066623527980497732722163665712245580312596487741856071020477624754815927936394948233480228964159047139170955663289543349257377302556035170334384320502468579367401821986660515827461352578142560630318492817238744805
|
||||
EF6KIBWQiQoHOnBdJs1p+WIcAv9ILt0cnQVo+o/2niOtI0C+eFBSiNgeddhotkQFgHvGUjq8BPYgtLC8A5IFKGzXu4SYj5ziagka0hqfhVs9zVHKNx2NUoMhPDG5R7+giwEGGPOayGHVNbsBf1FBYG91+mwy8hnNbhcHSnvLGk4= 11494909948912248031301686864833544028186348338729984264372557659364976118965740281229664413031002362633393381744365783802034700038490736736266032000546393704814403638058993380993275865674190555703046732456017652317200288968188655019374159412919163798248766655991273308390043613040731449231289437754791500366
|
||||
AL7wCh8tkFe07qChFAzRkrnNehvda/Teroj65X1Bmcr14+/zeJlZDObYRYBOm8YYSYNgJekcL3o9lLFE34sCMbSJgm4dGwpEVexiLVi+zc8ndnqBDSAnRqtC+3jbInm/v8l6cUvuzrUNtzXIQ/H4FrmPMiVy0EMerkMtkfw5GBsd 134080980697158076909534078193319899756347955848461100874771253577754225619652121295523443912922220564492468474647193062555347746840044705102003079330399499915801536721237211615317000955332058281901995149084303143543150689010335818219129745452688372571010816270728441637278434982752674030696337642893239393053
|
||||
APunLhlblRi3bbRBwSV8dsw8h5SvT8ncAmXPnca+e1dLzrQZzL7P2OhFope0mW1MCDl2kJPiGTdK3SiYJVsAFeR3r/0z96g3oq+8uS66T6VaJym0QToMsqQF4/fUMaTo9HsukyPyOgjVIU+6TiFd3SxQKIu1/GpQWVQIP2pkHFKM 176716779397275986910036615967409090183531310366246043951791503601618945774743601662530806467045971394247287367421508126613573039423674729894091424105133906122821596079925540513892022311039293333114333317886304014722168786051080135090242879622144693440448171583324154550086458411590240882982297314605229953676
|
||||
MM6B5AgdJKe5OLlPzcXwi9WhqQjx5KsnBYxxa3kWdGNTdk/IN6TVd4Ptn8lWkLm78mw3DXP4Ol1sQbIfkHRoKFUN6TaWg5aDCJBDXyHSTZI2FDc1di0Te1SwziYn0sIOe+R+rfuLuHlcT1xaZBgL6+dDLAZaZza36UEjn5i/pTs= 34273208848307582992498656582721015257885595139328466874135636009184357438445251703533153492315835793684794951576799764181908090765379592683793969576893243386892292517067596035059342970830813419330530731370385186653239446376170533147020072285887964430731437765184844167400169982662183791828762458682426369339
|
||||
AJK1dx77ZA4F0sYCgRL1LKSTvjGTKBHd4QBeVnE6FKJxIow82puqtsVZ7TBxbECex+LkLQPrEbuQaVr3giUDjg0aJCE0D9ZVXCUS06qulqcCCdWgGFHXDOQzTWDn6TlJCGxtTEMbMxSlUq1q0iKZ19kwMHiT3GydBn8/G7tIYd23 103022457217861194294329435482792508957642944252832971366936865663608381648431732294396977429863681671686490913575377744795372643599438468695483808375208871881849232129651519218503507811863794426234594709451104684234156597418383183271923307418704786548452806494411689822939919114966188329657999811363991575991
|
||||
fPZNsqUYBbVGA2FAiglnByxGJOZkVSpj8Y4QNW5wq6o/1e/PRwp0TLYJXIoCJRs82pAj0QDpQbHl5lCZmNxEIQP8o8xI//HCPxPIdgBJmSfm3VGetrOpqEGU0KJJqK4IsjoVpAfPFMUMOpGNz9CSvCHGk1AKrtYvrTJEKmETuig= 87751387019308584846595931543798879607048239290774788042055795835726250309378365187899578817976976035304304847968410200168743967600896348021636654074952051821111673620467434295067182213181329543946368332581250062140819766061014427755090798550122401239987766844126425179573454145697756278292448630509686471208
|
||||
EmT6DUd0bxcdprYhAnycQaxm89kltJOlIOGFFRmEK90H3RhzBGr5PRVTJVqemFVpVliO1gy1nPHgqDGVNIE1GXhrhyFJU6m+HJeNcduippRe38xPCiuraRkXao79X7WAiVYUq6RIH+UIRnfTvHBgzTwjrOvKJ5853hYmGaanjh0= 12917015385266582065020051081997430892582163827812227349569911846746592973268746845211126663077128575098045461893559476227689488349263954564361736197688317585888118974603264677576027836032271531903881104937422976121352854003385726888601980526287956222142458858211589791399646989299770657341412683499692330525
|
||||
APtOYyWzdY1A/YU0SGrtjPdMZA5E50Y3hJVXppwuuSk04TjXzcbu2Sqp7sMnKYbToRW4nB5p2UnaLPhTRy0yszOd1auLngW+0ttCybD6nTcVoP65gYOwXGfSEQysqKLb1OfV8kYq5Ba92Efn+CcWWWuS0wEr97W5M/Hccx9bGu0r 176473215292413922394356058789571494026727424839036665031567966488209592078148711908841964690807374236235612412767651029865069639786447019874344449598703213025389428836803984245755885691094364960118900160737925054803955567361126391353868279642836569627177281508980029006921064654964339077608785831304875404587
|
||||
Vs6bjpYfFA1R/QTeCfhMuZLZ+Zxo6wxq1jFZpi5SBR1LaUwAtOAj38OJC8L7zmxSOj/RGEmJHkulI3E1MH7P7xlWbY468/azfot5fX9BgHrtptV6Q0dkBUg7H91+tcxdbm4/V0HGQGa2rZp+XK1rO+U/d0ki6iNbsCsCR+OeyvI= 60957991334776853645581868230398759578123373154273044785333939425321390401088800849629483265841435899835570419798325123273632247193463641611211088549152950252041797959644227170492417662363676228611376046334386877555777556575818860902071813120592757466883038430756577949025778080997296219236534786815367760626
|
||||
GiauT9A+wmwJsFbS2OPIM6ultIbU+kT2NgACn1jFAy+vNBahdfHMCH0jJdCs5TbmKTCeiEf3ITc5TV1OSvIejJ0GRkTf80nY47TAhiP1aehZvMAv59NQHHTDUE1U4TPVYKIyFpm1V1A+JBHKJzuGrB4lvqB2ed7k4m/ZD5lFLMM= 18363925023885496669420377869542744504974590667921570026763131637088916425434675950812384919000566852243714758512996458727914094904422651029609645299422563453163291342992902510788457007623888307499601267675322986672697397389663297565071582648674012080122614260400848960757021864980761735684874056409664531651
|
||||
AL/9KOZLtZu4+ZQYQsmOgbST8F4RV4N/Z+l8qsbCFlHdXHqTTkcN0chsccE/3KkVTZsAnAyJqogbAvB/RZqttaK5a8iKlOEoerUS92FVQw/42WhsVaFggR9cHVuvCD6QqclZjSBQKQzUMy0YWPWlycAZDIv96tooA+V+Fk0jbcFs 134819194171226950171930028888667967094069342154233489571728632904658607624703819928943642011918061760802468868660586005724399808048609316802502143143910585363214684061242274402109137825176291816945489430125510625857564490981683683589784133305376252294774711594646923226452625156299996630452243345104727556460
|
||||
AK5x2N/4+PKlsW/fNrw76CnE+nS76Rd7Ugo3IKhMTB/IuCc5xG4MQHo5MlWE0oVkZ+Gs4CxUpvD/WCCjHHFlSxKG4mC6ehz3NVLglBt+f1RWfPkF28JPd0UaIOG3um8kG4J3JDN48PXOPP86A0H8ZYbE5+ImmXsGAcwvScUQRInU 122499245103202714319465533564374494931278163571999934877854825659720649344163774228004853964635693562785966889622928722984134944784141208867445419597834322541679973956606275877526560988151196822256754309120410807075405427166696093800381410682490767468563176131997424692783482903880902119461752084196789357012
|
||||
ALZ12i0hqFhwRAikcoahYzH/BUolhgZ9Jz6adLvvTO4wk6LLOpNC/zCz+LjM7HazZomT1SqeYJ2X+WeGFLADHuWo+Gp/I3S0UEneYHKJxoU7OoOtE0mB0BCncLckHao/LmbpnQpS+Lx5bRsr0yE6oWNea6gbyRm/R0to74MI3/KK 128128022342420083856194424802390993133863171077961467523372211039771843125192435716337829530528063182315478279257832480290950255315151577221042903861075751839976362752440630888566422581799720709574650482021111126414843635330535518992034746102956214991673417580508389225948159518319625680855827280146399752842
|
||||
APXxvLifWgehdwdTRAJP5KrchRzgbUsyMWKcPGm2ZkwGDJjoTl2LIOOGVFiL4CyPBxahkEHf0nMxBN5oNGX/Y4W4PuOAC8gMgHzdLkPWkpnTcyoe5DD+fQsqNuKVw9nvyB15fx8k0d6b056nfFjnnRqgybby7MSllAWSKRYRdxVm 172707950911363219032118650562553641123743396229371815589867086054370029540557395298194067635069298952836929253340374819975848769009260895874615676938511747311585257140973518651959463416682165208985512233703837931718385346209362040743041262031997793519095342415901373534535662377972036003546589624834285049190
|
||||
O+9ohtZ9SzGLJoZM8IRQAjhc/GPt2X5G+M22ZidYjx9WgOTrZDXorSyxLuHxay6djsJSgjxYMj8MuanYSn/DzPWBB1Gn4cDmIsfeYuzO+vUJ4l6d0nIvBg9Iqs61/PGFd46YxhnDiVQ9HEznyTjzESnNqc0+/OkQVJcwNHAcZBg= 42087920806448980363073662127262313840530298932643042322138035915324224188032438119079107631420338701086802583985117830416851550991102672642532160807467909040086448764318690465254898516502941122327185894900817634110254371864896139724173087625913998657136384357741816102965779105122269429701537815263708996632
|
||||
VJOZmvqrqsIUTQSSJpZPhbQIYN2tsfBhAciWnfAYpwjK9/ts7OP4Qgdp6T/V2EsSRPnfZ0VKdLg1CnEWDhfcODo+/BZcUrJ0AviFAEtdeUhoMSWXtjel9Ln2guHY4s33z2cN70+e8gfjes65lCzrxUIXEF4nKxzKBnScoooQP5k= 59391682001673484862915842850714742391303140646889359425353339320546979084250010101273851580028171449840778038774656177449549941659895629203970455580974953864068394275066532699748911169800076515776388213090834432354601344176559839798153004796057709798368011673585434643656820656931921831615507416411999846297
|
||||
FRyJCOgPziO6RDHX1JgYGZRcSAuoQFIZM4niD/B0twK3l+TRpmVigKZAJnZZFtmX+0JQkDwQn3lcBGQIL6mgy+j0hD58U2/Wd6xebuHSzf4OHVGo1cYoqZLplszA+hVCoDVTHi2YAZ+GtfQEggumcNVxqfEZd6D9Nu//hm0t21M= 14824975573460749317081504809641216868382341402512168178334301409725840669112911061147252565570697788806398498723577368905065980113760265945344671897779830912242224090954834750057278285419880820811348943398148063418809729356397202526234113316098584002071850758705282845646489058224513019380757604894853946195
|
||||
dUk5LyS7mduFJlvh5o8R73kJIeeTh0Zli/y3XjtIXfCaNRf+wDlD/pX91JEwsQ5Mvj8yq/Uq13QyWhoNwsPpXVcJtJ+02wtIn5darsBDfzcD/LbWhl7zTRUeMjZ72gAWi1djx94SWjrZJS2oWZU92Og1yOyKRG+ua0AhHfYYh6g= 82361050315899968537319599868832189063658136463903643442673674137187842597528653416212822014359684261704550279153006971937114135373937934986951573613797195556144113400128502946618028800530164890707031379614952207482505803377774320259789692177752930767589642007257364960987343146063216186985472686575891023784
|
||||
AI6rejwEznR35rIPuIz0CP2aWyhRUR3unJ90YfxyuVYxrqOJQGSDTSf6SGDDw5MqpZXa9pWuwpyrb6smOq4ZtC3Er7lipJfXDjhy+0k1qcfMjmqbATUscwXGpgW+MO71cttccEz6vhbjndi8gvG5M/vfL2l1jA8nXuBd4e254dbz 100186164434910864539376019601151338080943067893748898987236087770762310617199833479771711726248130012472861788210345311298499515751355424063761182369333224929721733015910055321263016834247318907562652286587380604998130368845939290804442878127169587599285040969551065995197981341260363722618429042861484922611
|
||||
AJ5vLZX0fSs8dUSBqd5hki48T9cYuR0atxR+qv7cRu9nD1vP8uNVR8dLitg3XH0RARt3ZmOgi/AuggZt6tTxuIBg+9JhBY9WW+BLL5CnYWHC3AKMi7MQBWciLtmBpyF152bDaEcV1PXxtml2KxX0Ba0C+hGVDmJSdi8Kjd4AkfU6 111256341508463539324514225759801553679558662737345522765042612717818066374840372549356543720386819501973783940451033901079765311790026584654529398345993992144903839534037331533660672892487693477412528974248713261092693018326068480417183236210881306241164169849090833681510163753605662526243408192127670285626
|
||||
ZhXtSzn1GiFfHHnSKUYZiTcEWqlI8owyCKFjCQ+VEvkdk50m8uN7RCQ6ZhI545tN7Uy0WdLstJhgJETBYLHHIoWsJn07mgPxuyO0XsqNroICMQEOO/YWQFk1c0VqZifcohQAwJj7fONzM7hTcA22/7gVigJ3iLq178jZOJsEPQs= 71686982768953132894579286530164112027530221141251507987469672039995314435159469907420372652392376452531392493658576814100773556880394271726970628960571077839124343525055625420896355363707908511865700866168843075071778015504724409171911254647909938237551680861008772396291072284353858575645679153885560978699
|
||||
Vc8Cw5m5yI+bJ5sUJYm/F2wyZ5x3D4ydyL0uU/3eVF2ZJu55OOlC9pUyyv7WGExClHvWpR9mhMnsqCLyseLfM2Q/YXJ7cjGPKp2xd+fvwHa4hRi1FdOxs96rJnb+HUt9hTwQByXgzpnUfs7AqrqaNf4WSlBNMu0IOOqDdB4iVHU= 60256873326783629723455608618518793848697944184579877638436234491615392142659293975260290798403892159720925893207048153291000664050780029732557737984085196691225472664027706406879051455184548871511448456651238810812870905640934953489289909009741493031472382758586341375517766302753448531830002512912250459253
|
||||
QmeUn6cbpE8YrDfMETz/+KVFaK+d4NHHzcdj/MnjcmqQSLpP/XwCW/aeudlN3SfKd6rNo1XZefunZO/ek+PHEIy899WzjiJaajhf2X05fl9WuPEaMES3Yrr+ClogFNQ+9jL8+7L+J8lDuqQzvchT0U0RPay5HSNZw+ZouVCiQ18= 46630904037845609335515965570673490721137364238213103678233212262384415738654627185220187275286458759154841820256007930773120637898228224906635911124921895934056288121005350040349882413280772888907627838315559544636626856478316691755270725623680935763476199888127096014398699432042227882284223578563208692575
|
||||
ALUBYIShA4w5kRUa6iNF8S33DqaprdOWjVBnO+j9CCGtUh+NNwfpKR8AKf536MtuFFtwaQvRIlkLpaTYXuRxzyU/YG2+UfRQF3pEmXQhcMxJqFzqZ5nWCIWlJ/KtYS4lcC/B7hD2UGAktnIdjVUTSxX60VzA+zxeunV2iBZXQlEs 127106299687401374061881872616647348819431126560557369258073443762502337592227172639640997680536372567116568811258505773087926491911004324918919511363985868314578663758269650473780772688462266790559846182685481907703974916356209771821075179827563487466641669110315430790405454641953880582274165368514679034156
|
||||
ANyAdMnVCVjmUZGiVdyvGE5mUQpKoJOJINqMAfzVUGvvxXFmGdoAx+xsDRNAP4KoijpXk6E3yPBPBZEWyhiHnyjEkktK/gX6gnb745afS0QIlsjhKCk/W/BHXkzC862Llnc1ZGAIsERnGceEoZHdICfDUh/7nMFp5WuSMzPB7nEO 154841617115465511611746667401422322067517612306328612547616471923266281876818466022676728696273611923942543658633762267658490816264271663863494188027433799849037906883352478212451733963905925106470599843045599411842850386623187980045961158399934160107237440980574028985561404965317132715808604373199725949198
|
||||
AJ4nfhDe+HojR2YrprDHW9FVUxsZvoIekwlNL2iKFRFcTB9IcEdh6QnGcaRinev7yEYUsL6saSxUj39uWlqo8udJFdszuuQUmnloIi34L5uj0m1OpLy2dawpFQr8pqyA7go4ugMMj6XCtiVnISUcK8wjHgY3Jed/EKK8k5ce0Jxt 111059703393618496515021583605572584329116596402705082562306930876194742195701060137568030171429700588269665205795898835699633817098262654446852249498668467827435829513531633390969638488553144849154126899372953755511962841193763362947708260103832329116485114451074371844037650417731807385491783373627950406765
|
||||
AL+heSTflb2MkRYFTKghfzqlVQ1oE5vcx0eCIsy9NJ2NGFXCRRvoGDVoB8UEsUWIRnaA+MIpwDKGpbOS8kRQrvBvPe/xM/t3jrGkaS6pN064+bCBx8Y/Jq31ZXNG8oUol+y1Eo6fkUKNl4EOetmZWK8VmhVwol5YngDffj4Q8ned 134567692290185631768518572983694048149859804864902017394351513816079806629664302312927579302025923096596995134868068794900003728293470554490807959649153000914807604036531509869958441069678002226922395630284261949256022972967357884468325217602330254290548618134453007903724438628204981673400911693835033278365
|
||||
AI272d2sbYIi637kHZC+6lievgcDvT5VKaCnus3fHwm2vfao7oYu31P4st9DlqPWJ635X6QtLkU5HgvVSy66MDj2fcOfwVL09ffkZYnoGNdhMADVgOq62Ro5cCpOdw8Ko0cCyVpVIaSysPuqY7kiClf9GTdyZz/uYHDgwWeNrc4R 99528854246023003959943182132914587584844397870416002887630245681136432049666385367430032197518895755482367603560037194955739661569172773017279832774100155646116233705958563163070414171045438199561777058338188494271322834524386565519620661180246416329082614115142485663975718653564590519408413408765689056785
|
||||
AN9S8vPzo4SkyKsk07nfyD0um1riJzRqqWF9KCL+kWMHajurgPACikYzu61tL7l1mNEaIU16Ndz541o+y76DgsTLYszu4KXUOEt1Gu3eHy05Fq18zCDlNesSVjkZjPmuJr2ku+p0cP0TLLMn7/KuVOm4GlEVc6OvBNZuEzRriSYZ 156823459768092337875922818543729136404805918580285507923139232733465414368775678369646914249412830351437211620056021568154043505276475345347569200977945836210758870414054407438380975491139001471954448623922841964684437333066353208837709613982022690623722155151315252634380695513434502419141555410441456920089
|
||||
AMc5H8kywLgiT4zz5xgoI90jejsHorbqUGtBeX9wke7zyvEKyWxRKScZwzRbinjDZzN48eg/30qTZOV2Rw97JFg+EA63iZ0vqfF8jErIt3hODniKX8zayCuNmiSb5kiZL0UDU1SNh8ER4m6o5vshBKkmqs0PeozfCGQtR3bZXlx4 139899247405256530335276706333424670310599977544642091674186635734421385499036688803073040921114325725234673132788498809189814711681909865484671959982394306416477300458309408833281654917008031099378445580498219376391819745965887864647387211647794422908411100892195529730435423964537342228510107659017578765432
|
||||
AKv+3H/TruTX3wdMWnLzD05em8u/QMl6lCHT4VkK+uZwBXoLeji54Tcs/hZIhj0Bdj0URrRt+7JdGSTy4Sr986AtVFxBJZA3lT+JT4JSrq3oY1Tv+tX/yg8ZodQmbpQyyfaFg3BgeHNmsUoCrdqhj4IwBqEXoOBRIXnzaTuqqSEw 120779384043726135670909127168686589868907326577918074234323699599475436892003731971700278391108690400460261929381703781833059801757700386671579819341589048987186473249926590758009001670959004477454905417357202448886738669226760846888369186457452643053236389556969071303251275912453385963613554945645058007344
|
||||
ANXIB+HxOyJd3YYsscMpqZpi/eYjZi5q6A0MohU4BiWEJK/E4uIObLJDH5yd4ng+hn7UMhc+R/AxG88hIdOc5NyG/QyFs95ZLUC26F9rkRifu2CBkgqR5EQi2cgwC8jGxQOkC62YND6cAn/ILsKTYaH0iavtO9Tz04vQp9Ypc82H 150122383481070201614242107655752525590609186454390549085509458064289390813495886095936526832230958746095739308601699615024239939948911472291507190108935262129646691795733786714291498653838550751365834947465294261687773081563139416397262227609481906371677917295227469553787085145970923979142676551778927103367
|
||||
ZQLFoW+dJ7vrHdMlcLRGKY6T6PZKnE2L3NjXymS/55my2CDBLdDf3oXwLlRjVt9KnEiXyQzLhyY2PrFA4k3N/3P5lVDLHero5c36TMshbHgbIKRGN2CGWPEFeQ4j040IwVbQCPJeuF3jL5ikCxWZFXfeEnTL6TqumLfD9yLQfKA= 70932215714423143395949105745758445705072524008235214324766464113352968998429901322485575506330607802260244612268338586532462314021433435523464635419846126736185176246740838082062856583684393425704173881940108783636582561707441482446854068022535943408999200681879161519209676205165680598258447492092651404448
|
||||
LzzvPw0FdtM2G/RRiqoajJiIH+Lw3jpL4H+08yOpp1bNITR2Aq0beu2nP0H4o2Z1/FNr2hzuGakkAhVbmmRXc8keoOkeaAQAP/8OYxHpjrqou3WPWaKx+vUCTSqVYYf8gnVKpAAC2cD+3lW+/ZJ538o+c0ovbUKNu1u1j1OBtA0= 33171669664542509840621265032202455391098253465550501094201777336478104142847268103467889435377685359857979277521589539506627375165485879405453566052091202280471235979376217319335800766353336252760793484157724210008639813552207624049019149744883918494762511376489708611103181576211531366514802868659603747853
|
||||
APrGj1lIIlxA57DNh+bTEAFbJK2Y2P3MxLShb4fPx2aY6j88k3umoe07ISQLf9PzNPeml4/0I3w0KNd2x4s9KHbj7NsIT64lhO6eQSEteqZXZGXUYUyNzhrTbAjt+Q9LVKItQhsTkTW2HTQ5RQZfGrkL118b/I18J4P+T8CGZdDz 176100632478477421621142147788721746818712752858710594712903769452749028606541677227413333567013253138397373757811889654342173021761934591400685421771460440213093509170325205622261487145789848227404883040799927313402244625239515162996390018403365063394514244196976794479529075569412676472840544017222373593331
|
||||
Fvcl/LemWk29I5LCjU1QedTjGlkvFF/kZXNkRJv+vNZ7qgq6pX8WB9yVkk6AoclDYAhCRfKTKuEpR23iafVuHpprPfNXcqBH8n01kq3U27xqIy2hS+D6BRBK67PQaekq31EB0aOcEb/DuNaXakS9+mtTMx6BKt+WoEY+NkzHK6c= 16126868736093163702771491576570380743773057522016869811780571865928979861357811080042796140032050364543242385458140594532945509386155523162799601656485075247603490060565663264947465987286983338572455184901756399862440455644131755848583379822279676555143231305246033911608913609591095831135803702269767527335
|
||||
AKW8tvaB8YZ7J5W2lmquBniJzUhRfqFdPZPqvBoMzR4cRh1CMNdSFsYsnsaF3KolNzogdsxFpHAaEMG6zSvpNJAoi4nixCqb5SETXrSLASXvNjI9MvCoE2JCRq7kMbjPL7cem+mBPWZITGUI6KVlJPLxQngHYSFxukqlx7jznwJH 116384596458828069344020651216200368975621068920641012055593076864629080375946542748377736186556382088448816531408136815533164209947323588157210859294774679831647934533061547276394884474877353537242203645373945111105805934070657589374883764420038511061919092743520704686962593876316976299391579463759429567047
|
||||
D5N2P4FrqDf7/2Z2BJsqah4SjUtolic/yNqdNzvNEogDKZKAJyGq4zhnHvkYXkEm2ueU/FDPJRqisszG0oULdU6c7p8acirEwsGLVh4RamnFRgmQSK1vbiYB3bR+P+iFX/bZ+TWjN2Y3YMa5UB//I6Zb5kEIjmTpjY2LEPI1e6s= 10937855369372570149476727082965401421189236366492771695094788039313362971972373068736123833330006002198346944149230147444718818161877123407713821100752433128205189334393732633989950841577315682292180735057952587083688644195300641998709155269462601925653013312848413290208844194513502358901613104779186502571
|
||||
V/A1ktS0xrcwlI8xrYqvlLCFYrdVp8tEzZaZ9iNNpPH/pzVsA0WbnnUeHbdilkje+4OdoX9C4U2xaOuWOfvqLR0c7GeCkSffCqyf4ZsBmjy/BQL6rCpxMF0gIHXO5O8aJ1h17hy9LTuNzWm4zVh4pNFuHC9L6nAcf92udMiIQzk= 61752386563628388546439207444896778638632243226541303179646524864765343154194512297447627825411023405896612559648434895675553567405277169056807223959390559391191382555701580549902639604424290133917402316755076644943742815711432111554988540913643347167948778404861099845961151998728662878854088239266688156473
|
||||
APoPgEKA0/r1FYmt/Iso6ChYK6dDU62Y+vH5h/LVE00biBYG1f7aL3GdllUTN+XQSHpqlDw8CD+9xojwZIMfgpgjOwLbbe7Aso460zLrg3R8aHBpbVt8iZUgjACwPYr5UyKbFzIAWaXcnYYQ+tCO9aDIuOz+/7eIF62C81zXFJVZ 175598490446477604563905754135475294999639698464908622773037381109011373179895295130424828038708319325919451724985361900259676699137657615076219968061941008972496322083528922054390781811699677037439989404270415929836486610353098273115864435328533577114470407444852521009919911888840405368858409835197558461785
|
||||
cL54ymLJhRx3U20Y9aUTIsXy9Ags+XHy4qk3F7uJyO46eiXSL7VrrR9vTQXAbETbu1YiVWfslsPht810eUDUVaVir6yLnXkywn46Ci42FEvVoTEFjO22uYcCh8nqB8H589w/+lVSlNrcILugwfdfCvK1iZzVimOO6l3qzfXToOU= 79171550718114578361958369278761819285111811576818442980166457146638966315793211967882077899426611721874954146020093740153495693185472340728106727284441726113022873005252623222594060645383105757498856463065370975867121188445567981809371870213273555432308279508351518168027875538720367440153667708369625129189
|
||||
QdQN4qW2QZq8/fmSaqlRiPSoDbhmF0oYjaY29HcKYGHdlOH0AMJb+RUIq1aszvVtjh7AYay2TNhaZMWQ6Qi3c42SNk3A1MVknT6zqiRCGjNFfxf/matbRLbTFQF832MAId708vrFLF/o2HpekMkc5hcHB6bkUUhEI1NLcMXwGck= 46226230186280253581676626651942823886592433541360244612432763620730826574920825070086312767146345247802570752482654580909236388357139147786783758670999083804670979821212991224400629053427330483809790366665043598754931511997925850227997764381723288657884346974360232490075739442406431704368767588177525348809
|
||||
cxHvCK/dyVDvaqCCQyLeaiBGA36mV5el+1lc2eUTkHGUzX5gU0QQCEp+iSXNJhIOON8VFpKOFsziuV0Z+3cegWRw/VnxnjXcBh6IDKdupzOPB+Yl8MA1ti/GrQjLC6ikcNYNjQT0ZThL7KTqEvvZJH68WYmD0IuK26swjNGIGaI= 80804939616399473443737611589382762718815989847332356984276911837267997590368701684135326680567847542004499684038240485603420973682522792156533112356849436451918522884749244246467852622918805139990256619014116276456718693703261686778030658826952213058982142604346352178078750879100976710761147710018148637090
|
||||
AIQ3OIZevkYoRGBmsFaXJobSfLeInuKKReVYNjP5VEPoMq0mXTltY6l09/rQ3d1JjsMD1PfA7emhxex+H9t3leBIfCi6Ux34GQEjXWpQc4awuiy9tbR077HaJyecvb8Qy1FTnOHoH5C043QJzrKYT/sFXjgB60piI8Y0R/hwxO4r 92845026347218330987427785323244729176754623818531419911990153715676845614711324345879159989637824921793015074978358052562420379797956750450245721653716740651389924718711940869162230097839047895842495414221110468446944827052871968998907462191349838598297775847512250220907563815783358238473966349820476321323
|
||||
LoG6ib5lUh57rdmSkZSWzBoudytFohS4uoU/uly6OaQDOi34GeNVxu/yr6RszJyL9JWkGNgFaBIv/HirH5zA9VQAL/6kpL93a0/GQ/nuHkHy3GWZPF/2+yJ0PfazQ40fWhHZfRxBngWslbguFPjj1XaJ37YzpQAYb/+QcUai9ic= 32658152290878644668906121702816147999633088014476055330179597550087921141413344679134407016170035735846077181424615228657687216737432274043674411132745299610950657139041836412322040866250189120286839287690983293111362228893996267791120043532014262644480689231457941173330523718758287779526551822788227954215
|
||||
AKu2jgOQCCfYZ3CLkXEH44aO4TtwMPeK/eq4FtNj9HZ9FxT0LLNJh0ZXPOaPJjgznvIw5C7/hNm7rUs1JeV8I8dj3nbS3EVERQz1gc/ckYB3H1bViWREOD5+TScDusi86YO/z4ar3dauKkg5kT1kKDuU/OP5kNMWvtJjHc4Vd3L3 120581042599355202025471829872601846477331097842315143148145881424071317426176264583672725691485724160094190478865850305422057632110749683552966861219554215519032344086824849470294473808177223497912069335635933312949412445851201918768630656712413082629164792850095444166888072453190903931430551124946191872759
|
||||
ANLs7OsR7oBM5jSjVADrk+Mx9d0TeieTIkxwWiJ5STKNQmW2EzPOjgbfcLhbYEhzzDFJveXO2dzz6/c8V5oW2yqg7VMx88DzEbpQnQpk/rOQRw9jbI4fxXNJHkNZCeysEVvFfLJb4ecsGA0xJ3Aylny/jP10ahPv2z5K99edGZSU 148116916208650944522110872759145096907599612943009577897396622287067669897712748449324334650112672914917664881091633448764667172850435775162090891556266912697811031318228334453406561952979778127173704706529448647577013482442758465809198730066784986763500579667100246958959793527011919373534159474250508506260
|
||||
AL+Er3n1qj+SBsZVtOMJYg4m0CN+DE6gRnC1F7nPvd2XnBe+QE0+LKfcpUDHVNxoydW4BDzNVwnUNbyjXZ+iuddPtO9hchVEI36UiuL0ydeldFpOZ9mtHJaAF6abd0MlHw4vXRf8CbOvXb5N4s76ggijlZBjRtU563sSmBcyq6Zt 134488725667189507159811764480908602790838430340670328479145818969651133017546803581865897303917708192047926432630297993507146075655594931523561067937580218599890162311074002344315818494246433967228889645359283635389151927472221799543158424012020308449895562192866672439712148770104592027035768027605661099629
|
||||
AK/04XOBSjjPpuFXTDF82RNWnKqZz9mJQbS2B5bn0ehFnBa6j+B+MazX+AxXTL/d5+hPLT1uexcnSMl3DcGGwKipOXg7Dtuj3pfJXHTrCqXAUYrIXI+8vKVQO55yQPGfzIg9SVgetwW1sDk+a28ZhJ5a9OddqNoi5C+dLce7ZtNb 123560902006294001923570614486104726169564351074482936927091682096999779538353161007361361829586988452098646362280351148131540524964916445100589671458589346440250329883789099771417949746709217272531950438336245613419967556433467843237384555807236658182067742367748737224684334525934210197178231424396818830171
|
||||
PzOEGHlihiveoWFAALY+LOfkRJfm0NUF/uR6cSU/tbpGAq4onNpr+iZIzEP5o3JBLOtDC595/NBPI0fzaXl0vQvgJs6KG8iKANjsLKQjIpZBkoKhdbG9MzTVQuAeuDW0w3sn2iMZ/v2dgAzRwfqmQYXJr3I2BbcwWraIJuZXw5A= 44381416070253681813077725822442106641846565789204187691647505370231831464947935035197059366680327425453811558282831465960889061956588244308214943856009686127871667376028831540813257349779756631357122923723235595360268572998278795110672666089470210929411514949652537714634611421849780859192966935514197771152
|
||||
APnuduN01GS9dO2m2uCLs400AR2lX7elOnIPC5U6e17qbukxWYzNhilZlM4kdGXAIeYpzFdSIW/gxRMZe6TXq9krFWRaaPyT2QwRfGHYnazS9F1QNYmW1zXdt+qVp0JGxmh5PyDstbP8Z3x50/E8Mb0gLLPhNAvzY2Jnr9A8Q1Hy 175507868985304663005133968393406051624825489142498103948374797086106732382869120248515993626061853699363294022457032257026588816021007648668265488426495800459085474654859258116280251546902009156490112550154951965894022789029787886785376415437170872937201839249103828294508088966180386198213606090453461193202
|
||||
QHEhL4iVzNdUsfG0izTEepwTOvxka8t/9MwuF1Ey6kxsI+ry4g4sJPgR2xMnbtOmvQn2NitAkfvA8JPCiL7a8+gmf+DVRDjKDfpfrtgAVmo+3rH+uJYTrKhAp8R7ggU2xIrvbIrgeUj7ieThPI3Rtap+IdkPCL853JC/+oKtytM= 45252649968839515171157821292772647085425694172492111870169593872127007254353374581972876464918186509502070064028725519394859148593053614163356612260257013360168930649423732336969778875205250872728821432415158634190866775855521719727700464116412886964736859295086745723651735554245035077902615220578218265299
|
||||
APeaekK4mVhEShCfM0mkRebcg1Iq5CgrFIEGOoh1nHzgebr5A9Wrhm9yD1Vd3e+fFD9urDRB4y5MHPJHX1U2NFToC+H8nQkFXL8bfd/9Wl2c7y8m0Mxwi53pLIdzETLbbfeOOtJvuSYYT3n8+/PeMnJ46UD8OfqtnFuS0/bVpFLS 173873040145444066957050580959132871919216036714423404143335635770937773583761934638398867981658394368476005882852706046614562314432695052874974848076542261910660410561876043187368112065303981001507235893831108658530338308496461162623683138693880482650786841100027392293758260448606244283355655751440485602002
|
||||
FqC/wgZDPTUoObPFSH5w4QR79zj/O+ZiHGTEnsBMwNZD3Gl/ClRDIsFMDDupNLgwgXsqCQbpwSOHOtAvUuAFwRpzt5B7lwIgtP5ism/AZRno5p+9WVSmUAM3glHsNtvYydz2MkXtnXzSMIR1ZVoLrdwMnckE4pbMzggqz+JZqxw= 15889870005716350976759704672045310928616256175405784574141006779373730686049218680335525720670897894546334915362899913262232170795516176419192840427996647372619000239408311568577050460995518058850793096827271653902583271225799114408537346367483775593212272587811309978019791973449354003275559762102731778844
|
||||
AJXNbv2AMWadF5h99ZAUy5gLnVK/hMaakFo0ZedtPNRJobxPmwj+h52G+Czd0U48G0V0wpdeUJC9v/4BhjzhCvNhNsdAT1+vQXDuteYQ1aspsEKLQ6b+NknO88QSbRJw53+KeOY2xe7PKOa4V89XnFFBF7wljRnIYrM8vvcqVQDk 105194875227030598769888785590198577650278341586165110611689226597424766274486797264032300493674927704016605741286512271390703088626381669060095573361828932336327125438452066548897528158329044309005232090053420259033538936293519762277428283316506398965916381374819450858053512398634116052299066189424983605476
|
||||
AIDRnUpBHepjBqYAlU4MG/8JxzX1mPxVNHpWvnEVgvqTQx/bisFPpXrYs3jAKIR/lzevYwhH0K/8Vvw4NK9iTMFqgSnU44AZztKsoxUXsEsl1UU56UscY5C7ciKU6vjjWI7nm/uHNOXdE82TQXkk2WX8ferNqZU5DaLFCb+zxb7w 90459642084794142567976043425270153270545560059973413835786695756473295513758287577749768786155290305189883600338986370836806413936196854410098516254596146039255388020628703824195128439558127783534033672712705194483515442668075394018677699876614329419492391568463215822656901183478205197671375262145069825776
|
||||
AIdvVNzJqWPgAShvi3GhbhMQft+SLigKGrhoqas2Saz/bA9u9Td6fAxa2LjrAqshW6cnm2aalc3Yv6RW/Y8vg7Ho31NSaRjT4zMUenykcC0/Y88UNxREi85wdnHwGytms6Lq49H8/7EFGJIyL1PLRWPmZn6XFkegscI/HUq/hiKm 95105613103051650721863964216778532448106311156426028879315612217763044797186635476805213120469258258125661666950525364331551671653846368977016286153840829836509696804585927581668281228810410814602664419962214359687545209312836366693384158782798559255789953908588601637765910472073600954502095647132310971046
|
||||
DdchOPjXrI6lpV84IdKCisPmdqZan8AARXRLADEhixsfXCYuO+WhNatI/fM1vgv+/TxwwIQjIfG1vOZcB36JUfjHYdItYQ70vUXaVFdpqvoBGyfOTU50Ds/11iGPCF8mWiQwR30/XAXytqDZtaVJVWsgHD3RigBSnSHhnvZAWYg= 9719024770319024562623340689338530708271347986326272393419504304391837979619189392867902307307106771234732135400958362219711925045600118964223238147375808749507928768896918369395426933218443166133187066167663170936604731896932630589251946733237697936733924510107175304126061649311812536190882160340308613512
|
||||
I+Z6rdTOt26/v3dtUP1plITb15fjb6aMDvqFS3AD1+nxBqnnk7ISGE9j6dv762EIWQpMzcCG5NCCq35KOHEwRXP28zup6olOMt3CBFgYVcBE2pWOpGiO19G/iFweYZXZPY5HgIkex7HBbb7l6HhomPc2sLL/IRhh2oogyHx2JMM= 25210054612455888156900839678249806510561198051210010474517915819801056434402727631042894881559517808906460418029149538469607239850657781476308872923928122553395468026744382526167194202058040459679991391557937527079948356545086684521068912222036707113005006607012596093923970784177288565193670152033981048003
|
||||
ALbBoyelCs4UkfnPjMT3S67ujhBHBEE0uxLx6kSGZq2IOMU/QdWYPFElRgYC/y++334FSEycjS6NAJJo2ITpZCO5AjNJ93J3WYgbDLiwu1VzKHX6ItfFNEk45km+QTi07+pDKcKNd1k0mxqpLd/PuZd5hRpPDDoKBb6i+mrCb2yF 128335905497646745013379107761994003743181143126608677203818152878840562628631384684712779135591095534911406031545494164782375276574093777950840330452805743803067864740000758175436633463846967335728314347497013853264454015790847388463800323796888198433722196292529074568758149650782323407298620158495364705413
|
||||
ANwlxEkeqmqYTxw1ZwMi1v2wo4ntPaEYZYoTLTJQfa+kuIksnHW9va243HAiOixd+rviVdm1dEwzESBbX0wiJNtRBpP+bnRxy4xOBjNoOB0c/tfka5JVwu5eeskyHx4V3inLviUaj86Yck42n5NaJFMfBvhzVftZ/YF9WBITI8g6 154592850289860621115358362871905683265658659789986179554827712019629689749439795961607030363152337159590319622241556795951071651584979664762468782303706550885785493534656062553770262954861884613383561063525714923031691298088562054236178003658891902606245782350998076658704876516153027797371814038658244397114
|
||||
|
|
@ -1,120 +0,0 @@
|
|||
========================================
|
||||
Trust root parsing checking
|
||||
========================================
|
||||
|
||||
----------------------------------------
|
||||
14: Does not parse
|
||||
----------------------------------------
|
||||
baz.org
|
||||
*.foo.com
|
||||
http://*.schtuff.*/
|
||||
ftp://foo.com
|
||||
ftp://*.foo.com
|
||||
http://*.foo.com:80:90/
|
||||
foo.*.com
|
||||
http://foo.*.com
|
||||
http://www.*
|
||||
http://*foo.com/
|
||||
|
||||
|
||||
|
||||
5
|
||||
|
||||
----------------------------------------
|
||||
12: Insane
|
||||
----------------------------------------
|
||||
http://*/
|
||||
https://*/
|
||||
http://*.com
|
||||
http://*.com/
|
||||
https://*.com/
|
||||
http://*.com.au/
|
||||
http://*.co.uk/
|
||||
http://*.foo.notatld/
|
||||
https://*.foo.notatld/
|
||||
http://*.museum/
|
||||
https://*.museum/
|
||||
http://kink.fm/should/be/sane
|
||||
|
||||
----------------------------------------
|
||||
14: Sane
|
||||
----------------------------------------
|
||||
http://*.schtuff.com/
|
||||
http://*.foo.schtuff.com/
|
||||
http://*.schtuff.com
|
||||
http://www.schtuff.com/
|
||||
http://www.schutff.com
|
||||
http://*.this.that.schtuff.com/
|
||||
http://*.foo.com/path
|
||||
http://*.foo.com/path?action=foo2
|
||||
http://x.foo.com/path?action=foo2
|
||||
http://x.foo.com/path?action=%3D
|
||||
http://localhost:8081/
|
||||
http://localhost:8082/?action=openid
|
||||
https://foo.com/
|
||||
http://goathack.livejournal.org:8020/openid/login.bml
|
||||
|
||||
========================================
|
||||
return_to matching
|
||||
========================================
|
||||
|
||||
----------------------------------------
|
||||
30: matches
|
||||
----------------------------------------
|
||||
http://*/ http://cnn.com/
|
||||
http://*/ http://livejournal.com/
|
||||
http://*/ http://met.museum/
|
||||
http://*:8081/ http://met.museum:8081/
|
||||
http://localhost:8081/x?action=openid http://localhost:8081/x?action=openid
|
||||
http://*.foo.com http://b.foo.com
|
||||
http://*.foo.com http://b.foo.com/
|
||||
http://*.foo.com/ http://b.foo.com
|
||||
http://b.foo.com http://b.foo.com
|
||||
http://b.foo.com http://b.foo.com/
|
||||
http://b.foo.com/ http://b.foo.com
|
||||
http://*.b.foo.com http://b.foo.com
|
||||
http://*.b.foo.com http://b.foo.com/
|
||||
http://*.b.foo.com/ http://b.foo.com
|
||||
http://*.b.foo.com http://x.b.foo.com
|
||||
http://*.b.foo.com http://w.x.b.foo.com
|
||||
http://*.bar.co.uk http://www.bar.co.uk
|
||||
http://*.uoregon.edu http://x.cs.uoregon.edu
|
||||
http://x.com/abc http://x.com/abc
|
||||
http://x.com/abc http://x.com/abc/def
|
||||
http://*.x.com http://x.com/gallery
|
||||
http://*.x.com http://foo.x.com/gallery
|
||||
http://foo.x.com http://foo.x.com/gallery/xxx
|
||||
http://*.x.com/gallery http://foo.x.com/gallery
|
||||
http://localhost:8082/?action=openid http://localhost:8082/?action=openid
|
||||
http://goathack.livejournal.org:8020/ http://goathack.livejournal.org:8020/openid/login.bml
|
||||
https://foo.com https://foo.com
|
||||
http://Foo.com http://foo.com
|
||||
http://foo.com http://Foo.com
|
||||
http://foo.com/?x=y http://foo.com/?x=y&a=b
|
||||
|
||||
----------------------------------------
|
||||
23: does not match
|
||||
----------------------------------------
|
||||
http://*/ ftp://foo.com/
|
||||
http://*/ xxx
|
||||
http://*.x.com/abc http://foo.x.com
|
||||
http://*.x.com/abc http://*.x.com
|
||||
http://*.com/ http://*.com/
|
||||
http://x.com/abc http://x.com/
|
||||
http://x.com/abc http://x.com/a
|
||||
http://x.com/abc http://x.com/ab
|
||||
http://x.com/abc http://x.com/abcd
|
||||
http://*.cs.uoregon.edu http://x.uoregon.edu
|
||||
http://*.foo.com http://bar.com
|
||||
http://*.foo.com http://www.bar.com
|
||||
http://*.bar.co.uk http://xxx.co.uk
|
||||
https://foo.com http://foo.com
|
||||
http://foo.com https://foo.com
|
||||
http://foo.com:80 http://foo.com
|
||||
http://foo.com http://foo.com:80
|
||||
http://foo.com:81 http://foo.com:80
|
||||
http://*:80 http://foo.com:81
|
||||
http://foo.com/?a=b http://foo.com/?x=y
|
||||
http://foo.com/?a=b http://foo.com/?x=y&a=b
|
||||
http://foo.com/?a=b http://foo.com/
|
||||
http://*.oo.com/ http://foo.com/
|
||||
|
|
@ -1,79 +0,0 @@
|
|||
Already normal form
|
||||
http://example.com/
|
||||
http://example.com/
|
||||
|
||||
Add a trailing slash
|
||||
http://example.com
|
||||
http://example.com/
|
||||
|
||||
Remove an empty port segment
|
||||
http://example.com:/
|
||||
http://example.com/
|
||||
|
||||
Remove a default port segment
|
||||
http://example.com:80/
|
||||
http://example.com/
|
||||
|
||||
Capitalization in host names
|
||||
http://wWw.exaMPLE.COm/
|
||||
http://www.example.com/
|
||||
|
||||
Capitalization in scheme names
|
||||
htTP://example.com/
|
||||
http://example.com/
|
||||
|
||||
Capitalization in percent-escaped reserved characters
|
||||
http://example.com/foo%2cbar
|
||||
http://example.com/foo%2Cbar
|
||||
|
||||
Unescape percent-encoded unreserved characters
|
||||
http://example.com/foo%2Dbar%2dbaz
|
||||
http://example.com/foo-bar-baz
|
||||
|
||||
remove_dot_segments example 1
|
||||
http://example.com/a/b/c/./../../g
|
||||
http://example.com/a/g
|
||||
|
||||
remove_dot_segments example 2
|
||||
http://example.com/mid/content=5/../6
|
||||
http://example.com/mid/6
|
||||
|
||||
remove_dot_segments: single-dot
|
||||
http://example.com/a/./b
|
||||
http://example.com/a/b
|
||||
|
||||
remove_dot_segments: double-dot
|
||||
http://example.com/a/../b
|
||||
http://example.com/b
|
||||
|
||||
remove_dot_segments: leading double-dot
|
||||
http://example.com/../b
|
||||
http://example.com/b
|
||||
|
||||
remove_dot_segments: trailing single-dot
|
||||
http://example.com/a/.
|
||||
http://example.com/a/
|
||||
|
||||
remove_dot_segments: trailing double-dot
|
||||
http://example.com/a/..
|
||||
http://example.com/
|
||||
|
||||
remove_dot_segments: trailing single-dot-slash
|
||||
http://example.com/a/./
|
||||
http://example.com/a/
|
||||
|
||||
remove_dot_segments: trailing double-dot-slash
|
||||
http://example.com/a/../
|
||||
http://example.com/
|
||||
|
||||
Test of all kinds of syntax-based normalization
|
||||
hTTPS://a/./b/../b/%63/%7bfoo%7d
|
||||
https://a/b/c/%7Bfoo%7D
|
||||
|
||||
Unsupported scheme
|
||||
ftp://example.com/
|
||||
fail
|
||||
|
||||
Non-absolute URI
|
||||
http:/foo
|
||||
fail
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once "PHPUnit.php";
|
||||
require_once "Tests/Services/Yadis/DiscoverData.php";
|
||||
require_once "Services/Yadis/Yadis.php";
|
||||
require_once "Services/Yadis/HTTPFetcher.php";
|
||||
|
||||
$__status_header_re = '/Status: (\d+) .*?$/m';
|
||||
|
||||
function mkResponse($data)
|
||||
{
|
||||
global $__status_header_re;
|
||||
|
||||
$matches = array();
|
||||
$status_mo = preg_match($__status_header_re, $data, $matches);
|
||||
list($headers_str, $body) = explode("\n\n", $data, 2);
|
||||
$headers = array();
|
||||
foreach (explode("\n", $headers_str) as $line) {
|
||||
list($k, $v) = explode(":", $line, 2);
|
||||
$k = strtolower(trim($k));
|
||||
$v = trim($v);
|
||||
$headers[$k] = $v;
|
||||
}
|
||||
$status = intval($matches[1]);
|
||||
$r = new Services_Yadis_HTTPResponse(null, $status, $headers, $body);
|
||||
return $r;
|
||||
}
|
||||
class TestFetcher {
|
||||
function TestFetcher($base_url)
|
||||
{
|
||||
$this->base_url = $base_url;
|
||||
}
|
||||
|
||||
function get($url, $headers = null)
|
||||
{
|
||||
$current_url = $url;
|
||||
while (true) {
|
||||
$parsed = parse_url($current_url);
|
||||
$path = substr($parsed['path'], 1);
|
||||
$data = generateSample($path, $this->base_url);
|
||||
|
||||
if ($data === null) {
|
||||
return new Services_Yadis_HTTPResponse($current_url,
|
||||
404,
|
||||
array(),
|
||||
'');
|
||||
}
|
||||
|
||||
$response = mkResponse($data);
|
||||
if (in_array($response->status, array(301, 302, 303, 307))) {
|
||||
$current_url = $response->headers['location'];
|
||||
} else {
|
||||
$response->final_url = $current_url;
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class MockFetcher {
|
||||
function MockFetcher() {
|
||||
$this->count = 0;
|
||||
}
|
||||
|
||||
function get($uri, $headers = null, $body = null)
|
||||
{
|
||||
$this->count++;
|
||||
if ($this->count == 1) {
|
||||
$headers = array(strtolower('X-XRDS-Location') . ': http://unittest/404');
|
||||
return new Services_Yadis_HTTPResponse($uri, 200, $headers, '');
|
||||
} else {
|
||||
return new Services_Yadis_HTTPResponse($uri, 404);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class TestSecondGet extends PHPUnit_TestCase {
|
||||
function test_404()
|
||||
{
|
||||
$uri = "http://something.unittest/";
|
||||
$response = null;
|
||||
$fetcher = new MockFetcher();
|
||||
$this->assertTrue(
|
||||
Services_Yadis_Yadis::discover($uri, $response, $fetcher) === null);
|
||||
}
|
||||
}
|
||||
|
||||
class _TestCase extends PHPUnit_TestCase {
|
||||
var $base_url = 'http://invalid.unittest/';
|
||||
|
||||
function _TestCase($input_name, $id_name, $result_name, $success)
|
||||
{
|
||||
$this->input_name = $input_name;
|
||||
$this->id_name = $id_name;
|
||||
$this->result_name = $result_name;
|
||||
$this->success = $success;
|
||||
$this->fetcher = new TestFetcher($this->base_url);
|
||||
parent::PHPUnit_TestCase();
|
||||
}
|
||||
|
||||
function setUp()
|
||||
{
|
||||
list($this->input_url, $this->expected) = generateResult($this->base_url,
|
||||
$this->input_name,
|
||||
$this->id_name,
|
||||
$this->result_name,
|
||||
$this->success);
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
if ($this->expected === null) {
|
||||
$response = array();
|
||||
$this->assertTrue(
|
||||
Services_Yadis_Yadis::discover($this->input_url, $response,
|
||||
$this->fetcher) === null);
|
||||
} else {
|
||||
$response = array();
|
||||
$result = Services_Yadis_Yadis::discover($this->input_url,
|
||||
$response,
|
||||
$this->fetcher);
|
||||
|
||||
if ($result === null) {
|
||||
$this->fail("Discovery result was null");
|
||||
return;
|
||||
}
|
||||
|
||||
$this->assertEquals($this->input_url, $result->request_uri);
|
||||
|
||||
$msg = 'Identity URL mismatch: actual = %s, expected = %s';
|
||||
$msg = sprintf($msg, $result->uri, $this->expected->uri);
|
||||
$this->assertEquals($this->expected->uri, $result->uri, $msg);
|
||||
|
||||
$msg = 'Content mismatch: actual = %s, expected = %s';
|
||||
$msg = sprintf($msg, $result->body, $this->expected->body);
|
||||
$this->assertEquals($this->expected->body, $result->body, $msg);
|
||||
|
||||
$this->assertEquals($this->expected->xrds_uri, $result->xrds_uri);
|
||||
$this->assertEquals($this->expected->content_type, $result->content_type);
|
||||
}
|
||||
}
|
||||
|
||||
function getName()
|
||||
{
|
||||
if ($this->input_url) {
|
||||
return $this->input_url;
|
||||
} else {
|
||||
return $this->input_name;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_Discover extends PHPUnit_TestSuite {
|
||||
|
||||
function getName()
|
||||
{
|
||||
return "Tests_Services_Yadis_Discover";
|
||||
}
|
||||
|
||||
function Tests_Services_Yadis_Discover()
|
||||
{
|
||||
global $testlist;
|
||||
|
||||
foreach ($testlist as $test) {
|
||||
list($success, $input_name, $id_name, $result_name) = $test;
|
||||
$this->addTest(new _TestCase($input_name, $id_name, $result_name, $success));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,148 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once "Services/Yadis/Yadis.php";
|
||||
require_once "Tests/Services/Yadis/TestUtil.php";
|
||||
|
||||
$testlist = array(
|
||||
// success, input_name, id_name, result_name
|
||||
array(true, "equiv", "equiv", "xrds"),
|
||||
array(true, "header", "header", "xrds"),
|
||||
array(true, "lowercase_header", "lowercase_header", "xrds"),
|
||||
array(true, "xrds", "xrds", "xrds"),
|
||||
array(true, "xrds_ctparam", "xrds_ctparam", "xrds_ctparam"),
|
||||
array(true, "xrds_ctcase", "xrds_ctcase", "xrds_ctcase"),
|
||||
array(false, "xrds_html", "xrds_html", "xrds_html"),
|
||||
array(true, "redir_equiv", "equiv", "xrds"),
|
||||
array(true, "redir_header", "header", "xrds"),
|
||||
array(true, "redir_xrds", "xrds", "xrds"),
|
||||
array(false, "redir_xrds_html", "xrds_html", "xrds_html"),
|
||||
array(true, "redir_redir_equiv", "equiv", "xrds"),
|
||||
array(false, "404_server_response", null, null),
|
||||
array(false, "404_with_header", null, null),
|
||||
array(false, "404_with_meta", null, null),
|
||||
array(false, "201_server_response", null, null),
|
||||
array(false, "500_server_response", null, null)
|
||||
);
|
||||
|
||||
function getExampleXRDS()
|
||||
{
|
||||
return Tests_Services_Yadis_readdata('example-xrds.xml');
|
||||
}
|
||||
|
||||
$example_xrds = getExampleXRDS();
|
||||
$default_test_file = 'test1-discover.txt';
|
||||
|
||||
$discover_tests = array();
|
||||
|
||||
function readTests($filename)
|
||||
{
|
||||
$data = Tests_Services_Yadis_readdata($filename);
|
||||
|
||||
if ($data === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$tests = array();
|
||||
foreach (preg_split("/\f\n/", $data) as $case) {
|
||||
list($name, $content) = explode("\n", $case, 2);
|
||||
$tests[$name] = $content;
|
||||
}
|
||||
return $tests;
|
||||
}
|
||||
|
||||
function getData($filename, $name)
|
||||
{
|
||||
global $discover_tests;
|
||||
if (!array_key_exists($filename, $discover_tests)) {
|
||||
$data = readTests($filename);
|
||||
if ($data === null) {
|
||||
return null;
|
||||
}
|
||||
$discover_tests[$filename] = $data;
|
||||
}
|
||||
|
||||
$file_tests = $discover_tests[$filename];
|
||||
|
||||
if (array_key_exists($name, $file_tests)) {
|
||||
return $file_tests[$name];
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
function fillTemplate($test_name, $template, $base_url, $example_xrds)
|
||||
{
|
||||
$mapping = array(
|
||||
array('URL_BASE/', $base_url),
|
||||
array('<XRDS Content>', $example_xrds),
|
||||
array('YADIS_HEADER', 'X-XRDS-Location'),
|
||||
array('NAME', $test_name));
|
||||
|
||||
foreach ($mapping as $pair) {
|
||||
list($k, $v) = $pair;
|
||||
$template = str_replace($k, $v, $template);
|
||||
}
|
||||
|
||||
return $template;
|
||||
}
|
||||
|
||||
function generateSample($test_name, $base_url,
|
||||
$_example_xrds = null, $filename = null)
|
||||
{
|
||||
global $example_xrds, $default_test_file;
|
||||
|
||||
if ($_example_xrds === null) {
|
||||
$_example_xrds = $example_xrds;
|
||||
}
|
||||
|
||||
if ($filename === null) {
|
||||
$filename = $default_test_file;
|
||||
}
|
||||
|
||||
$template = getData($filename, $test_name);
|
||||
|
||||
if ($template === null) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return fillTemplate($test_name, $template, $base_url, $_example_xrds);
|
||||
}
|
||||
|
||||
function generateResult($base_url, $input_name, $id_name, $result_name, $success)
|
||||
{
|
||||
$input_url = $base_url . $input_name; // urlparse.urljoin(base_url, input_name)
|
||||
|
||||
// If the name is null then we expect the protocol to fail, which
|
||||
// we represent by null
|
||||
if ($id_name === null) {
|
||||
// assert result_name is null
|
||||
return array($input_url, null); // DiscoveryFailure
|
||||
}
|
||||
|
||||
$result = generateSample($result_name, $base_url);
|
||||
list($headers, $content) = explode("\n\n", $result, 2);
|
||||
$header_lines = explode("\n", $headers);
|
||||
$ctype = null;
|
||||
foreach ($header_lines as $header_line) {
|
||||
if (strpos($header_line, 'Content-Type:') === 0) {
|
||||
list($temp, $ctype) = explode(":", $header_line, 2);
|
||||
$ctype = trim($ctype);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$id_url = $base_url . $id_name;
|
||||
|
||||
$result = new Services_Yadis_Yadis();
|
||||
$result->uri = $id_url;
|
||||
if ($success) {
|
||||
$result->xrds_uri = $base_url . $result_name;
|
||||
} else {
|
||||
$result->xrds_uri = null;
|
||||
}
|
||||
$result->content_type = $ctype;
|
||||
$result->body = $content;
|
||||
return array($input_url, $result);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,88 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the Yadis HTML parsing functionality.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package Yadis
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'Tests/Services/Yadis/TestUtil.php';
|
||||
require_once 'Services/Yadis/ParseHTML.php';
|
||||
require_once 'PHPUnit.php';
|
||||
|
||||
class Tests_Services_Yadis_ParseTest extends PHPUnit_TestCase {
|
||||
function Tests_Services_Yadis_ParseTest($case)
|
||||
{
|
||||
list($result, $comment, $html) = $case;
|
||||
|
||||
$this->result = $result;
|
||||
$this->comment = $comment;
|
||||
$this->html_string = $html;
|
||||
$this->parser = new Services_Yadis_ParseHTML();
|
||||
}
|
||||
|
||||
function getName()
|
||||
{
|
||||
return $this->comment;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$value = $this->parser->getHTTPEquiv($this->html_string);
|
||||
|
||||
if ($this->result == "EOF") {
|
||||
$this->assertTrue($value === null);
|
||||
} else if ($this->result == "None") {
|
||||
$this->assertTrue($value === null);
|
||||
} else {
|
||||
$this->assertEquals($this->result, $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_ParseHTML extends PHPUnit_TestSuite {
|
||||
|
||||
function getName()
|
||||
{
|
||||
return "Tests_Services_Yadis_Parse";
|
||||
}
|
||||
|
||||
function parseTests($s)
|
||||
{
|
||||
$tests = array();
|
||||
|
||||
$cases = preg_split("/\f\n/", $s);
|
||||
|
||||
foreach ($cases as $case) {
|
||||
// Split the case text on newline, and keep the first two
|
||||
// lines and re-join the rest (those are the HTML).
|
||||
$parts = explode("\n", $case);
|
||||
$result = $parts[0];
|
||||
$html_comment = $parts[1];
|
||||
$html_string = implode("\n", array_slice($parts, 2));
|
||||
$tests[] = array($result, $html_comment, $html_string);
|
||||
}
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
function Tests_Services_Yadis_ParseHTML()
|
||||
{
|
||||
$test_data = Tests_Services_Yadis_readdata('test1-parsehtml.txt');
|
||||
|
||||
$test_cases = $this->parseTests($test_data);
|
||||
|
||||
foreach ($test_cases as $case) {
|
||||
$this->addTest(new Tests_Services_Yadis_ParseTest($case));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,28 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Utilites for test functions
|
||||
*/
|
||||
|
||||
function Tests_Services_Yadis_datafile($name, $reader)
|
||||
{
|
||||
$path = dirname(realpath(__FILE__));
|
||||
$sep = DIRECTORY_SEPARATOR;
|
||||
$filename = $path . $sep . 'data' . $sep . $name;
|
||||
$data = $reader($filename);
|
||||
if ($data === false) {
|
||||
$msg = "Failed to open data file: $name";
|
||||
trigger_error($msg, E_USER_ERROR);
|
||||
}
|
||||
return $data;
|
||||
}
|
||||
|
||||
function Tests_Services_Yadis_readdata($name)
|
||||
{
|
||||
return Tests_Services_Yadis_datafile($name, 'file_get_contents');
|
||||
}
|
||||
|
||||
function Tests_Services_Yadis_readlines($name)
|
||||
{
|
||||
return Tests_Services_Yadis_datafile($name, 'file');
|
||||
}
|
||||
|
|
@ -1,241 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* XRDS-parsing tests for the Yadis library.
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Services/Yadis/XRDS.php';
|
||||
require_once 'Services/Yadis/XRIRes.php';
|
||||
require_once 'Services/Yadis/XRI.php';
|
||||
require_once 'Tests/Services/Yadis/TestUtil.php';
|
||||
|
||||
class Tests_Services_Yadis_XRDS extends PHPUnit_TestCase {
|
||||
|
||||
function test_good()
|
||||
{
|
||||
$files = array(
|
||||
'brian.xrds' => 1,
|
||||
'pip.xrds' => 2
|
||||
);
|
||||
|
||||
foreach ($files as $filename => $service_count) {
|
||||
$xml = Tests_Services_Yadis_readdata($filename);
|
||||
$xrds = Services_Yadis_XRDS::parseXRDS($xml);
|
||||
|
||||
$this->assertTrue($xrds !== null);
|
||||
|
||||
if ($xrds) {
|
||||
$this->assertEquals(count($xrds->services()), $service_count);
|
||||
} else {
|
||||
$this->fail("Could not test XRDS service list because the ".
|
||||
"XRDS object is null");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function test_good_multi()
|
||||
{
|
||||
$xml = Tests_Services_Yadis_readdata("brian.multi.xrds");
|
||||
$xrds = Services_Yadis_XRDS::parseXRDS($xml);
|
||||
$this->assertTrue($xrds !== null);
|
||||
$this->assertEquals(count($xrds->services()), 1);
|
||||
$s = $xrds->services();
|
||||
$s = $s[0];
|
||||
|
||||
$types = $s->getTypes();
|
||||
|
||||
$this->assertTrue(count($types) == 1);
|
||||
$this->assertEquals('http://openid.net/signon/1.0',
|
||||
$types[0]);
|
||||
}
|
||||
|
||||
function test_good_uri_multi()
|
||||
{
|
||||
$xml = Tests_Services_Yadis_readdata("brian.multi_uri.xrds");
|
||||
$xrds = Services_Yadis_XRDS::parseXRDS($xml);
|
||||
$this->assertTrue($xrds !== null);
|
||||
$this->assertEquals(1, count($xrds->services()));
|
||||
}
|
||||
|
||||
function test_uri_sorting()
|
||||
{
|
||||
$xml = Tests_Services_Yadis_readdata("uri_priority.xrds");
|
||||
$xrds = Services_Yadis_XRDS::parseXRDS($xml);
|
||||
$services = $xrds->services();
|
||||
$uris = $services[0]->getURIs();
|
||||
|
||||
$expected_uris = array(
|
||||
"http://zero.priority/",
|
||||
"http://one.priority/",
|
||||
"http://no.priority/"
|
||||
);
|
||||
|
||||
$this->assertEquals($uris, $expected_uris);
|
||||
}
|
||||
|
||||
function test_bad()
|
||||
{
|
||||
$this->assertTrue(Services_Yadis_XRDS::parseXRDS(null) === null);
|
||||
$this->assertTrue(Services_Yadis_XRDS::parseXRDS(5) === null);
|
||||
$this->assertTrue(Services_Yadis_XRDS::parseXRDS('') === null);
|
||||
$this->assertTrue(Services_Yadis_XRDS::parseXRDS('<html></html>') ===
|
||||
null);
|
||||
$this->assertTrue(Services_Yadis_XRDS::parseXRDS("\x00") === null);
|
||||
}
|
||||
|
||||
function test_getCanonicalID()
|
||||
{
|
||||
$canonicalIDtests = array(
|
||||
array("@ootao*test1", "delegated-20060809.xrds",
|
||||
"@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01"),
|
||||
array("@ootao*test1", "delegated-20060809-r1.xrds",
|
||||
"@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01"),
|
||||
array("@ootao*test1", "delegated-20060809-r2.xrds",
|
||||
"@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01"),
|
||||
array("@ootao*test1", "sometimesprefix.xrds",
|
||||
"@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01"),
|
||||
array("@ootao*test1", "prefixsometimes.xrds",
|
||||
"@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01"),
|
||||
array("=keturn*isDrummond", "spoof1.xrds", null),
|
||||
array("=keturn*isDrummond", "spoof2.xrds", null),
|
||||
array("@keturn*is*drummond", "spoof3.xrds", null),
|
||||
// Don't let IRI authorities be canonical for the GCS.
|
||||
array("phreak.example.com", "delegated-20060809-r2.xrds", null)
|
||||
// TODO: Refs
|
||||
// ("@ootao*test.ref", "ref.xrds", "@!BAE.A650.823B.2475")
|
||||
);
|
||||
|
||||
foreach ($canonicalIDtests as $tupl) {
|
||||
list($iname, $filename, $expectedID) = $tupl;
|
||||
|
||||
$xml = Tests_Services_Yadis_readdata($filename);
|
||||
$xrds = Services_Yadis_XRDS::parseXRDS($xml);
|
||||
$this->_getCanonicalID($iname, $xrds, $expectedID);
|
||||
}
|
||||
}
|
||||
|
||||
function _getCanonicalID($iname, $xrds, $expectedID)
|
||||
{
|
||||
if ($expectedID === null) {
|
||||
$result = Services_Yadis_getCanonicalID($iname, $xrds);
|
||||
if ($result !== false) {
|
||||
$this->fail($iname.' (got '.$result.')');
|
||||
}
|
||||
} else {
|
||||
$cid = Services_Yadis_getCanonicalID($iname, $xrds);
|
||||
$this->assertEquals(Services_Yadis_XRI($expectedID), $cid);
|
||||
}
|
||||
}
|
||||
|
||||
function test_services_filters()
|
||||
{
|
||||
// First, just be sure that service objects do the right
|
||||
// thing.
|
||||
$xml = Tests_Services_Yadis_readdata("brian_priority.xrds");
|
||||
$xrds = Services_Yadis_XRDS::parseXRDS($xml,
|
||||
array('openid' =>
|
||||
'http://openid.net/xmlns/1.0'));
|
||||
$this->assertTrue($xrds !== null);
|
||||
|
||||
// Get list of service objects.
|
||||
$services = $xrds->services();
|
||||
$this->assertEquals(count($services), 2, "first service count");
|
||||
|
||||
// Query the two service objecs.
|
||||
$s1 = $services[0];
|
||||
$this->assertEquals($s1->getPriority(), 1, "first priority check");
|
||||
$types = $s1->getTypes();
|
||||
$this->assertEquals(count($types), 1, "first type check");
|
||||
|
||||
$s2 = $services[1];
|
||||
$this->assertEquals($s2->getPriority(), 2, "second priority check");
|
||||
$types = $s2->getTypes();
|
||||
$this->assertEquals(count($types), 1, "second type check");
|
||||
|
||||
function _DelegateFilter(&$service)
|
||||
{
|
||||
if ($service->getElements('openid:Delegate')) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Make sure that a filter which matches both DOES match both.
|
||||
$this->assertEquals(count(
|
||||
$xrds->services(array("_DelegateFilter"))), 2,
|
||||
"_DelegateFilter check");
|
||||
|
||||
// This filter should match all services in the document.
|
||||
function _HasTypeAndURI(&$service)
|
||||
{
|
||||
if ($service->getTypes() &&
|
||||
$service->getURIs()) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// This filter should only match one.
|
||||
function _URIMatchesSchtuff(&$service)
|
||||
{
|
||||
$uris = $service->getURIs();
|
||||
|
||||
foreach ($uris as $uri) {
|
||||
if (preg_match("|schtuff|", $uri)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// This filter should only match one.
|
||||
function _URIMatchesMyOpenID(&$service)
|
||||
{
|
||||
$uris = $service->getURIs();
|
||||
|
||||
foreach ($uris as $uri) {
|
||||
if (preg_match("|myopenid|", $uri)) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
// Make sure a pair of filters in ALL mode only match one service.
|
||||
$this->assertEquals(count(
|
||||
$xrds->services(array("_HasTypeAndURI",
|
||||
"_URIMatchesSchtuff"),
|
||||
SERVICES_YADIS_MATCH_ALL)), 1,
|
||||
"_HasTypeAndURI / _URIMatchesSchtuff check");
|
||||
|
||||
// Make sure a pair of filters in ALL mode only match one service.
|
||||
$this->assertEquals(count(
|
||||
$xrds->services(array("_HasTypeAndURI",
|
||||
"_URIMatchesMyOpenID"),
|
||||
SERVICES_YADIS_MATCH_ALL)), 1,
|
||||
"_HasTypeAndURI / _URIMatchesMyOpenID check");
|
||||
|
||||
// Make sure a pair of filters in ANY mode matches both services.
|
||||
$this->assertEquals(count(
|
||||
$xrds->services(array("_URIMatchesMyOpenID",
|
||||
"_URIMatchesSchtuff"))), 2,
|
||||
"_URIMatchesMyOpenID / _URIMatchesSchtuff check");
|
||||
|
||||
// Make sure the order of the services returned (when using
|
||||
// filters) is correct.
|
||||
$s = $xrds->services(array("_URIMatchesMyOpenID",
|
||||
"_URIMatchesSchtuff"));
|
||||
|
||||
$this->assertTrue($s[0]->getPriority() === 1, "s[0] priority check");
|
||||
$this->assertTrue($s[1]->getPriority() === 2, "s[1] priority check");
|
||||
|
||||
// Make sure a bad filter mode gets us a null service list.
|
||||
$this->assertTrue($xrds->services(array("_URIMatchesMyOpenID",
|
||||
"_URIMatchesSchtuff"),
|
||||
"bogus") === null,
|
||||
"bogus filter check");
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,141 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* XRI resolution / handling tests.
|
||||
*
|
||||
* @package Yadis
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once "PHPUnit.php";
|
||||
require_once "Services/Yadis/XRIRes.php";
|
||||
require_once "Services/Yadis/XRI.php";
|
||||
require_once "Services/Yadis/Yadis.php";
|
||||
|
||||
class Tests_Services_Yadis_XriDiscoveryTestCase extends PHPUnit_TestCase {
|
||||
function runTest()
|
||||
{
|
||||
$this->assertEquals(
|
||||
Services_Yadis_identifierScheme('=john.smith'), 'XRI');
|
||||
|
||||
$this->assertEquals(
|
||||
Services_Yadis_identifierScheme('@smiths/john'), 'XRI');
|
||||
|
||||
$this->assertEquals(
|
||||
Services_Yadis_identifierScheme('smoker.myopenid.com'), 'URI');
|
||||
|
||||
$this->assertEquals(
|
||||
Services_Yadis_identifierScheme('xri://=john'), 'XRI');
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_XriEscapingTestCase extends PHPUnit_TestCase {
|
||||
function test_escaping_percents()
|
||||
{
|
||||
$this->assertEquals(Services_Yadis_escapeForIRI('@example/abc%2Fd/ef'),
|
||||
'@example/abc%252Fd/ef');
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
// no escapes
|
||||
$this->assertEquals('@example/foo/(@bar)',
|
||||
Services_Yadis_escapeForIRI('@example/foo/(@bar)'));
|
||||
|
||||
// escape slashes
|
||||
$this->assertEquals('@example/foo/(@bar%2Fbaz)',
|
||||
Services_Yadis_escapeForIRI('@example/foo/(@bar/baz)'));
|
||||
|
||||
$this->assertEquals('@example/foo/(@bar%2Fbaz)/(+a%2Fb)',
|
||||
Services_Yadis_escapeForIRI('@example/foo/(@bar/baz)/(+a/b)'));
|
||||
|
||||
// escape query ? and fragment
|
||||
$this->assertEquals('@example/foo/(@baz%3Fp=q%23r)?i=j#k',
|
||||
Services_Yadis_escapeForIRI('@example/foo/(@baz?p=q#r)?i=j#k'));
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_ProxyQueryTestCase extends PHPUnit_TestCase {
|
||||
function setUp()
|
||||
{
|
||||
$this->proxy_url = 'http://xri.example.com/';
|
||||
$this->fetcher = Services_Yadis_Yadis::getHTTPFetcher();
|
||||
$this->proxy = new Services_Yadis_ProxyResolver($fetcher,
|
||||
$this->proxy_url);
|
||||
$this->servicetype = 'xri://+i-service*(+forwarding)*($v*1.0)';
|
||||
$this->servicetype_enc = 'xri%3A%2F%2F%2Bi-service%2A%28%2Bforwarding%29%2A%28%24v%2A1.0%29';
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$st = $this->servicetype;
|
||||
$ste = $this->servicetype_enc;
|
||||
$args_esc = "_xrd_r=application%2Fxrds%2Bxml&_xrd_t=" . $ste;
|
||||
$h = $this->proxy_url;
|
||||
$this->assertEquals($h . '=foo?' . $args_esc,
|
||||
$this->proxy->queryURL('=foo', $st));
|
||||
$this->assertEquals($h . '=foo/bar?baz&' . $args_esc,
|
||||
$this->proxy->queryURL('=foo/bar?baz', $st));
|
||||
$this->assertEquals($h . '=foo/bar?baz=quux&' . $args_esc,
|
||||
$this->proxy->queryURL('=foo/bar?baz=quux', $st));
|
||||
$this->assertEquals($h . '=foo/bar?mi=fa&so=la&' . $args_esc,
|
||||
$this->proxy->queryURL('=foo/bar?mi=fa&so=la', $st));
|
||||
|
||||
$args_esc = "_xrd_r=application%2Fxrds%2Bxml&_xrd_t=" . $ste;
|
||||
$h = $this->proxy_url;
|
||||
$this->assertEquals($h . '=foo/bar??' . $args_esc,
|
||||
$this->proxy->queryURL('=foo/bar?', $st));
|
||||
$this->assertEquals($h . '=foo/bar????' . $args_esc,
|
||||
$this->proxy->queryURL('=foo/bar???', $st));
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_TestGetRootAuthority extends PHPUnit_TestCase {
|
||||
function runTest()
|
||||
{
|
||||
$xris = array(
|
||||
array("@foo", "@"),
|
||||
array("@foo*bar", "@"),
|
||||
array("@*foo*bar", "@"),
|
||||
array("@foo/bar", "@"),
|
||||
array("!!990!991", "!"),
|
||||
array("!1001!02", "!"),
|
||||
array("=foo*bar", "="),
|
||||
array("(example.com)/foo", "(example.com)"),
|
||||
array("(example.com)*bar/foo", "(example.com)"),
|
||||
array("baz.example.com/foo", "baz.example.com"),
|
||||
array("baz.example.com:8080/foo", "baz.example.com:8080")
|
||||
// Looking at the ABNF in XRI Syntax 2.0, I don't think you can
|
||||
// have example.com*bar. You can do (example.com)*bar, but that
|
||||
// would mean something else.
|
||||
// ("example.com*bar/(=baz)", "example.com*bar"),
|
||||
// ("baz.example.com!01/foo", "baz.example.com!01"),
|
||||
);
|
||||
|
||||
foreach ($xris as $tupl) {
|
||||
list($thexri, $expected_root) = $tupl;
|
||||
$this->assertEquals(Services_Yadis_XRI($expected_root),
|
||||
Services_Yadis_rootAuthority($thexri),
|
||||
'rootAuthority test ('.$thexri.')');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_XRI extends PHPUnit_TestSuite {
|
||||
function getName()
|
||||
{
|
||||
return "Tests_Services_Yadis_XRI";
|
||||
}
|
||||
|
||||
function Tests_Services_Yadis_XRI()
|
||||
{
|
||||
$this->addTest(new Tests_Services_Yadis_ProxyQueryTestCase());
|
||||
$this->addTest(new Tests_Services_Yadis_XriEscapingTestCase());
|
||||
$this->addTest(new Tests_Services_Yadis_XriDiscoveryTestCase());
|
||||
$this->addTest(new Tests_Services_Yadis_TestGetRootAuthority());
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,91 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Tests for the core of the PHP Yadis library.
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'Services/Yadis/Yadis.php';
|
||||
require_once 'Tests/Services/Yadis/TestUtil.php';
|
||||
|
||||
class Tests_Services_Yadis_DiscoveryTest extends PHPUnit_TestCase {
|
||||
|
||||
function Tests_Services_Yadis_DiscoveryTest($input_url, $redir_uri,
|
||||
$xrds_uri, $num)
|
||||
{
|
||||
$this->input_url = $input_url;
|
||||
$this->redir_uri = $redir_uri;
|
||||
$this->xrds_uri = $xrds_uri;
|
||||
$this->num = $num;
|
||||
}
|
||||
|
||||
function getName()
|
||||
{
|
||||
return "Yadis discovery test ".$this->num;
|
||||
}
|
||||
|
||||
function runTest()
|
||||
{
|
||||
$http_response = null;
|
||||
$fetcher = Services_Yadis_Yadis::getHTTPFetcher();
|
||||
$y = Services_Yadis_Yadis::discover(
|
||||
$this->input_url, $http_response, $fetcher);
|
||||
$this->assertTrue($y !== null);
|
||||
|
||||
// Compare parts of returned Yadis object to expected URLs.
|
||||
$this->assertEquals($this->redir_uri, $y->uri);
|
||||
|
||||
if ($this->xrds_uri) {
|
||||
$this->assertEquals($this->xrds_uri, $y->xrds_uri);
|
||||
// Compare contents of actual HTTP GET with that of Yadis
|
||||
// response.
|
||||
$f = Services_Yadis_Yadis::getHTTPFetcher();
|
||||
$response = $f->get($this->xrds_uri);
|
||||
|
||||
$this->assertEquals($response->body, $y->body);
|
||||
} else {
|
||||
$this->assertTrue($y->xrds_uri === null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Tests_Services_Yadis_Yadis extends PHPUnit_TestSuite {
|
||||
|
||||
function getName()
|
||||
{
|
||||
return "Tests_Services_Yadis_Yadis";
|
||||
}
|
||||
|
||||
function parseTests($data)
|
||||
{
|
||||
$cases = explode("\n", $data);
|
||||
$tests = array();
|
||||
|
||||
foreach ($cases as $line) {
|
||||
if ($line && ($line[0] != "#")) {
|
||||
$tests[] = explode("\t", $line, 3);
|
||||
}
|
||||
}
|
||||
|
||||
return $tests;
|
||||
}
|
||||
|
||||
function Tests_Services_Yadis_Yadis()
|
||||
{
|
||||
$test_data = Tests_Services_Yadis_readdata('manifest.txt');
|
||||
|
||||
$test_cases = $this->parseTests($test_data);
|
||||
|
||||
$i = 0;
|
||||
foreach ($test_cases as $case) {
|
||||
$i++;
|
||||
list($input, $redir, $xrds) = $case;
|
||||
$this->addTest(new Tests_Services_Yadis_DiscoveryTest($input,
|
||||
$redir,
|
||||
$xrds, $i));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
delegated-20060809.xrds - results from proxy.xri.net, determined by
|
||||
Drummond and Kevin to be incorrect.
|
||||
delegated-20060809-r1.xrds - Drummond's 1st correction
|
||||
delegated-20060809-r2.xrds - Drummond's 2nd correction
|
||||
|
||||
spoofs: keturn's (=!E4)'s attempts to log in with Drummond's i-number (=!D2)
|
||||
spoof1.xrds
|
||||
spoof2.xrds
|
||||
spoof3.xrds - attempt to steal @!C0!D2 by having "at least one" CanonicalID
|
||||
match the $res service ProviderID.
|
||||
|
||||
ref.xrds - resolving @ootao*test.ref, which refers to a neustar XRI.
|
||||
|
|
@ -1,118 +0,0 @@
|
|||
# Accept: [Accept: header value from RFC2616,
|
||||
# http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html]
|
||||
# Available: [whitespace-separated content types]
|
||||
# Expected: [Accept-header like list, containing the available content
|
||||
# types with their q-values]
|
||||
|
||||
Accept: */*
|
||||
Available: text/plain
|
||||
Expected: text/plain; q=1.0
|
||||
|
||||
Accept: */*
|
||||
Available: text/plain, text/html
|
||||
Expected: text/plain; q=1.0, text/html; q=1.0
|
||||
|
||||
# The order matters
|
||||
Accept: */*
|
||||
Available: text/html, text/plain
|
||||
Expected: text/html; q=1.0, text/plain; q=1.0
|
||||
|
||||
Accept: text/*, */*; q=0.9
|
||||
Available: text/plain, image/jpeg
|
||||
Expected: text/plain; q=1.0, image/jpeg; q=0.9
|
||||
|
||||
Accept: text/*, */*; q=0.9
|
||||
Available: image/jpeg, text/plain
|
||||
Expected: text/plain; q=1.0, image/jpeg; q=0.9
|
||||
|
||||
# wildcard subtypes still reject differing main types
|
||||
Accept: text/*
|
||||
Available: image/jpeg, text/plain
|
||||
Expected: text/plain; q=1.0
|
||||
|
||||
Accept: text/html
|
||||
Available: text/html
|
||||
Expected: text/html; q=1.0
|
||||
|
||||
Accept: text/html, text/*
|
||||
Available: text/html
|
||||
Expected: text/html; q=1.0
|
||||
|
||||
Accept: text/html, text/*
|
||||
Available: text/plain, text/html
|
||||
Expected: text/plain; q=1.0, text/html; q=1.0
|
||||
|
||||
Accept: text/html, text/*; q=0.9
|
||||
Available: text/plain, text/html
|
||||
Expected: text/html; q=1.0, text/plain; q=0.9
|
||||
|
||||
# If a more specific type has a higher q-value, then the higher value wins
|
||||
Accept: text/*; q=0.9, text/html
|
||||
Available: text/plain, text/html
|
||||
Expected: text/html; q=1.0, text/plain; q=0.9
|
||||
|
||||
Accept: */*, text/*; q=0.9, text/html; q=0.1
|
||||
Available: text/plain, text/html, image/monkeys
|
||||
Expected: image/monkeys; q=1.0, text/plain; q=0.9, text/html; q=0.1
|
||||
|
||||
Accept: text/*, text/html; q=0
|
||||
Available: text/html
|
||||
Expected:
|
||||
|
||||
Accept: text/*, text/html; q=0
|
||||
Available: text/html, text/plain
|
||||
Expected: text/plain; q=1.0
|
||||
|
||||
Accept: text/html
|
||||
Available: text/plain
|
||||
Expected:
|
||||
|
||||
Accept: application/xrds+xml, text/html; q=0.9
|
||||
Available: application/xrds+xml, text/html
|
||||
Expected: application/xrds+xml; q=1.0, text/html; q=0.9
|
||||
|
||||
Accept: application/xrds+xml, */*; q=0.9
|
||||
Available: application/xrds+xml, text/html
|
||||
Expected: application/xrds+xml; q=1.0, text/html; q=0.9
|
||||
|
||||
Accept: application/xrds+xml, application/xhtml+xml; q=0.9, text/html; q=0.8, text/xml; q=0.7
|
||||
Available: application/xrds+xml, text/html
|
||||
Expected: application/xrds+xml; q=1.0, text/html; q=0.8
|
||||
|
||||
# See http://www.rfc-editor.org/rfc/rfc3023.txt, section A.13
|
||||
Accept: application/xrds
|
||||
Available: application/xrds+xml
|
||||
Expected:
|
||||
|
||||
Accept: application/xrds+xml
|
||||
Available: application/xrds
|
||||
Expected:
|
||||
|
||||
Accept: application/xml
|
||||
Available: application/xrds+xml
|
||||
Expected:
|
||||
|
||||
Available: application/xrds+xml
|
||||
Accept: application/xml
|
||||
Expected:
|
||||
|
||||
|
||||
|
||||
#################################################
|
||||
# The tests below this line are documentation of how this library
|
||||
# works. If the implementation changes, it's acceptable to change the
|
||||
# test to reflect that. These are specified so that we can make sure
|
||||
# that the current implementation actually works the way that we
|
||||
# expect it to given these inputs.
|
||||
|
||||
Accept: text/html;level=1
|
||||
Available: text/html
|
||||
Expected: text/html; q=1.0
|
||||
|
||||
Accept: text/html; level=1, text/html; level=9; q=0.1
|
||||
Available: text/html
|
||||
Expected: text/html; q=1.0
|
||||
|
||||
Accept: text/html; level=9; q=0.1, text/html; level=1
|
||||
Available: text/html
|
||||
Expected: text/html; q=1.0
|
||||
|
|
@ -1,38 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service priority="2">
|
||||
<Type>http://openid.net/signon/1.1</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<openid:Delegate>http://frank.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
<XRD>
|
||||
|
||||
<Service priority="1">
|
||||
<Type>http://bar.com/</Type>
|
||||
<URI>http://bar.com/server</URI>
|
||||
</Service>
|
||||
|
||||
<Service priority="2">
|
||||
<Type>http://foo.com</Type>
|
||||
<URI>http://foo.com/server</URI>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
<XRD>
|
||||
|
||||
<Service priority="0">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<openid:Delegate>http://brian.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service>
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<URI>http://example.com/server</URI>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service priority="0">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<openid:Delegate>http://brian.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service priority="2">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.schtuff.com/?action=openid_server</URI>
|
||||
<openid:Delegate>http://users.schtuff.com/brian</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
<Service priority="1">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<openid:Delegate>http://brian.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://@ootao*test1" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*ootao</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-09T22:07:13.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!5BAD.2AA.3C72.AF46</LocalID>
|
||||
<CanonicalID priority="10">@!5BAD.2AA.3C72.AF46</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID>xri://!!1003</ProviderID>
|
||||
<MediaType>application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://resolve.ezibroker.net/resolve/@ootao/</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*test1</Query>
|
||||
<Status code="100">SUCCESS</Status>
|
||||
<ProviderID>xri://!!1003</ProviderID>
|
||||
<LocalID>!0000.0000.3B9A.CA01</LocalID>
|
||||
<CanonicalID>@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01</CanonicalID>
|
||||
<Service>
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://@ootao*test1" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*ootao</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-09T22:07:13.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!5BAD.2AA.3C72.AF46</LocalID>
|
||||
<CanonicalID priority="10">@!5BAD.2AA.3C72.AF46</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID>xri://@!5BAD.2AA.3C72.AF46</ProviderID>
|
||||
<MediaType>application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://resolve.ezibroker.net/resolve/@ootao/</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*test1</Query>
|
||||
<Status code="100">SUCCESS</Status>
|
||||
<ProviderID>xri://@!5BAD.2AA.3C72.AF46</ProviderID>
|
||||
<LocalID>!0000.0000.3B9A.CA01</LocalID>
|
||||
<CanonicalID>@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01</CanonicalID>
|
||||
<Service>
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://@ootao*test1" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*ootao</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-09T22:07:13.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!5BAD.2AA.3C72.AF46</LocalID>
|
||||
<CanonicalID priority="10">@!5BAD.2AA.3C72.AF46</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID/>
|
||||
<MediaType>application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://resolve.ezibroker.net/resolve/@ootao/</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*test1</Query>
|
||||
<Status code="100">SUCCESS</Status>
|
||||
<ProviderID>xri://!!1003</ProviderID>
|
||||
<LocalID>!0000.0000.3B9A.CA01</LocalID>
|
||||
<CanonicalID>@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01</CanonicalID>
|
||||
<Service>
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Sample XRDS file at: NAME -->
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service priority="0">
|
||||
<Type>http://example.com/</Type>
|
||||
<URI>http://www.openidenabled.com/</URI>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
# This file contains test cases for doing YADIS identity URL and
|
||||
# service discovery. For each case, there are three URLs. The first
|
||||
# URL is the user input. The second is the identity URL and the third
|
||||
# is the URL from which the XRDS document should be read.
|
||||
#
|
||||
# The file format is as follows:
|
||||
# User URL <tab> Identity URL <tab> XRDS URL <newline>
|
||||
#
|
||||
# blank lines and lines starting with # should be ignored.
|
||||
#
|
||||
# To use this test:
|
||||
#
|
||||
# 1. Run your discovery routine on the User URL.
|
||||
#
|
||||
# 2. Compare the identity URL returned by the discovery routine to the
|
||||
# identity URL on that line of the file. It must be an EXACT match.
|
||||
#
|
||||
# 3. Do a regular HTTP GET on the XRDS URL. Compare the content that
|
||||
# was returned by your discovery routine with the content returned
|
||||
# from that URL. It should also be an exact match.
|
||||
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/equiv http://www.openidenabled.com/resources/yadis-test/discover/equiv http://www.openidenabled.com/resources/yadis-test/discover/xrds
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/header http://www.openidenabled.com/resources/yadis-test/discover/header http://www.openidenabled.com/resources/yadis-test/discover/xrds
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/xrds http://www.openidenabled.com/resources/yadis-test/discover/xrds http://www.openidenabled.com/resources/yadis-test/discover/xrds
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/xrds_html http://www.openidenabled.com/resources/yadis-test/discover/xrds_html
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/redir_equiv http://www.openidenabled.com/resources/yadis-test/discover/equiv http://www.openidenabled.com/resources/yadis-test/discover/xrds
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/redir_header http://www.openidenabled.com/resources/yadis-test/discover/header http://www.openidenabled.com/resources/yadis-test/discover/xrds
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/redir_xrds http://www.openidenabled.com/resources/yadis-test/discover/xrds http://www.openidenabled.com/resources/yadis-test/discover/xrds
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/redir_xrds_html http://www.openidenabled.com/resources/yadis-test/discover/xrds_html
|
||||
http://www.openidenabled.com/resources/yadis-test/discover/redir_redir_equiv http://www.openidenabled.com/resources/yadis-test/discover/equiv http://www.openidenabled.com/resources/yadis-test/discover/xrds
|
||||
|
|
@ -1,7 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns:typekey="http://typekey.com/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
</xrds:XRDS>
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<x></x>
|
||||
|
|
@ -1,22 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service priority="10">
|
||||
<Type>http://openid.net/signon/1.1</Type>
|
||||
<Type>http://openid.net/sreg/1.0</Type>
|
||||
<URI>https://pip.verisignlabs.com/server</URI>
|
||||
</Service>
|
||||
|
||||
<Service priority="20">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<Type>http://openid.net/sreg/1.0</Type>
|
||||
<URI>https://pip.verisignlabs.com/server</URI>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://@ootao*test1" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*ootao</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-09T22:07:13.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!5BAD.2AA.3C72.AF46</LocalID>
|
||||
<CanonicalID priority="10">@!5BAD.2AA.3C72.AF46</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID>xri://@!5BAD.2AA.3C72.AF46</ProviderID>
|
||||
<MediaType>application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://resolve.ezibroker.net/resolve/@ootao/</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*test1</Query>
|
||||
<Status code="100">SUCCESS</Status>
|
||||
<ProviderID>xri://@!5BAD.2AA.3C72.AF46</ProviderID>
|
||||
<LocalID>!0000.0000.3B9A.CA01</LocalID>
|
||||
<CanonicalID>xri://@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01</CanonicalID>
|
||||
<Service>
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,109 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://@ootao*test.ref" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*ootao</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-15T18:56:09.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!5BAD.2AA.3C72.AF46</LocalID>
|
||||
<CanonicalID priority="10">@!5BAD.2AA.3C72.AF46</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID/>
|
||||
<MediaType>application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://resolve.ezibroker.net/resolve/@ootao/</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*test.ref</Query>
|
||||
<Status code="100">SUCCESS</Status>
|
||||
<ProviderID>xri://!!1003</ProviderID>
|
||||
<LocalID>!0000.0000.3B9A.CA03</LocalID>
|
||||
<CanonicalID>@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA03</CanonicalID>
|
||||
<Ref>@!BAE.A650.823B.2475</Ref>
|
||||
<Service>
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRDS ref="xri://@!BAE.A650.823B.2475" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>!BAE.A650.823B.2475</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-15T18:56:10.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!BAE.A650.823B.2475</LocalID>
|
||||
<CanonicalID priority="10">@!BAE.A650.823B.2475</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type select="true">(+wdnc)</Type>
|
||||
<ProviderID/>
|
||||
<Path select="true">(+wdnc)</Path>
|
||||
<URI append="none" priority="10">http://www.tcpacompliance.us</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type match="content" select="true">xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID/>
|
||||
<MediaType match="content" select="false">application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://dev.dready.org/cgi-bin/xri</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type match="content" select="true">(+i-name)</Type>
|
||||
<ProviderID/>
|
||||
<Path match="content" select="true">(+i-name)</Path>
|
||||
<URI append="none" priority="10">http://www.inames.net</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">xri://+i-service*(+contact)*($v*1.0)</Type>
|
||||
<Type match="default" select="false"/>
|
||||
<ProviderID>xri://!!1001</ProviderID>
|
||||
<Path select="true">(+contact)</Path>
|
||||
<Path match="null" select="false"/>
|
||||
<MediaType select="false">text/html</MediaType>
|
||||
<MediaType match="default" select="false"/>
|
||||
<URI append="none" priority="10">http://www.neustar.biz</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>!BAE.A650.823B.2475</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-15T18:56:10.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!BAE.A650.823B.2475</LocalID>
|
||||
<CanonicalID priority="10">@!BAE.A650.823B.2475</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type select="true">(+wdnc)</Type>
|
||||
<ProviderID/>
|
||||
<Path select="true">(+wdnc)</Path>
|
||||
<URI append="none" priority="10">http://www.tcpacompliance.us</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type match="content" select="true">xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID/>
|
||||
<MediaType match="content" select="false">application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://dev.dready.org/cgi-bin/xri</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type match="content" select="true">(+i-name)</Type>
|
||||
<ProviderID/>
|
||||
<Path match="content" select="true">(+i-name)</Path>
|
||||
<URI append="none" priority="10">http://www.inames.net</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">xri://+i-service*(+contact)*($v*1.0)</Type>
|
||||
<Type match="default" select="false"/>
|
||||
<ProviderID>xri://!!1001</ProviderID>
|
||||
<Path select="true">(+contact)</Path>
|
||||
<Path match="null" select="false"/>
|
||||
<MediaType select="false">text/html</MediaType>
|
||||
<MediaType match="default" select="false"/>
|
||||
<URI append="none" priority="10">http://www.neustar.biz</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://@ootao*test1" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*ootao</Query>
|
||||
<Status code="100"/>
|
||||
<Expires>2006-08-09T22:07:13.000Z</Expires>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID priority="10">!5BAD.2AA.3C72.AF46</LocalID>
|
||||
<CanonicalID priority="10">xri://@!5BAD.2AA.3C72.AF46</CanonicalID>
|
||||
<Service priority="10">
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<ProviderID>xri://@!5BAD.2AA.3C72.AF46</ProviderID>
|
||||
<MediaType>application/xrds+xml;trust=none</MediaType>
|
||||
<URI priority="10">http://resolve.ezibroker.net/resolve/@ootao/</URI>
|
||||
</Service>
|
||||
<Service priority="10">
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*test1</Query>
|
||||
<Status code="100">SUCCESS</Status>
|
||||
<ProviderID>xri://@!5BAD.2AA.3C72.AF46</ProviderID>
|
||||
<LocalID>!0000.0000.3B9A.CA01</LocalID>
|
||||
<CanonicalID>@!5BAD.2AA.3C72.AF46!0000.0000.3B9A.CA01</CanonicalID>
|
||||
<Service>
|
||||
<Type select="true">http://openid.net/signon/1.0</Type>
|
||||
<ProviderID/>
|
||||
<URI append="qxri" priority="1">https://linksafe.ezibroker.net/server/</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://=keturn*isDrummond" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*keturn</Query>
|
||||
<ProviderID>xri://=</ProviderID>
|
||||
<LocalID>!E4</LocalID>
|
||||
<CanonicalID>=!E4</CanonicalID>
|
||||
|
||||
<Service>
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<URI>http://keturn.example.com/resolve/</URI>
|
||||
<ProviderID>=!E4</ProviderID>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*isDrummond</Query>
|
||||
<ProviderID>=!E4</ProviderID>
|
||||
<LocalID>!D2</LocalID>
|
||||
<CanonicalID>=!D2</CanonicalID>
|
||||
<Service>
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://keturn.example.com/openid</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,25 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://=keturn*isDrummond" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*keturn</Query>
|
||||
<ProviderID>xri://=</ProviderID>
|
||||
<LocalID>!E4</LocalID>
|
||||
<CanonicalID>=!E4</CanonicalID>
|
||||
|
||||
<Service>
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<URI>http://keturn.example.com/resolve/</URI>
|
||||
<ProviderID>xri://=</ProviderID>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*isDrummond</Query>
|
||||
<ProviderID>xri://=</ProviderID>
|
||||
<LocalID>!D2</LocalID>
|
||||
<CanonicalID>=!D2</CanonicalID>
|
||||
<Service>
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://keturn.example.com/openid</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,37 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<XRDS ref="xri://=keturn*isDrummond" xmlns="xri://$xrds">
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*keturn</Query>
|
||||
<ProviderID>xri://@</ProviderID>
|
||||
<LocalID>@E4</LocalID>
|
||||
<CanonicalID>@!E4</CanonicalID>
|
||||
|
||||
<Service>
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<URI>http://keturn.example.com/resolve/</URI>
|
||||
<ProviderID>@!E4</ProviderID>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*is</Query>
|
||||
<ProviderID>@!E4</ProviderID>
|
||||
<LocalID>!D2</LocalID>
|
||||
<CanonicalID>=!C0</CanonicalID>
|
||||
<CanonicalID>=!E4!01</CanonicalID>
|
||||
<Service>
|
||||
<Type>xri://$res*auth*($v*2.0)</Type>
|
||||
<URI>http://keturn.example.com/resolve/</URI>
|
||||
<ProviderID>@!C0</ProviderID>
|
||||
</Service>
|
||||
</XRD>
|
||||
<XRD xmlns="xri://$xrd*($v*2.0)">
|
||||
<Query>*drummond</Query>
|
||||
<ProviderID>@!C0</ProviderID>
|
||||
<LocalID>!D2</LocalID>
|
||||
<CanonicalID>@!C0!D2</CanonicalID>
|
||||
<Service>
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://keturn.example.com/openid</URI>
|
||||
</Service>
|
||||
</XRD>
|
||||
</XRDS>
|
||||
|
|
@ -1,137 +0,0 @@
|
|||
equiv
|
||||
Status: 200 OK
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="YADIS_HEADER" content="URL_BASE/xrds">
|
||||
<title>Joe Schmoe's Homepage</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Joe Schmoe's Homepage</h1>
|
||||
<p>Blah blah blah blah blah blah blah</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
header
|
||||
Status: 200 OK
|
||||
Content-Type: text/html
|
||||
YADIS_HEADER: URL_BASE/xrds
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Joe Schmoe's Homepage</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Joe Schmoe's Homepage</h1>
|
||||
<p>Blah blah blah blah blah blah blah</p>
|
||||
</body>
|
||||
|
||||
xrds
|
||||
Status: 200 OK
|
||||
Content-Type: application/xrds+xml
|
||||
|
||||
<XRDS Content>
|
||||
|
||||
xrds_ctparam
|
||||
Status: 200 OK
|
||||
Content-Type: application/xrds+xml; charset=UTF8
|
||||
|
||||
<XRDS Content>
|
||||
|
||||
xrds_ctcase
|
||||
Status: 200 OK
|
||||
Content-Type: appliCATION/XRDS+xml
|
||||
|
||||
<XRDS Content>
|
||||
|
||||
xrds_html
|
||||
Status: 200 OK
|
||||
Content-Type: text/html
|
||||
|
||||
<XRDS Content>
|
||||
|
||||
redir_equiv
|
||||
Status: 302 Found
|
||||
Content-Type: text/plain
|
||||
Location: URL_BASE/equiv
|
||||
|
||||
You are presently being redirected.
|
||||
|
||||
redir_header
|
||||
Status: 302 Found
|
||||
Content-Type: text/plain
|
||||
Location: URL_BASE/header
|
||||
|
||||
You are presently being redirected.
|
||||
|
||||
redir_xrds
|
||||
Status: 302 Found
|
||||
Content-Type: application/xrds+xml
|
||||
Location: URL_BASE/xrds
|
||||
|
||||
<XRDS Content>
|
||||
|
||||
redir_xrds_html
|
||||
Status: 302 Found
|
||||
Content-Type: text/plain
|
||||
Location: URL_BASE/xrds_html
|
||||
|
||||
You are presently being redirected.
|
||||
|
||||
redir_redir_equiv
|
||||
Status: 302 Found
|
||||
Content-Type: text/plain
|
||||
Location: URL_BASE/redir_equiv
|
||||
|
||||
You are presently being redirected.
|
||||
|
||||
lowercase_header
|
||||
Status: 200 OK
|
||||
Content-Type: text/html
|
||||
x-xrds-location: URL_BASE/xrds
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<title>Joe Schmoe's Homepage</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Joe Schmoe's Homepage</h1>
|
||||
<p>Blah blah blah blah blah blah blah</p>
|
||||
</body>
|
||||
|
||||
404_server_response
|
||||
Status: 404 Not Found
|
||||
|
||||
EEk!
|
||||
|
||||
500_server_response
|
||||
Status: 500 Server error
|
||||
|
||||
EEk!
|
||||
|
||||
201_server_response
|
||||
Status: 201 Created
|
||||
|
||||
EEk!
|
||||
|
||||
404_with_header
|
||||
Status: 404 Not Found
|
||||
YADIS_HEADER: URL_BASE/xrds
|
||||
|
||||
EEk!
|
||||
|
||||
404_with_meta
|
||||
Status: 404 Not Found
|
||||
Content-Type: text/html
|
||||
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="YADIS_HEADER" content="URL_BASE/xrds">
|
||||
<title>Joe Schmoe's Homepage</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Joe Schmoe's Homepage</h1>
|
||||
<p>Blah blah blah blah blah blah blah</p>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,133 +0,0 @@
|
|||
found
|
||||
<!-- minimal well-formed success case -->
|
||||
<html><head><meta http-equiv="X-XRDS-Location" content="found"></head></html>
|
||||
|
||||
found
|
||||
<!-- minimal success case -->
|
||||
<html><head><meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
found
|
||||
<!-- ignore bogus top-level tags -->
|
||||
</porky><html><head><meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
found
|
||||
<!-- Case folding for header name -->
|
||||
<html><head><meta http-equiv="x-xrds-location" content="found">
|
||||
|
||||
found
|
||||
<!-- missing <html> tag -->
|
||||
<head><meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
found
|
||||
<!-- case folding for tag names -->
|
||||
<html><head><META http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
found
|
||||
<!-- Stop after first one found -->
|
||||
<html><head>
|
||||
<meta http-equiv="x-xrds-location" content="found">
|
||||
<meta http-equiv="x-xrds-location" content="not-found">
|
||||
|
||||
&
|
||||
<!-- standard entity -->
|
||||
<head><meta http-equiv="X-XRDS-Location" content="&">
|
||||
|
||||
found
|
||||
<!-- hex entity -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-XRDS-Location" content="found">
|
||||
</head>
|
||||
</html>
|
||||
|
||||
found
|
||||
<!-- decimal entity -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-XRDS-Location" content="found">
|
||||
</head>
|
||||
</html>
|
||||
|
||||
/
|
||||
<!-- hex entity -->
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="X-XRDS-Location" content="/">
|
||||
</head>
|
||||
</html>
|
||||
|
||||
|
||||
<!-- empty string -->
|
||||
<html><head><meta http-equiv="X-XRDS-Location" content="">
|
||||
|
||||
EOF
|
||||
<!-- No markup, except this comment -->
|
||||
|
||||
None
|
||||
<!-- No meta, just standard HTML -->
|
||||
<html>
|
||||
<head>
|
||||
<title>A boring document</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>A boring document</h1>
|
||||
<p>There's really nothing interesting about this</p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
EOF
|
||||
<!-- No <html> or <head> -->
|
||||
<meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
EOF
|
||||
<!-- No <head> tag -->
|
||||
<html><meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
None
|
||||
<!-- No <html> or <head> and a <body> -->
|
||||
<body><meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
None
|
||||
<!-- <head> and <html> reversed -->
|
||||
<head><html><meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
None
|
||||
<!-- <meta> is inside of <body> -->
|
||||
<html><head><body><meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
None
|
||||
<!-- <meta> is inside comment -->
|
||||
<html>
|
||||
<head>
|
||||
<!--<meta http-equiv="X-XRDS-Location" content="found">-->
|
||||
</head>
|
||||
</html>
|
||||
|
||||
None
|
||||
<!-- <meta> is inside of <body> -->
|
||||
<html>
|
||||
<head>
|
||||
<title>Someone's blog</title>
|
||||
</head>
|
||||
<body>
|
||||
<h1>My blog</h1>
|
||||
<p>This is my blog</p>
|
||||
<h2>Comments</h2>
|
||||
<p><meta http-equiv="X-XRDS-Location" content="found"></p>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
None
|
||||
<!-- short head tag -->
|
||||
<html><head/>
|
||||
<meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
None
|
||||
<!-- <body> comes first -->
|
||||
<body><html><head>
|
||||
<meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
||||
None
|
||||
<!-- </body> comes first -->
|
||||
</body><html><head>
|
||||
<meta http-equiv="X-XRDS-Location" content="found">
|
||||
|
|
@ -1,39 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns:typekey="http://typekey.com/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service priority="0">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.myopenid.com/server</URI>
|
||||
<openid:Delegate>http://josh.myopenid.com/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
<Service priority="20">
|
||||
<Type>http://lid.netmesh.org/sso/2.0b5</Type>
|
||||
<Type>http://lid.netmesh.org/2.0b5</Type>
|
||||
<URI>http://mylid.net/josh</URI>
|
||||
</Service>
|
||||
|
||||
<Service priority="10">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.livejournal.com/openid/server.bml</URI>
|
||||
<openid:Delegate>http://www.livejournal.com/users/nedthealpaca/</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
<Service priority="15">
|
||||
<Type>http://typekey.com/services/1.0</Type>
|
||||
<typekey:MemberName>joshhoyt</typekey:MemberName>
|
||||
</Service>
|
||||
|
||||
<Service priority="5">
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://www.schtuff.com/openid</URI>
|
||||
<openid:Delegate>http://users.schtuff.com/josh</openid:Delegate>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<xrds:XRDS
|
||||
xmlns:xrds="xri://$xrds"
|
||||
xmlns:openid="http://openid.net/xmlns/1.0"
|
||||
xmlns="xri://$xrd*($v*2.0)">
|
||||
<XRD>
|
||||
|
||||
<Service>
|
||||
<Type>http://openid.net/signon/1.0</Type>
|
||||
<URI>http://no.priority/</URI>
|
||||
<URI priority="1">http://one.priority/</URI>
|
||||
<URI priority="0">http://zero.priority/</URI>
|
||||
</Service>
|
||||
|
||||
</XRD>
|
||||
</xrds:XRDS>
|
||||
|
|
@ -1,189 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* A driver for the PHP OpenID unit tests.
|
||||
*
|
||||
* PHP versions 4 and 5
|
||||
*
|
||||
* LICENSE: See the COPYING file included in this distribution.
|
||||
*
|
||||
* @package OpenID
|
||||
* @author JanRain, Inc. <openid@janrain.com>
|
||||
* @copyright 2005 Janrain, Inc.
|
||||
* @license http://www.gnu.org/copyleft/lesser.html LGPL
|
||||
*/
|
||||
|
||||
require_once 'PHPUnit.php';
|
||||
require_once 'PHPUnit/GUI/HTML.php';
|
||||
|
||||
error_reporting(E_ALL);
|
||||
|
||||
$__test_errors = array();
|
||||
|
||||
function __handler($code, $message)
|
||||
{
|
||||
global $__test_errors;
|
||||
|
||||
if ($code == E_USER_WARNING) {
|
||||
$__test_errors[] = $message;
|
||||
}
|
||||
}
|
||||
|
||||
function __raiseError($message)
|
||||
{
|
||||
set_error_handler('__handler');
|
||||
trigger_error($message, E_USER_WARNING);
|
||||
restore_error_handler();
|
||||
}
|
||||
|
||||
function __getError()
|
||||
{
|
||||
global $__test_errors;
|
||||
if ($__test_errors) {
|
||||
return array_pop($__test_errors);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Load the tests that are defined in the named modules.
|
||||
*
|
||||
* If you have Tests/Foo.php which defines a test class called
|
||||
* Tests_Foo, the call would look like:
|
||||
*
|
||||
* loadTests('Tests/', array('Foo'))
|
||||
*
|
||||
* @param string $test_dir The root of the test hierarchy. Must end
|
||||
* with a /
|
||||
*
|
||||
* @param array $test_names The names of the modules in which the
|
||||
* tests are defined. This should not include the root of the test
|
||||
* hierarchy.
|
||||
*/
|
||||
function loadTests($test_dir, $test_names)
|
||||
{
|
||||
$suites = array();
|
||||
|
||||
foreach ($test_names as $filename) {
|
||||
$filename = $test_dir . $filename . '.php';
|
||||
$class_name = str_replace('/', '_', $filename);
|
||||
$class_name = basename($class_name, '.php');
|
||||
if (!global_require_once($filename)) {
|
||||
continue;
|
||||
}
|
||||
$test = new $class_name($class_name);
|
||||
|
||||
if (is_a($test, 'PHPUnit_TestCase')) {
|
||||
$s = new PHPUnit_TestSuite();
|
||||
$s->setName($class_name);
|
||||
$s->addTestSuite($class_name);
|
||||
$test = $s;
|
||||
|
||||
$tc_array_name = $class_name . '_other';
|
||||
if (array_key_exists($tc_array_name, $GLOBALS) &&
|
||||
is_array($GLOBALS[$tc_array_name])) {
|
||||
foreach ($GLOBALS[$tc_array_name] as $tc) {
|
||||
$test->addTestSuite(get_class($tc));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$suites[] = $test;
|
||||
}
|
||||
|
||||
return $suites;
|
||||
}
|
||||
|
||||
function global_require_once($name)
|
||||
{
|
||||
$f = @include_once $name;
|
||||
if (!$f) {
|
||||
return false;
|
||||
}
|
||||
foreach (get_defined_vars() as $k => $v) {
|
||||
if (!in_array($k, array('name', 'GLOBALS'))) {
|
||||
$GLOBALS[$k] = $v;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
$_tests = array(
|
||||
array(
|
||||
'dir' => 'Tests/Auth/OpenID/',
|
||||
'files' => array(
|
||||
'Association',
|
||||
'BigMath',
|
||||
'Consumer',
|
||||
'CryptUtil',
|
||||
'DiffieHellman',
|
||||
'HMACSHA1',
|
||||
'KVForm',
|
||||
'Util',
|
||||
'Parse',
|
||||
'StoreTest',
|
||||
'Server',
|
||||
'TrustRoot',
|
||||
'Discover',
|
||||
'OpenID_Yadis',
|
||||
'URINorm'),
|
||||
),
|
||||
array(
|
||||
'dir' => 'Tests/Services/Yadis/',
|
||||
'files' => array(
|
||||
'ParseHTML',
|
||||
'XRDS',
|
||||
'Yadis',
|
||||
'Discover',
|
||||
'XRI'
|
||||
)
|
||||
)
|
||||
);
|
||||
|
||||
function selectTests($names)
|
||||
{
|
||||
global $_tests;
|
||||
$lnames = array_map('strtolower', $names);
|
||||
$include = array();
|
||||
$exclude = array();
|
||||
foreach ($_tests as $package) {
|
||||
foreach ($package['files'] as $t) {
|
||||
$l = strtolower($t);
|
||||
if (in_array($l, $lnames)) {
|
||||
$include[] = $t;
|
||||
}
|
||||
|
||||
if (in_array("/$l", $lnames)) {
|
||||
$exclude[] = $t;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!count($include)) {
|
||||
$include = array();
|
||||
foreach ($_tests as $package) {
|
||||
$include = array_merge($include, $package['files']);
|
||||
}
|
||||
}
|
||||
|
||||
return array_diff($include, $exclude);
|
||||
}
|
||||
|
||||
// Load OpenID library tests
|
||||
function loadSuite($names=null)
|
||||
{
|
||||
global $_tests;
|
||||
if ($names === null) {
|
||||
$names = array();
|
||||
foreach ($_tests as $package) {
|
||||
$names = array_merge($names, $package['files']);
|
||||
}
|
||||
}
|
||||
$selected = selectTests($names);
|
||||
$result = array();
|
||||
foreach ($_tests as $package) {
|
||||
$result = array_merge($result, loadTests($package['dir'], $selected));
|
||||
}
|
||||
return $result;
|
||||
}
|
||||
?>
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* Add a directory to the include path
|
||||
*
|
||||
* @param dir: The directory to add to the path
|
||||
* @param at_start: If true, place this directory at the beginning of
|
||||
* the include path. Otherwise, place it at the end.
|
||||
*/
|
||||
function includeAdd($dir, $at_start=false)
|
||||
{
|
||||
$path = ini_get('include_path');
|
||||
if (strlen($path)) {
|
||||
$newpath = $at_start ? "$dir:$path" : "$path:$dir";
|
||||
} else {
|
||||
$newpath = $dir;
|
||||
}
|
||||
|
||||
ini_set('include_path', $newpath);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the parent directory of this module.
|
||||
*/
|
||||
function getParent()
|
||||
{
|
||||
return dirname(dirname(realpath(__FILE__)));
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
#!/usr/bin/env perl -w
|
||||
|
||||
use strict;
|
||||
|
||||
my $filename = $ARGV[0];
|
||||
|
||||
if (!$filename) {
|
||||
print "Usage: modified_otb.pl <filename>\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
my @results = ();
|
||||
my $line_num = 0;
|
||||
my ($NONE, $BRACE, $PAREN) = (0, 1, 2);
|
||||
my $looking_for = $NONE;
|
||||
my $last_func_name = "";
|
||||
|
||||
open(HANDLE, "<", $filename) or die "Cannot open $filename\n";
|
||||
|
||||
# Read the file and track the lines with length > $max_length.
|
||||
while (<HANDLE>) {
|
||||
$line_num++;
|
||||
# Subtract one because the newline doesn't count toward the
|
||||
# length.
|
||||
chomp;
|
||||
|
||||
if (!$looking_for &&
|
||||
($_ =~ /^\s*function/) &&
|
||||
($_ =~ /\{/)) {
|
||||
# Done (bad): we found a function whose opening line ends with
|
||||
# a brace, which goes against the PEAR coding guidelines.
|
||||
|
||||
($last_func_name) = $_ =~ /function\s*(.*)\(/;
|
||||
|
||||
push @results, "'$last_func_name' prototype ends with opening ".
|
||||
"brace, line $line_num";
|
||||
} elsif (!$looking_for &&
|
||||
($_ =~ /^\s*function/) &&
|
||||
($_ !~ /\)/)) {
|
||||
($last_func_name) = $_ =~ /function\s*(.*)\(/;
|
||||
$looking_for = $PAREN;
|
||||
} elsif (($looking_for == $PAREN) &&
|
||||
($_ =~ /\)/) &&
|
||||
($_ =~ /\{/)) {
|
||||
# Done (bad): function prototype and brace are on the same
|
||||
# line.
|
||||
push @results, "'$last_func_name' prototype ends with with ".
|
||||
"opening brace, line $line_num";
|
||||
$looking_for = $NONE;
|
||||
} elsif (($looking_for == $PAREN) &&
|
||||
($_ =~ /\)/) &&
|
||||
($_ !~ /\{/)) {
|
||||
$looking_for = $BRACE;
|
||||
} elsif (!$looking_for &&
|
||||
($_ =~ /^\s*function/) &&
|
||||
($_ =~ /\)/) &&
|
||||
($_ !~ /\{/)) {
|
||||
($last_func_name) = $_ =~ /function\s*(.*)\(/;
|
||||
$looking_for = $BRACE;
|
||||
} elsif (($looking_for == $BRACE) &&
|
||||
($_ eq "{")) {
|
||||
$looking_for = $NONE;
|
||||
# Done (good): the brace was found on the line after the
|
||||
# function prototype.
|
||||
} else {
|
||||
# We got here because we got a line that we're not interested
|
||||
# in.
|
||||
$looking_for = $NONE;
|
||||
}
|
||||
}
|
||||
|
||||
# If any long lines were found, notify and exit(1); otherwise,
|
||||
# exit(0).
|
||||
if (@results) {
|
||||
foreach my $result (@results) {
|
||||
print "$filename: $result\n";
|
||||
}
|
||||
exit(1);
|
||||
} else {
|
||||
exit(0);
|
||||
}
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
require_once $argv[1];
|
||||
?>
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
./admin/findphp | xargs -L 1 ./admin/checkimport
|
||||
|
|
@ -1,3 +0,0 @@
|
|||
~$
|
||||
^doc(/|$)
|
||||
^CHANGELOG$
|
||||
|
|
@ -1,15 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
#set -e
|
||||
|
||||
bad_files=$(./admin/findphp | xargs -l1 /usr/bin/env perl admin/docblocks.pl)
|
||||
|
||||
if [ "$bad_files" ]
|
||||
then
|
||||
cat <<EOF 1>&2
|
||||
These files do not start with docblocks:
|
||||
|
||||
$bad_files
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,26 +0,0 @@
|
|||
#!/usr/bin/env perl -w
|
||||
|
||||
use strict;
|
||||
|
||||
my $filename = $ARGV[0];
|
||||
|
||||
if (!$filename) {
|
||||
print "Usage: docblocks.pl <filename>\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
my %allowed = ("" => 1,
|
||||
"<?php" => 1);
|
||||
|
||||
open(HANDLE, "<", $filename) or die "Cannot open $filename\n";
|
||||
|
||||
while (<HANDLE>) {
|
||||
chomp;
|
||||
|
||||
if ($_ =~ /\/\*\*/) {
|
||||
exit(0);
|
||||
} elsif (!$allowed{$_}) {
|
||||
print $filename."\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
# Find all PHP modules that are likely to have global variables
|
||||
set -e
|
||||
|
||||
./admin/findphp | xargs grep '^\$'
|
||||
|
|
@ -1,8 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
find Auth Tests \
|
||||
-name _darcs -prune -o \
|
||||
\( -type f \
|
||||
-a -name \*.php \
|
||||
-a ! -name .\* \
|
||||
\) | grep -v Tests
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
cat <<EOF | xargs chmod +x
|
||||
admin/checkimport
|
||||
admin/checkimports
|
||||
admin/docblocks
|
||||
admin/findphp
|
||||
admin/findglobals
|
||||
admin/fixperms
|
||||
admin/makedoc.sh
|
||||
admin/mathlib
|
||||
admin/prepare-release
|
||||
admin/runtests
|
||||
EOF
|
||||
|
|
@ -1 +0,0 @@
|
|||
php-openid
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
#!/usr/bin/env perl -w
|
||||
|
||||
use strict;
|
||||
|
||||
my $filename = $ARGV[0];
|
||||
|
||||
if (!$filename) {
|
||||
print "Usage: longlines.pl <filename> [length]\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
# Set a default maximum line length.
|
||||
my $max_length = $ARGV[1] || 80;
|
||||
|
||||
my @lines = ();
|
||||
my $line_num = 0;
|
||||
|
||||
open(HANDLE, "<", $filename) or die "Cannot open $filename\n";
|
||||
|
||||
# Read the file and track the lines with length > $max_length.
|
||||
while (<HANDLE>) {
|
||||
$line_num++;
|
||||
# Subtract one because the newline doesn't count toward the
|
||||
# length.
|
||||
if (length($_) - 1 > $max_length) {
|
||||
push @lines, $line_num;
|
||||
}
|
||||
}
|
||||
|
||||
# If more than five long lines were found, truncate to five and
|
||||
# indicate that others were present, too.
|
||||
if (@lines > 5) {
|
||||
@lines = @lines[0..4];
|
||||
push @lines, "and others";
|
||||
}
|
||||
|
||||
# If any long lines were found, notify and exit(1); otherwise,
|
||||
# exit(0).
|
||||
if (@lines) {
|
||||
print $filename." (line".((@lines > 1) ? "s" : "")." ".
|
||||
join(", ", @lines)." exceed".((@lines == 1) ? "s" : "").
|
||||
" length $max_length)\n";
|
||||
exit(1);
|
||||
} else {
|
||||
exit(0);
|
||||
}
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
#!/bin/sh
|
||||
set -v
|
||||
phpdoc -p on -t doc -d Auth,admin/tutorials,Services -ti "JanRain OpenID Library" \
|
||||
--ignore \*~,BigMath.php,Discover.php,CryptUtil.php,DiffieHellman.php,HMACSHA1.php,KVForm.php,Parse.php,TrustRoot.php,HTTPFetcher.php,ParanoidHTTPFetcher.php,PlainHTTPFetcher.php,ParseHTML.php,URINorm.php,XRI.php,XRIRes.php,Misc.php \
|
||||
-dn "OpenID" -o "HTML:frames:phphtmllib"
|
||||
|
|
@ -1,18 +0,0 @@
|
|||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
require_once 'adminutil.php';
|
||||
includeAdd(getParent());
|
||||
|
||||
require_once 'Auth/OpenID/CryptUtil.php';
|
||||
|
||||
$lib =& Auth_OpenID_MathLibrary::getLibWrapper();
|
||||
|
||||
if ($lib === null) {
|
||||
fwrite(STDERR, 'No math library present\n');
|
||||
exit(1);
|
||||
} else {
|
||||
print $lib->type;
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,4 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
./admin/findphp | xargs -l1 /usr/bin/env perl admin/brace_style.pl
|
||||
|
|
@ -1,14 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
bad=$(./admin/findphp | xargs egrep -n '\b(TRUE|FALSE|NULL)\b')
|
||||
|
||||
if [ ! -z "$bad" ]
|
||||
then
|
||||
cat <<EOF 1>&2
|
||||
These files contain wrongly capitalized constants:
|
||||
|
||||
$bad
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
files_with_long_lines=$(./admin/findphp |
|
||||
xargs -l1 wc -L |
|
||||
awk '$1 > 80 { print $2 }' |
|
||||
xargs -l1 --replace=FILENAME /usr/bin/env perl admin/longlines.pl FILENAME 80)
|
||||
|
||||
if [ "$files_with_long_lines" ]
|
||||
then
|
||||
cat <<EOF 1>&2
|
||||
Found lines > 80 characters in:
|
||||
|
||||
$files_with_long_lines
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,16 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Look in the local directory for PHP files that have tabs in them. If
|
||||
# there are files with tabs, print the list of files and exit with
|
||||
# non-zero status.
|
||||
|
||||
tabs=$(./admin/findphp | xargs egrep -n ' ' | sort)
|
||||
|
||||
if [ ! -z "$tabs" ]
|
||||
then
|
||||
cat <<EOF 1>&2
|
||||
Found tabs in:
|
||||
$tabs
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,17 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
bad_files=$(./admin/findphp |
|
||||
xargs -l1 grep -H -m 1 "<?php" -c |
|
||||
grep ":0" |
|
||||
awk -F: '{ print $1 }')
|
||||
|
||||
if [ "$bad_files" ]
|
||||
then
|
||||
cat <<EOF 1>&2
|
||||
These PHP files do NOT begin with <?php :
|
||||
|
||||
$bad_files
|
||||
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
<?php
|
||||
|
||||
function fail1() {
|
||||
}
|
||||
|
||||
function pass1()
|
||||
{
|
||||
}
|
||||
|
||||
function fail2(
|
||||
) {
|
||||
|
||||
}
|
||||
|
||||
function pass2(
|
||||
)
|
||||
{
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,24 +0,0 @@
|
|||
<?xml version="1.0" encoding="ISO-8859-1" ?>
|
||||
<package version="1.0">
|
||||
<name>%(package_name)s</name>
|
||||
<summary>%(package_summary)s</summary>
|
||||
<description>
|
||||
%(package_description)s
|
||||
</description>
|
||||
<license>%(license_name)s</license>
|
||||
%(maintainers)s
|
||||
<release>
|
||||
<version>%(version)s</version>
|
||||
<date>%(date)s</date>
|
||||
<state>%(release_stability)s</state>
|
||||
<notes>
|
||||
<![CDATA[
|
||||
%(release_notes)s
|
||||
]]>
|
||||
</notes>
|
||||
%(contents_version_1)s
|
||||
</release>
|
||||
<deps>
|
||||
<dep type="php" rel="ge" version="4.3.0" />
|
||||
</deps>
|
||||
</package>
|
||||
|
|
@ -1,74 +0,0 @@
|
|||
<?xml version="1.0"?>
|
||||
<package version="2.0" xmlns="http://pear.php.net/dtd/package-2.0"
|
||||
xmlns:tasks="http://pear.php.net/dtd/tasks-1.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
|
||||
http://pear.php.net/dtd/tasks-1.0.xsd
|
||||
http://pear.php.net/dtd/package-2.0
|
||||
http://pear.php.net/dtd/package-2.0.xsd">
|
||||
<name>%(package_name)s</name>
|
||||
<uri>%(uri)s</uri>
|
||||
<summary>%(package_summary)s</summary>
|
||||
<description>
|
||||
%(package_description)s
|
||||
</description>
|
||||
%(leads)s
|
||||
<date>%(date)s</date>
|
||||
<version>
|
||||
<release>%(version)s</release>
|
||||
<api>%(version)s</api>
|
||||
</version>
|
||||
<stability>
|
||||
<release>%(release_stability)s</release>
|
||||
<api>%(release_stability)s</api>
|
||||
</stability>
|
||||
<license uri="%(license_uri)s">%(license_name)s</license>
|
||||
<notes>
|
||||
<![CDATA[
|
||||
%(release_notes)s
|
||||
]]>
|
||||
</notes>
|
||||
<contents>
|
||||
%(contents)s
|
||||
</contents>
|
||||
<dependencies>
|
||||
<required>
|
||||
<php>
|
||||
<min>4.3.0</min>
|
||||
</php>
|
||||
<pearinstaller>
|
||||
<min>1.4.5</min>
|
||||
</pearinstaller>
|
||||
</required>
|
||||
<optional>
|
||||
<package>
|
||||
<name>PHPUnit</name>
|
||||
<channel>pear.php.net</channel>
|
||||
<min>1.1.1</min>
|
||||
</package>
|
||||
<package>
|
||||
<name>PEAR_DB</name>
|
||||
<channel>pear.php.net</channel>
|
||||
<min>1.80</min>
|
||||
</package>
|
||||
<extension>
|
||||
<name>pgsql</name>
|
||||
</extension>
|
||||
<extension>
|
||||
<name>mysql</name>
|
||||
</extension>
|
||||
<extension>
|
||||
<name>sqlite</name>
|
||||
</extension>
|
||||
<extension>
|
||||
<name>bcmath</name>
|
||||
</extension>
|
||||
<extension>
|
||||
<name>gmp</name>
|
||||
</extension>
|
||||
</optional>
|
||||
</dependencies>
|
||||
<!-- There really isn't much we should put in the phprelease tag,
|
||||
although we should probably make a windows-specific release tag. -->
|
||||
<phprelease/>
|
||||
</package>
|
||||
|
|
@ -1,155 +0,0 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
import os
|
||||
import os.path
|
||||
|
||||
def makeMaintainerXML(leads):
|
||||
maintainer_template = """
|
||||
<maintainer>
|
||||
<user>%(user)s</user>
|
||||
<name>%(name)s</name>
|
||||
<email>%(email)s</email>
|
||||
<role>lead</role>
|
||||
</maintainer>
|
||||
"""
|
||||
|
||||
return "<maintainers>" + \
|
||||
"".join([maintainer_template % l for l in leads]) + \
|
||||
"</maintainers>"
|
||||
|
||||
def makeLeadXML(leads):
|
||||
lead_template = """
|
||||
<lead>
|
||||
<name>%(name)s</name>
|
||||
<user>%(user)s</user>
|
||||
<email>%(email)s</email>
|
||||
<active>%(active)s</active>
|
||||
</lead>
|
||||
"""
|
||||
|
||||
return "".join([lead_template % l for l in leads])
|
||||
|
||||
INDENT_STRING = " "
|
||||
|
||||
def buildContentsXMLFordir(dir_or_file, roles, depth=0, dir_role=None,
|
||||
all_files=False):
|
||||
"""
|
||||
Returns a list of strings, each of which is either a <file> XML
|
||||
element for the given file or a <dir> element which contains other
|
||||
<file> elements.
|
||||
"""
|
||||
|
||||
try:
|
||||
entries = os.listdir(dir_or_file)
|
||||
dir_role_s = ''
|
||||
if dir_role:
|
||||
dir_role_s = ' role="%s"' % (dir_role)
|
||||
lines = ['%s<dir name="%s"%s>' % (INDENT_STRING * depth,
|
||||
os.path.basename(dir_or_file),
|
||||
dir_role_s)]
|
||||
|
||||
for entry in entries:
|
||||
lines += buildContentsXMLFordir(dir_or_file + os.sep + entry, roles,
|
||||
depth + 1, dir_role, all_files)
|
||||
|
||||
lines.append('%s</dir>' % (INDENT_STRING * depth))
|
||||
|
||||
return lines
|
||||
except OSError:
|
||||
try:
|
||||
extension = dir_or_file.split(".")[-1]
|
||||
except:
|
||||
if not all_files:
|
||||
return []
|
||||
|
||||
if all_files and dir_role:
|
||||
return ['%s<file name="%s" role="%s" />' %
|
||||
(INDENT_STRING * depth, os.path.basename(dir_or_file), dir_role)]
|
||||
elif extension in roles: # Ends in an extension we care about
|
||||
return ['%s<file name="%s" role="%s" />' %
|
||||
(INDENT_STRING * depth, os.path.basename(dir_or_file),
|
||||
roles[extension])]
|
||||
else:
|
||||
return []
|
||||
|
||||
def buildContentsXML(roles, *dirs):
|
||||
lines = []
|
||||
|
||||
for directory in dirs:
|
||||
lines.append("\n".join(buildContentsXMLFordir(directory, roles, 1)))
|
||||
|
||||
return "\n".join(lines)
|
||||
|
||||
def buildDocsXML(*dirs):
|
||||
lines = []
|
||||
|
||||
for directory in dirs:
|
||||
lines.append("\n".join(buildContentsXMLFordir(directory, {}, 1, 'doc',
|
||||
all_files=True)))
|
||||
|
||||
return "\n".join(lines)
|
||||
|
||||
if __name__ == "__main__":
|
||||
def usage(progname):
|
||||
print "Usage: %s <package version> <xml template file> <release notes file>" % (progname)
|
||||
|
||||
import sys
|
||||
import time
|
||||
|
||||
try:
|
||||
import xmlconfig
|
||||
except:
|
||||
print "Could not import XML configuration module xmlconfig"
|
||||
sys.exit(1)
|
||||
|
||||
# Expect sys.argv[2] to be the name of the XML file template to
|
||||
# use for processing.
|
||||
try:
|
||||
template_f = open(sys.argv[2], 'r')
|
||||
except Exception, e:
|
||||
usage(sys.argv[0])
|
||||
print "Could not open template file:", str(e)
|
||||
sys.exit(1)
|
||||
|
||||
# Expect sys.argv[1] to be the version number to include in the
|
||||
# package.xml file.
|
||||
try:
|
||||
version = sys.argv[1]
|
||||
except:
|
||||
usage(sys.argv[0])
|
||||
sys.exit(2)
|
||||
|
||||
# Expect sys.argv[3] to be the name of the release notes file.
|
||||
try:
|
||||
release_file = sys.argv[3]
|
||||
release_file_h = open(release_file, 'r')
|
||||
release_notes = release_file_h.read().strip()
|
||||
release_file_h.close()
|
||||
except Exception, e:
|
||||
usage(sys.argv[0])
|
||||
print str(e)
|
||||
sys.exit(3)
|
||||
|
||||
data = xmlconfig.__dict__.copy()
|
||||
|
||||
contentsXml = buildContentsXML({'php': 'php'}, *xmlconfig.contents_dirs)
|
||||
docsXml = buildDocsXML(*xmlconfig.docs_dirs)
|
||||
|
||||
contents = '<dir name="/">\n' + contentsXml + \
|
||||
"\n" + docsXml + '\n </dir>'
|
||||
|
||||
contents_v1 = '<filelist><dir name="/" baseinstalldir="Auth">\n' + contentsXml + \
|
||||
"\n" + docsXml + '\n </dir></filelist>'
|
||||
|
||||
data['contents'] = contents
|
||||
data['contents_version_1'] = contents_v1
|
||||
data['leads'] = makeLeadXML(xmlconfig.leads)
|
||||
data['maintainers'] = makeMaintainerXML(xmlconfig.leads)
|
||||
data['date'] = time.strftime("%Y-%m-%d")
|
||||
data['version'] = version
|
||||
data['uri'] = "%s%s-%s.tgz" % (data['package_base_uri'], data['package_name'],
|
||||
version)
|
||||
data['release_notes'] = release_notes
|
||||
|
||||
template_data = template_f.read()
|
||||
print template_data % data
|
||||
|
|
@ -1,119 +0,0 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
"""This script searches files for functions that are just aliases in
|
||||
PHP source code. This is not 100% reliable, so it should not be
|
||||
automated, but it's useful to run once in a while to make sure that
|
||||
all of the matches it finds are not really legitimate aliases.
|
||||
|
||||
Usage:
|
||||
|
||||
parse_aliases.py <name of alias file> [PHP source code filename]...
|
||||
"""
|
||||
|
||||
import sys
|
||||
|
||||
# Fetch this URL to get the file that is parsed into the aliases list
|
||||
alias_url = 'http://www.zend.com/phpfunc/all_aliases.php'
|
||||
|
||||
header_tok = '<!-- END OF HEADER -->';
|
||||
footer_tok = '<!-- FOOTER -->';
|
||||
|
||||
# Example line of the table that we parse:
|
||||
# '<tr bgcolor="#EFEFFF"><td><a href="function.bzclose.php">bzclose</a></td><td><a href="http://lxr.php.net/source/php-src/ext/bz2/bz2.c#48">php-src/ext/bz2/bz2.c</a></td><td><a href="function.fclose.php">fclose</a></td></tr>'
|
||||
|
||||
import re
|
||||
|
||||
line_re = re.compile(r'''
|
||||
\A
|
||||
|
||||
<tr\ bgcolor="[^">]+">
|
||||
|
||||
<td><a\ href="[^>"]+\.php">([^<>]+)</a></td>
|
||||
|
||||
<td><a\ href="[^">]+">[^<>]+</a></td>
|
||||
|
||||
<td>
|
||||
(?:
|
||||
<a\ href="[^">]+\.php">
|
||||
( [^<>]+ )
|
||||
</a>
|
||||
| ( [^<>]+ )
|
||||
)
|
||||
</td>
|
||||
|
||||
</tr>
|
||||
|
||||
\Z
|
||||
''', re.VERBOSE)
|
||||
|
||||
def parseString(s):
|
||||
_, rest = s.split(header_tok, 1)
|
||||
body, _ = rest.split(footer_tok, 1)
|
||||
|
||||
lines = body.split('\n')
|
||||
assert [s.strip() for s in lines[-2:]] == ['</table>', '']
|
||||
assert lines[0].strip().startswith('<table')
|
||||
del lines[0], lines[-2:]
|
||||
aliases = {}
|
||||
for line in lines:
|
||||
mo = line_re.match(line)
|
||||
assert mo, line
|
||||
alias, master1, master2 = mo.groups()
|
||||
if master1:
|
||||
master = master1
|
||||
else:
|
||||
assert master2
|
||||
master = master2
|
||||
aliases[alias] = master
|
||||
|
||||
return aliases
|
||||
|
||||
def parseFile(f):
|
||||
return parseString(f.read())
|
||||
|
||||
def parseFileName(fn):
|
||||
return parseFile(file(fn, 'r'))
|
||||
|
||||
def parseURL(url):
|
||||
return parseFile(urllib2.urlopen(url))
|
||||
|
||||
def getAliasRE(aliases):
|
||||
return re.compile(r'(->|\$|)\s*\b(%s)\b' % ('|'.join(aliases.keys())))
|
||||
|
||||
def checkAliasesFile(alias_re, f):
|
||||
found = []
|
||||
line_num = 1
|
||||
for line in f:
|
||||
for mo in alias_re.finditer(line):
|
||||
if mo.group(1):
|
||||
continue
|
||||
alias = mo.group(2)
|
||||
found.append((line_num, alias))
|
||||
line_num += 1
|
||||
return found
|
||||
|
||||
def checkAliases(alias_re, filename):
|
||||
return checkAliasesFile(alias_re, file(filename, 'r'))
|
||||
|
||||
def checkAliasesFiles(alias_re, filenames):
|
||||
found = []
|
||||
for filename in filenames:
|
||||
file_found = checkAliases(alias_re, filename)
|
||||
found.extend([(filename, n, a) for (n, a) in file_found])
|
||||
return found
|
||||
|
||||
def dumpResults(aliases, found, out=sys.stdout):
|
||||
for filename, n, a in found:
|
||||
print >>out, "%s:%d %s -> %s" % (filename, n, a, aliases[a])
|
||||
|
||||
def main(alias_file, *filenames):
|
||||
aliases = parseFileName(alias_file)
|
||||
alias_re = getAliasRE(aliases)
|
||||
found = checkAliasesFiles(alias_re, filenames)
|
||||
dumpResults(aliases, found)
|
||||
return found
|
||||
|
||||
if __name__ == '__main__':
|
||||
found = main(*sys.argv[1:])
|
||||
if found:
|
||||
sys.exit(1)
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
#
|
||||
# Prepare this repository for release
|
||||
|
||||
REPO_ROOT=$(dirname $(dirname $(readlink --canonicalize "$0")))
|
||||
cd "$REPO_ROOT"
|
||||
|
||||
bash ./admin/fixperms
|
||||
|
||||
./admin/makedoc.sh
|
||||
|
||||
darcs changes --from-tag=. --summary > CHANGELOG
|
||||
|
|
@ -1,64 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
HERE=$(readlink --canonicalize $(dirname "$0"))
|
||||
|
||||
test_import () {
|
||||
./admin/checkimports
|
||||
}
|
||||
|
||||
test_tabs () {
|
||||
/usr/bin/env bash "$HERE/notabs"
|
||||
}
|
||||
|
||||
test_longlines () {
|
||||
/usr/bin/env bash "$HERE/nolonglines"
|
||||
}
|
||||
|
||||
test_nobadbraces () {
|
||||
/usr/bin/env bash "$HERE/nobadbraces"
|
||||
}
|
||||
|
||||
test_nobadcase () {
|
||||
/usr/bin/env bash "$HERE/nobadcase"
|
||||
}
|
||||
|
||||
test_opentag () {
|
||||
/usr/bin/env bash "$HERE/open_tag"
|
||||
}
|
||||
|
||||
test_docblocks () {
|
||||
/usr/bin/env bash "$HERE/docblocks"
|
||||
}
|
||||
|
||||
test_php () {
|
||||
if uname -a | grep -i cygwin >/dev/null 2>/dev/null ; then
|
||||
/usr/bin/env php "$(dirname "$0")/texttest.php" --insecure-rand
|
||||
else
|
||||
/usr/bin/env php "$HERE/texttest.php"
|
||||
fi
|
||||
}
|
||||
|
||||
tests="tabs longlines nobadbraces nobadcase opentag docblocks php import"
|
||||
|
||||
failures=
|
||||
|
||||
# Run in repository root (parent of this directory)
|
||||
cd $(dirname "$HERE")
|
||||
|
||||
chmod +x ./admin/fixperms
|
||||
./admin/fixperms
|
||||
|
||||
for test_name in $tests
|
||||
do
|
||||
echo "Running test $test_name" 1>&2
|
||||
if ! eval "test_$test_name"
|
||||
then
|
||||
failures="$failures $test_name"
|
||||
fi
|
||||
done
|
||||
|
||||
if [ ! -z "$failures" ]
|
||||
then
|
||||
echo "Failures in: $failures" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
|
|
@ -1,173 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once 'Tests/TestDriver.php';
|
||||
require_once 'PHPUnit/TestResult.php';
|
||||
require_once 'Console/Getopt.php';
|
||||
|
||||
class TextTestResult extends PHPUnit_TestResult {
|
||||
function addError(&$test, &$t)
|
||||
{
|
||||
parent::addError($test, $t);
|
||||
echo "E";
|
||||
}
|
||||
|
||||
function addFailure(&$test, &$t)
|
||||
{
|
||||
parent::addFailure($test, $t);
|
||||
echo "F";
|
||||
}
|
||||
|
||||
function addPassedTest(&$test)
|
||||
{
|
||||
parent::addPassedTest($test);
|
||||
echo ".";
|
||||
}
|
||||
|
||||
function dumpBadResults()
|
||||
{
|
||||
foreach ($this->failures() as $failure) {
|
||||
echo $failure->toString();
|
||||
}
|
||||
|
||||
foreach ($this->errors() as $failure) {
|
||||
echo $failure->toString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function microtime_float()
|
||||
{
|
||||
list($usec, $sec) = explode(" ", microtime());
|
||||
return ((float)$usec + (float)$sec);
|
||||
}
|
||||
|
||||
$longopts = array('no-math',
|
||||
'math-lib=',
|
||||
'insecure-rand',
|
||||
'thorough');
|
||||
|
||||
$con = new Console_Getopt;
|
||||
$args = $con->readPHPArgv();
|
||||
array_shift($args);
|
||||
$options = $con->getopt2($args, "", $longopts);
|
||||
|
||||
if (PEAR::isError($options)) {
|
||||
print $options->message . "\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
list($flags, $tests_to_run) = $options;
|
||||
|
||||
$math_type = array();
|
||||
$thorough = false;
|
||||
foreach ($flags as $flag) {
|
||||
list($option, $value) = $flag;
|
||||
switch ($option) {
|
||||
case '--insecure-rand':
|
||||
define('Auth_OpenID_RAND_SOURCE', null);
|
||||
break;
|
||||
case '--no-math':
|
||||
define('Auth_OpenID_NO_MATH_SUPPORT', true);
|
||||
break;
|
||||
case '--math-lib':
|
||||
$math_type[] = $value;
|
||||
break;
|
||||
case '--thorough':
|
||||
define('Tests_Auth_OpenID_thorough', true);
|
||||
break;
|
||||
default:
|
||||
print "Unrecognized option: $option\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
|
||||
// ******** Math library selection ***********
|
||||
|
||||
if ($math_type) {
|
||||
if (defined('Auth_OpenID_NO_MATH_SUPPORT')) {
|
||||
print "--no-math and --math-lib are mutually exclusive\n";
|
||||
exit(1);
|
||||
}
|
||||
require_once('Auth/OpenID/BigMath.php');
|
||||
$new_extensions = array();
|
||||
foreach ($math_type as $lib) {
|
||||
$found = false;
|
||||
foreach ($_Auth_OpenID_math_extensions as $ext) {
|
||||
if ($ext['extension'] == $lib) {
|
||||
$new_extensions[] = $ext;
|
||||
$found = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (!$found) {
|
||||
print "Unknown math library specified: $lib\n";
|
||||
exit(1);
|
||||
}
|
||||
}
|
||||
$_Auth_OpenID_math_extensions = $new_extensions;
|
||||
}
|
||||
|
||||
// ******** End math library selection **********
|
||||
|
||||
$suites = loadSuite($argv);
|
||||
|
||||
$totals = array(
|
||||
'run' => 0,
|
||||
'error' => 0,
|
||||
'failure' => 0,
|
||||
'time' => 0
|
||||
);
|
||||
|
||||
foreach ($suites as $suite) {
|
||||
$name = $suite->getName();
|
||||
echo "==========================================
|
||||
Test suite: $name
|
||||
------------------------------------------
|
||||
";
|
||||
|
||||
$result = new TextTestResult();
|
||||
$before = microtime_float();
|
||||
$suite->run($result);
|
||||
$after = microtime_float();
|
||||
|
||||
$run = $result->runCount();
|
||||
$error = $result->errorCount();
|
||||
$failure = $result->failureCount();
|
||||
$delta = $after - $before;
|
||||
$totals['run'] += $run;
|
||||
$totals['error'] += $error;
|
||||
$totals['failure'] += $failure;
|
||||
$totals['time'] += $delta;
|
||||
$human_delta = round($delta, 3);
|
||||
echo "\nRan $run tests in $human_delta seconds";
|
||||
if ($error || $failure) {
|
||||
echo " with $error errors, $failure failures";
|
||||
}
|
||||
echo "
|
||||
==========================================
|
||||
|
||||
";
|
||||
|
||||
$failures = $result->failures();
|
||||
foreach($failures as $failure) {
|
||||
$test = $failure->failedTest();
|
||||
$testName = $test->getName();
|
||||
$exception = $failure->thrownException();
|
||||
echo "* Failure in $testName: $exception
|
||||
|
||||
";
|
||||
}
|
||||
}
|
||||
|
||||
$before = microtime_float();
|
||||
$run = $totals['run'];
|
||||
$error = $totals['error'];
|
||||
$failure = $totals['failure'];
|
||||
$time = round($totals['time'], 3);
|
||||
echo "Ran a total of $run tests in $time seconds with $error errors, $failure failures\n";
|
||||
if ($totals['error'] || $totals['failure']) {
|
||||
exit(1);
|
||||
}
|
||||
|
||||
?>
|
||||
|
|
@ -1,81 +0,0 @@
|
|||
<refentry id="{@id}">
|
||||
<refnamediv>
|
||||
<refname>PHP OpenID API</refname>
|
||||
|
||||
</refnamediv>
|
||||
<refsynopsisdiv>
|
||||
<author>
|
||||
JanRain, Inc.
|
||||
<authorblurb>
|
||||
{@link mailto:openid@janrain.com openid@janrain.com}
|
||||
</authorblurb>
|
||||
</author>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<para>
|
||||
This is a complete implementation of the OpenID authentication
|
||||
protocol. This package contains:
|
||||
|
||||
<itemizedlist>
|
||||
<listitem>An OpenID server</listitem>
|
||||
<listitem>An OpenID consumer</listitem>
|
||||
<listitem>Stores for MySQL, PostgreSQL, SQLite, and filesystem-based OpenID data storage</listitem>
|
||||
<listitem>PHPUnit unit tests</listitem>
|
||||
<listitem>An example server and consumer</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
|
||||
<refsect1 id="{@id users}">
|
||||
<title>For Package Users</title>
|
||||
|
||||
<para>
|
||||
To install this package, copy the <literal>Auth/</literal>
|
||||
directory in this package to a directory in your PHP include path.
|
||||
Alternatively, modify your PHP include path to include the
|
||||
directory that contains <literal>Auth/</literal>. Any
|
||||
applications that need this package will then be able to use it.
|
||||
</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="{@id developers}">
|
||||
<title>For Developers</title>
|
||||
|
||||
<para>
|
||||
|
||||
See the server and consumer examples in the
|
||||
<literal>examples/</literal> directory of the package. For
|
||||
details on how to run the examples, see
|
||||
<literal>examples/README</literal>. If you want to create your
|
||||
own OpenID data storage class, please see the {@link Auth_OpenID_OpenIDStore}
|
||||
class.
|
||||
|
||||
</para>
|
||||
|
||||
</refsect1>
|
||||
|
||||
<refsect1 id="{@id references}">
|
||||
<title>References</title>
|
||||
<para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
{@link http://www.openidenabled.com/openid/libraries/php PHP OpenID Library}
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
{@link http://www.janrain.com JanRain, Inc.}
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
{@link http://lists.openidenabled.com/mailman/listinfo/dev OpenID Development Discussion List}
|
||||
</listitem>
|
||||
|
||||
<listitem>
|
||||
{@link http://www.openidenabled.com/yadis/libraries/php PHP Yadis Library}
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</para>
|
||||
</refsect1>
|
||||
|
||||
</refentry>
|
||||
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
<?php
|
||||
|
||||
require_once 'Tests/TestDriver.php';
|
||||
|
||||
$suites = loadSuite();
|
||||
|
||||
// Create and run the user interface
|
||||
$gui = new PHPUnit_GUI_HTML();
|
||||
$gui->addSuites($suites);
|
||||
$gui->show();
|
||||
|
||||
?>
|
||||
|
|
@ -1,55 +0,0 @@
|
|||
|
||||
"""
|
||||
This is the package.xml data needed for the PHP OpenID PEAR
|
||||
package.xml file. Use the 'packagexml.py' program to generate a
|
||||
package.xml file for a release of this library.
|
||||
"""
|
||||
|
||||
# This is a list of dicts describing the project leads. This will be
|
||||
# used to generate <lead> XML elements.
|
||||
leads = [
|
||||
{'name': 'Jonathan Daugherty',
|
||||
'user': 'cygnus',
|
||||
'email': 'cygnus@janrain.com',
|
||||
'active': 'yes'},
|
||||
{'name': 'Josh Hoyt',
|
||||
'user': 'jhoyt',
|
||||
'email': 'josh@janrain.com',
|
||||
'active': 'yes'}
|
||||
]
|
||||
|
||||
# The package name.
|
||||
package_name = 'Auth_OpenID'
|
||||
|
||||
# The package description.
|
||||
package_description = 'An implementation of the OpenID single sign-on authentication protocol.'
|
||||
|
||||
# Package summary.
|
||||
package_summary = 'PHP OpenID'
|
||||
|
||||
# License string.
|
||||
license_name = 'LGPL'
|
||||
|
||||
# License URI.
|
||||
license_uri = 'http://www.gnu.org/copyleft/lesser.txt'
|
||||
|
||||
# Director(ies) containing package source, relative to the admin/
|
||||
# directory. All .php files in these directories will be included in
|
||||
# the <contents> element of the output XML and will be assigned the
|
||||
# role 'php'.
|
||||
contents_dirs = ['../Auth', '../Services']
|
||||
|
||||
# Director(ies) containing package documentation. All files and
|
||||
# subdirectories in these directories will be included in the
|
||||
# <contents> element in the output XML and will be assigned the role
|
||||
# 'doc'.
|
||||
docs_dirs = ['../doc', '../examples']
|
||||
|
||||
# The HTTP package base URI. This is the place on the web where the
|
||||
# PEAR-installable tarballs will live, and this (plus the package
|
||||
# tarball name) will be the URL that users pass to "pear install".
|
||||
package_base_uri = 'http://www.openidenabled.com/resources/downloads/php-openid/pear/'
|
||||
|
||||
# The release stability. Maybe this should be a commandline parameter
|
||||
# since it might differ from release to release.
|
||||
release_stability = 'stable'
|
||||
|
|
@ -1,68 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_AlreadySigned</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_AlreadySigned</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-methods">Methods</a>
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">An error that indicates that a response was already signed.</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Server.php.html">/Auth/OpenID/Server.php</a> (line <span class="field">1193</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre><a href="../OpenID/Auth_OpenID_EncodingError.html">Auth_OpenID_EncodingError</a>
|
||||
|
|
||||
--Auth_OpenID_AlreadySigned</pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Methods</span>
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<h4>Inherited Methods</h4>
|
||||
<a name='inherited_methods'><!-- --></a>
|
||||
<!-- =========== Summary =========== -->
|
||||
<p>Inherited From <span class="classname"><a href="../OpenID/Auth_OpenID_EncodingError.html">Auth_OpenID_EncodingError</a></span></p>
|
||||
<blockquote>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_EncodingError.html#methodAuth_OpenID_EncodingError">Auth_OpenID_EncodingError::Auth_OpenID_EncodingError()</a></span><br>
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:30 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,210 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_Association</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_Association</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This class represents an association between a server and a consumer. In general, users of this library will never see instances of this object. The only exception is if you implement a custom <a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a>.</p>
|
||||
<p class="description"><p>If you do implement such a store, it will need to store the values of the handle, secret, issued, lifetime, and assoc_type instance variables.</p></p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Association.php.html">/Auth/OpenID/Association.php</a> (line <span class="field">39</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_Association.html">Auth_OpenID_Association</a></span>
|
||||
<a href="#deserialize" title="details" class="method-name">deserialize</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$class_name</span>, <span class="var-type">string</span> <span class="var-name">$assoc_s</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">bool</span>
|
||||
<a href="#equal" title="details" class="method-name">equal</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$other</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">integer</span>
|
||||
<a href="#getExpiresIn" title="details" class="method-name">getExpiresIn</a>
|
||||
([<span class="var-type"></span> <span class="var-name">$now</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">string</span>
|
||||
<a href="#serialize" title="details" class="method-name">serialize</a>
|
||||
()
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methoddeserialize" id="deserialize"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">deserialize</span> (line <span class="line-number">198</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Parse an association as stored by serialize(). This is the inverse of serialize.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> instance of this class</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_Association.html">Auth_OpenID_Association</a></span>
|
||||
<span class="method-name">
|
||||
deserialize
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$class_name</span>, <span class="var-type">string</span> <span class="var-name">$assoc_s</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$assoc_s</span><span class="var-description">: Association as serialized by serialize()</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$class_name</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodequal" id="equal"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">equal</span> (line <span class="line-number">159</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This checks to see if two <a href="../OpenID/Auth_OpenID_Association.html">Auth_OpenID_Association</a> instances represent the same association.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> true if the two instances represent the same association, false otherwise.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">bool</span>
|
||||
<span class="method-name">
|
||||
equal
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$other</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$other</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodgetExpiresIn" id="getExpiresIn"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">getExpiresIn</span> (line <span class="line-number">143</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This returns the number of seconds this association is still valid for, or 0 if the association is no longer valid.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The number of seconds this association is still valid for, or 0 if the association is no longer valid.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">integer</span>
|
||||
<span class="method-name">
|
||||
getExpiresIn
|
||||
</span>
|
||||
([<span class="var-type"></span> <span class="var-name">$now</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$now</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodserialize" id="serialize"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">serialize</span> (line <span class="line-number">175</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Convert an association to KV form.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> String in KV form suitable for deserialization by deserialize.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">string</span>
|
||||
<span class="method-name">
|
||||
serialize
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:27 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,187 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_AuthRequest</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_AuthRequest</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This class represents an authentication request from a consumer to an OpenID server.</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Consumer.php.html">/Auth/OpenID/Consumer.php</a> (line <span class="field">934</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_AuthRequest</span>
|
||||
<a href="#Auth_OpenID_AuthRequest" title="details" class="method-name">Auth_OpenID_AuthRequest</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$assoc</span>, <span class="var-type"></span> <span class="var-name">$endpoint</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#addExtensionArg" title="details" class="method-name">addExtensionArg</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$namespace</span>, <span class="var-type">string</span> <span class="var-name">$key</span>, <span class="var-type">string</span> <span class="var-name">$value</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">string</span>
|
||||
<a href="#redirectURL" title="details" class="method-name">redirectURL</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$trust_root</span>, <span class="var-type">string$</span> <span class="var-name">$return_to</span>, [<span class="var-type"></span> <span class="var-name">$immediate</span> = <span class="var-default">false</span>])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_AuthRequest" id="Auth_OpenID_AuthRequest"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_AuthRequest</span> (line <span class="line-number">944</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Initialize an authentication request with the specified token, association, and endpoint.</p>
|
||||
<p class="description"><p>Users of this library should not create instances of this class. Instances of this class are created by the library when needed.</p></p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_AuthRequest</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_AuthRequest
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$assoc</span>, <span class="var-type"></span> <span class="var-name">$endpoint</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$assoc</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$endpoint</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodaddExtensionArg" id="addExtensionArg"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">addExtensionArg</span> (line <span class="line-number">971</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Add an extension argument to this OpenID authentication request.</p>
|
||||
<p class="description"><p>Use caution when adding arguments, because they will be URL-escaped and appended to the redirect URL, which can easily get quite long.</p></p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
addExtensionArg
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$namespace</span>, <span class="var-type">string</span> <span class="var-name">$key</span>, <span class="var-type">string</span> <span class="var-name">$value</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$namespace</span><span class="var-description">: The namespace for the extension. For example, the simple registration extension uses the namespace 'sreg'.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$key</span><span class="var-description">: The key within the extension namespace. For example, the nickname field in the simple registration extension's key is 'nickname'.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$value</span><span class="var-description">: The value to provide to the server for this argument.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodredirectURL" id="redirectURL"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">redirectURL</span> (line <span class="line-number">990</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Compute the appropriate redirection URL for this request based on a specified trust root and return-to.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The resulting redirect URL that you should send to the user agent.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">string</span>
|
||||
<span class="method-name">
|
||||
redirectURL
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$trust_root</span>, <span class="var-type">string$</span> <span class="var-name">$return_to</span>, [<span class="var-type"></span> <span class="var-name">$immediate</span> = <span class="var-default">false</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$trust_root</span><span class="var-description">: The trust root URI for your application.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">string$</span>
|
||||
<span class="var-name">$return_to</span><span class="var-description">: The return-to URL to be used when the OpenID server redirects the user back to your site.</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$immediate</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:27 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,169 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_CancelResponse</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_CancelResponse</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">A response with a status of Auth_OpenID_CANCEL. Indicates that the user cancelled the OpenID authentication request. This has two relevant attributes:</p>
|
||||
<p class="description"><p>identity_url - The identity URL for which authentication was attempted, if it can be determined. Otherwise, null.</p><p>status - Auth_OpenID_SUCCESS.</p></p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Consumer.php.html">/Auth/OpenID/Consumer.php</a> (line <span class="field">1147</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre><a href="../OpenID/Auth_OpenID_ConsumerResponse.html">Auth_OpenID_ConsumerResponse</a>
|
||||
|
|
||||
--Auth_OpenID_CancelResponse</pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a name="sec-var-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variable Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="var-summary">
|
||||
<div class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<a href="#$status" title="details" class="var-name">$status</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
|
||||
|
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_CancelResponse</span>
|
||||
<a href="#Auth_OpenID_CancelResponse" title="details" class="method-name">Auth_OpenID_CancelResponse</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$endpoint</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-vars"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variables</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
||||
|
||||
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
|
||||
<a name="var$status" id="$status"><!-- --></A>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="var-header">
|
||||
<span class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<span class="var-name">$status</span>
|
||||
= <span class="var-default"> Auth_OpenID_CANCEL</span> (line <span class="line-number">1148</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_ConsumerResponse.html#var$status">Auth_OpenID_ConsumerResponse::$status</a></dt>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_CancelResponse" id="Auth_OpenID_CancelResponse"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_CancelResponse</span> (line <span class="line-number">1150</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_CancelResponse</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_CancelResponse
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$endpoint</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$endpoint</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:28 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,216 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_Consumer</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_Consumer</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">An OpenID consumer implementation that performs discovery and does session management. See the Consumer.php file documentation for more information.</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Consumer.php.html">/Auth/OpenID/Consumer.php</a> (line <span class="field">222</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_Consumer</span>
|
||||
<a href="#Auth_OpenID_Consumer" title="details" class="method-name">Auth_OpenID_Consumer</a>
|
||||
(<span class="var-type"></span> <span class="var-name">&$store</span>, [<span class="var-type">mixed</span> <span class="var-name">$session</span> = <span class="var-default">null</span>], <span class="var-type"><a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a></span> <span class="var-name">$store</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_AuthRequest.html">Auth_OpenID_AuthRequest</a></span>
|
||||
<a href="#begin" title="details" class="method-name">begin</a>
|
||||
(<span class="var-type">User_url:</span> <span class="var-name">$user_url</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_AuthRequest.html">Auth_OpenID_AuthRequest</a></span>
|
||||
<a href="#beginWithoutDiscovery" title="details" class="method-name">&beginWithoutDiscovery</a>
|
||||
(<span class="var-type">Auth_OpenID_ServiceEndpoint</span> <span class="var-name">$endpoint</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_ConsumerResponse.html">Auth_OpenID_ConsumerResponse</a></span>
|
||||
<a href="#complete" title="details" class="method-name">complete</a>
|
||||
(<span class="var-type">array</span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_Consumer" id="Auth_OpenID_Consumer"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_Consumer</span> (line <span class="line-number">259</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Initialize a Consumer instance.</p>
|
||||
<p class="description"><p>You should create a new instance of the Consumer object with every HTTP request that handles OpenID transactions.</p></p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_Consumer</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_Consumer
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">&$store</span>, [<span class="var-type">mixed</span> <span class="var-name">$session</span> = <span class="var-default">null</span>], <span class="var-type"><a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a></span> <span class="var-name">$store</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"><a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a></span>
|
||||
<span class="var-name">$store</span><span class="var-description">: This must be an object that implements the interface in <a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a>. Several concrete implementations are provided, to cover most common use cases. For stores backed by MySQL, PostgreSQL, or SQLite, see the <a href="../OpenID/Auth_OpenID_SQLStore.html">Auth_OpenID_SQLStore</a> class and its sublcasses. For a filesystem-backed store, see the <a href="../OpenID/Auth_OpenID_FileStore.html">Auth_OpenID_FileStore</a> module. As a last resort, if it isn't possible for the server to store state at all, an instance of <a href="../OpenID/Auth_OpenID_DumbStore.html">Auth_OpenID_DumbStore</a> can be used.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">mixed</span>
|
||||
<span class="var-name">$session</span><span class="var-description">: session An object which implements the interface of the Services_Yadis_Session class. Particularly, this object is expected to have these methods: get($key), set($key, $value), and del($key). This defaults to a session object which wraps PHP's native session machinery. You should only need to pass something here if you have your own sessioning implementation.</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">&$store</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodbegin" id="begin"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">begin</span> (line <span class="line-number">287</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Start the OpenID authentication process. See steps 1-2 in the overview at the top of this file.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> An object containing the discovered information will be returned, with a method for building a redirect URL to the server, as described in step 3 of the overview. This object may also be used to add extension arguments to the request, using its 'addExtensionArg' method.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_AuthRequest.html">Auth_OpenID_AuthRequest</a></span>
|
||||
<span class="method-name">
|
||||
begin
|
||||
</span>
|
||||
(<span class="var-type">User_url:</span> <span class="var-name">$user_url</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">User_url:</span>
|
||||
<span class="var-name">$user_url</span><span class="var-description">: Identity URL given by the user. This method performs a textual transformation of the URL to try and make sure it is normalized. For example, a user_url of example.com will be normalized to http://example.com/ normalizing and resolving any redirects the server might issue.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodbeginWithoutDiscovery" id="beginWithoutDiscovery"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">beginWithoutDiscovery</span> (line <span class="line-number">350</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Start OpenID verification without doing OpenID server</p>
|
||||
<p class="description"><p>discovery. This method is used internally by Consumer.begin after discovery is performed, and exists to provide an interface for library users needing to perform their own discovery.</p></p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> An OpenID authentication request object.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_AuthRequest.html">Auth_OpenID_AuthRequest</a></span>
|
||||
<span class="method-name">
|
||||
&beginWithoutDiscovery
|
||||
</span>
|
||||
(<span class="var-type">Auth_OpenID_ServiceEndpoint</span> <span class="var-name">$endpoint</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">Auth_OpenID_ServiceEndpoint</span>
|
||||
<span class="var-name">$endpoint</span><span class="var-description">: an OpenID service endpoint descriptor.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodcomplete" id="complete"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">complete</span> (line <span class="line-number">372</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Called to interpret the server's response to an OpenID request. It is called in step 4 of the flow described in the consumer overview.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> A instance of an Auth_OpenID_ConsumerResponse subclass. The type of response is indicated by the status attribute, which will be one of SUCCESS, CANCEL, FAILURE, or SETUP_NEEDED.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result"><a href="../OpenID/Auth_OpenID_ConsumerResponse.html">Auth_OpenID_ConsumerResponse</a></span>
|
||||
<span class="method-name">
|
||||
complete
|
||||
</span>
|
||||
(<span class="var-type">array</span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">array</span>
|
||||
<span class="var-name">$query</span><span class="var-description">: An array of the query parameters (key => value pairs) for this HTTP request.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:28 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,153 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_ConsumerResponse</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_ConsumerResponse</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-descendents">Descendents</a>
|
||||
| <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">The base class for responses from the Auth_OpenID_Consumer.</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Consumer.php.html">/Auth/OpenID/Consumer.php</a> (line <span class="field">1022</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-descendents"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Direct descendents</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Descendents</span>
|
||||
| <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<table cellpadding="2" cellspacing="0" class="class-table">
|
||||
<tr>
|
||||
<th class="class-table-header">Class</th>
|
||||
<th class="class-table-header">Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-right: 2em"><a href="../OpenID/Auth_OpenID_SuccessResponse.html">Auth_OpenID_SuccessResponse</a></td>
|
||||
<td>
|
||||
A response with a status of Auth_OpenID_SUCCESS. Indicates that
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-right: 2em"><a href="../OpenID/Auth_OpenID_FailureResponse.html">Auth_OpenID_FailureResponse</a></td>
|
||||
<td>
|
||||
A response with a status of Auth_OpenID_FAILURE. Indicates that the OpenID protocol has failed. This could be locally or remotely triggered. This has three relevant attributes:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-right: 2em"><a href="../OpenID/Auth_OpenID_CancelResponse.html">Auth_OpenID_CancelResponse</a></td>
|
||||
<td>
|
||||
A response with a status of Auth_OpenID_CANCEL. Indicates that the user cancelled the OpenID authentication request. This has two relevant attributes:
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-right: 2em"><a href="../OpenID/Auth_OpenID_SetupNeededResponse.html">Auth_OpenID_SetupNeededResponse</a></td>
|
||||
<td>
|
||||
A response with a status of Auth_OpenID_SETUP_NEEDED. Indicates that the request was in immediate mode, and the server is unable to authenticate the user without further interaction.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-var-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variable Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="var-summary">
|
||||
<div class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<a href="#$status" title="details" class="var-name">$status</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-vars"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variables</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<span class="disabled">Vars</span>
|
||||
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
|
||||
<a name="var$status" id="$status"><!-- --></A>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="var-header">
|
||||
<span class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<span class="var-name">$status</span>
|
||||
= <span class="var-default"> null</span> (line <span class="line-number">1023</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefined in descendants as:</div>
|
||||
<ul class="redefinitions">
|
||||
<li>
|
||||
<a href="../OpenID/Auth_OpenID_SuccessResponse.html#var$status">Auth_OpenID_SuccessResponse::$status</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="../OpenID/Auth_OpenID_FailureResponse.html#var$status">Auth_OpenID_FailureResponse::$status</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="../OpenID/Auth_OpenID_CancelResponse.html#var$status">Auth_OpenID_CancelResponse::$status</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="../OpenID/Auth_OpenID_SetupNeededResponse.html#var$status">Auth_OpenID_SetupNeededResponse::$status</a>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:28 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,337 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_DatabaseConnection</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_DatabaseConnection</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">An empty base class intended to emulate PEAR connection</p>
|
||||
<p class="description"><p>functionality in applications that supply their own database abstraction mechanisms. See <a href="../OpenID/Auth_OpenID_SQLStore.html">Auth_OpenID_SQLStore</a> for more information. You should subclass this class if you need to create an SQL store that needs to access its database using an application's database abstraction layer instead of a PEAR database connection. Any subclass of Auth_OpenID_DatabaseConnection MUST adhere to the interface specified here.</p></p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---DatabaseConnection.php.html">/Auth/OpenID/DatabaseConnection.php</a> (line <span class="field">25</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#autoCommit" title="details" class="method-name">autoCommit</a>
|
||||
(<span class="var-type">bool</span> <span class="var-name">$mode</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#begin" title="details" class="method-name">begin</a>
|
||||
()
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#commit" title="details" class="method-name">commit</a>
|
||||
()
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">array</span>
|
||||
<a href="#getAll" title="details" class="method-name">getAll</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">mixed</span>
|
||||
<a href="#getOne" title="details" class="method-name">getOne</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">array</span>
|
||||
<a href="#getRow" title="details" class="method-name">getRow</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">mixed</span>
|
||||
<a href="#query" title="details" class="method-name">query</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#rollback" title="details" class="method-name">rollback</a>
|
||||
()
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodautoCommit" id="autoCommit"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">autoCommit</span> (line <span class="line-number">32</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Sets auto-commit mode on this database connection.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
autoCommit
|
||||
</span>
|
||||
(<span class="var-type">bool</span> <span class="var-name">$mode</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">bool</span>
|
||||
<span class="var-name">$mode</span><span class="var-description">: True if auto-commit is to be used; false if not.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodbegin" id="begin"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">begin</span> (line <span class="line-number">58</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Starts a transaction on this connection, if supported.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
begin
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodcommit" id="commit"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">commit</span> (line <span class="line-number">65</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Commits a transaction on this connection, if supported.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
commit
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodgetAll" id="getAll"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">getAll</span> (line <span class="line-number">126</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Run an SQL query with the specified parameters, if any.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> An array of arrays representing the result of the query; each array is keyed on column name.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">array</span>
|
||||
<span class="method-name">
|
||||
getAll
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$sql</span><span class="var-description">: An SQL string with placeholders. The placeholders are assumed to be specific to the database engine for this connection.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">array</span>
|
||||
<span class="var-name">$params</span><span class="var-description">: An array of parameters to insert into the SQL string using this connection's escaping mechanism.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodgetOne" id="getOne"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">getOne</span> (line <span class="line-number">91</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Run an SQL query and return the first column of the first row of the result set, if any.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The value of the first column of the first row of the result set. False if no such result was found.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">mixed</span>
|
||||
<span class="method-name">
|
||||
getOne
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$sql</span><span class="var-description">: An SQL string with placeholders. The placeholders are assumed to be specific to the database engine for this connection.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">array</span>
|
||||
<span class="var-name">$params</span><span class="var-description">: An array of parameters to insert into the SQL string using this connection's escaping mechanism.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodgetRow" id="getRow"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">getRow</span> (line <span class="line-number">109</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Run an SQL query and return the first row of the result set, if any.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The first row of the result set, if any, keyed on column name. False if no such result was found.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">array</span>
|
||||
<span class="method-name">
|
||||
getRow
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$sql</span><span class="var-description">: An SQL string with placeholders. The placeholders are assumed to be specific to the database engine for this connection.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">array</span>
|
||||
<span class="var-name">$params</span><span class="var-description">: An array of parameters to insert into the SQL string using this connection's escaping mechanism.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodquery" id="query"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">query</span> (line <span class="line-number">51</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Run an SQL query with the specified parameters, if any.</p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">return:</span> The result of calling this connection's internal query function. The type of result depends on the underlying database engine. This method is usually used when the result of a query is not important, like a DDL query.</li>
|
||||
</ul>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">mixed</span>
|
||||
<span class="method-name">
|
||||
query
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$sql</span>, [<span class="var-type">array</span> <span class="var-name">$params</span> = <span class="var-default">array()</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$sql</span><span class="var-description">: An SQL string with placeholders. The placeholders are assumed to be specific to the database engine for this connection.</span> </li>
|
||||
<li>
|
||||
<span class="var-type">array</span>
|
||||
<span class="var-name">$params</span><span class="var-description">: An array of parameters to insert into the SQL string using this connection's escaping mechanism.</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodrollback" id="rollback"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">rollback</span> (line <span class="line-number">72</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Performs a rollback on this connection, if supported.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
rollback
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:28 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,160 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_Decoder</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_Decoder</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Decode an incoming Auth_OpenID_WebResponse into an Auth_OpenID_Request.</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Server.php.html">/Auth/OpenID/Server.php</a> (line <span class="field">1114</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_Decoder</span>
|
||||
<a href="#Auth_OpenID_Decoder" title="details" class="method-name">Auth_OpenID_Decoder</a>
|
||||
()
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#decode" title="details" class="method-name">decode</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#defaultDecoder" title="details" class="method-name">defaultDecoder</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_Decoder" id="Auth_OpenID_Decoder"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_Decoder</span> (line <span class="line-number">1116</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_Decoder</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_Decoder
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methoddecode" id="decode"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">decode</span> (line <span class="line-number">1133</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Given an HTTP query in an array (key-value pairs), decode it into an Auth_OpenID_Request object.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
decode
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$query</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methoddefaultDecoder" id="defaultDecoder"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">defaultDecoder</span> (line <span class="line-number">1168</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
defaultDecoder
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$query</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:30 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,217 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_DiffieHellmanConsumerSession</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_DiffieHellmanConsumerSession</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Consumer.php.html">/Auth/OpenID/Consumer.php</a> (line <span class="field">403</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a name="sec-var-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variable Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="var-summary">
|
||||
<div class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<a href="#$session_type" title="details" class="var-name">$session_type</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
|
||||
|
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_DiffieHellmanConsumerSession</span>
|
||||
<a href="#Auth_OpenID_DiffieHellmanConsumerSession" title="details" class="method-name">Auth_OpenID_DiffieHellmanConsumerSession</a>
|
||||
([<span class="var-type"></span> <span class="var-name">$dh</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#extractSecret" title="details" class="method-name">extractSecret</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$response</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#getRequest" title="details" class="method-name">getRequest</a>
|
||||
()
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-vars"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variables</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
||||
|
||||
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
|
||||
<a name="var$session_type" id="$session_type"><!-- --></A>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="var-header">
|
||||
<span class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<span class="var-name">$session_type</span>
|
||||
= <span class="var-default"> 'DH-SHA1'</span> (line <span class="line-number">404</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_DiffieHellmanConsumerSession" id="Auth_OpenID_DiffieHellmanConsumerSession"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_DiffieHellmanConsumerSession</span> (line <span class="line-number">406</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_DiffieHellmanConsumerSession</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_DiffieHellmanConsumerSession
|
||||
</span>
|
||||
([<span class="var-type"></span> <span class="var-name">$dh</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$dh</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodextractSecret" id="extractSecret"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">extractSecret</span> (line <span class="line-number">434</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
extractSecret
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$response</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$response</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodgetRequest" id="getRequest"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">getRequest</span> (line <span class="line-number">415</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
getRequest
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:28 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,226 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_DiffieHellmanServerSession</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_DiffieHellmanServerSession</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Server.php.html">/Auth/OpenID/Server.php</a> (line <span class="field">391</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a name="sec-var-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variable Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="var-summary">
|
||||
<div class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<a href="#$session_type" title="details" class="var-name">$session_type</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
|
||||
|
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_DiffieHellmanServerSession</span>
|
||||
<a href="#Auth_OpenID_DiffieHellmanServerSession" title="details" class="method-name">Auth_OpenID_DiffieHellmanServerSession</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$dh</span>, <span class="var-type"></span> <span class="var-name">$consumer_pubkey</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#answer" title="details" class="method-name">answer</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$secret</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#fromQuery" title="details" class="method-name">fromQuery</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-vars"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variables</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
||||
|
||||
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
|
||||
<a name="var$session_type" id="$session_type"><!-- --></A>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="var-header">
|
||||
<span class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<span class="var-name">$session_type</span>
|
||||
= <span class="var-default"> 'DH-SHA1'</span> (line <span class="line-number">397</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">An object that knows how to handle association requests with the Diffie-Hellman session type.</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_DiffieHellmanServerSession" id="Auth_OpenID_DiffieHellmanServerSession"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_DiffieHellmanServerSession</span> (line <span class="line-number">399</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_DiffieHellmanServerSession</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_DiffieHellmanServerSession
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$dh</span>, <span class="var-type"></span> <span class="var-name">$consumer_pubkey</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$dh</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$consumer_pubkey</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodanswer" id="answer"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">answer</span> (line <span class="line-number">460</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
answer
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$secret</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$secret</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodfromQuery" id="fromQuery"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">fromQuery</span> (line <span class="line-number">405</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
fromQuery
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$query</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$query</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:30 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,419 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_DumbStore</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_DumbStore</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-vars">Vars</a>
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This is a store for use in the worst case, when you have no way of saving state on the consumer site. Using this store makes the consumer vulnerable to replay attacks, as it's unable to use nonces. Avoid using this store if it is at all possible.</p>
|
||||
<p class="description"><p>Most of the methods of this class are implementation details. Users of this class need to worry only about the constructor.</p></p>
|
||||
<ul class="tags">
|
||||
<li><span class="field">author:</span> JanRain, Inc. <<a href="mailto:openid@janrain.com">openid@janrain.com</a>></li>
|
||||
</ul>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---DumbStore.php.html">/Auth/OpenID/DumbStore.php</a> (line <span class="field">34</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre><a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a>
|
||||
|
|
||||
--Auth_OpenID_DumbStore</pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-vars">Vars</a>
|
||||
|
||||
|
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_DumbStore</span>
|
||||
<a href="#Auth_OpenID_DumbStore" title="details" class="method-name">Auth_OpenID_DumbStore</a>
|
||||
(<span class="var-type">string</span> <span class="var-name">$secret_phrase</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#getAssociation" title="details" class="method-name">getAssociation</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$server_url</span>, [<span class="var-type"></span> <span class="var-name">$handle</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#getAuthKey" title="details" class="method-name">getAuthKey</a>
|
||||
()
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#isDumb" title="details" class="method-name">isDumb</a>
|
||||
()
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#removeAssociation" title="details" class="method-name">removeAssociation</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$server_url</span>, <span class="var-type"></span> <span class="var-name">$handle</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#storeAssociation" title="details" class="method-name">storeAssociation</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$server_url</span>, <span class="var-type"></span> <span class="var-name">$association</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#storeNonce" title="details" class="method-name">storeNonce</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$nonce</span>)
|
||||
</div>
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#useNonce" title="details" class="method-name">useNonce</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$nonce</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-vars"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variables</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
||||
|
||||
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
|
||||
<h4>Inherited Variables</h4>
|
||||
<A NAME='inherited_vars'><!-- --></A>
|
||||
<p>Inherited from <span class="classname"><a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a></span></p>
|
||||
<blockquote>
|
||||
<span class="var-title">
|
||||
<span class="var-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#var$AUTH_KEY_LEN">Auth_OpenID_OpenIDStore::$AUTH_KEY_LEN</a></span><br>
|
||||
</span>
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-vars">Vars</a>
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_DumbStore" id="Auth_OpenID_DumbStore"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_DumbStore</span> (line <span class="line-number">53</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Creates a new <a href="../OpenID/Auth_OpenID_DumbStore.html">Auth_OpenID_DumbStore</a> instance. For the security of the tokens generated by the library, this class attempts to at least have a secure implementation of getAuthKey.</p>
|
||||
<p class="description"><p>When you create an instance of this class, pass in a secret phrase. The phrase is hashed with sha1 to make it the correct length and form for an auth key. That allows you to use a long string as the secret phrase, which means you can make it very difficult to guess.</p><p>Each <a href="../OpenID/Auth_OpenID_DumbStore.html">Auth_OpenID_DumbStore</a> instance that is created for use by your consumer site needs to use the same $secret_phrase.</p></p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_DumbStore</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_DumbStore
|
||||
</span>
|
||||
(<span class="var-type">string</span> <span class="var-name">$secret_phrase</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type">string</span>
|
||||
<span class="var-name">$secret_phrase</span><span class="var-description">: secret_phrase The phrase used to create the auth key returned by getAuthKey</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
<a name="methodgetAssociation" id="getAssociation"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">getAssociation</span> (line <span class="line-number">68</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This implementation always returns null.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
getAssociation
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$server_url</span>, [<span class="var-type"></span> <span class="var-name">$handle</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$server_url</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$handle</span> </li>
|
||||
</ul>
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodgetAssociation">Auth_OpenID_OpenIDStore::getAssociation()</a></dt>
|
||||
<dd>This method returns an Association object from storage that matches the server URL and, if specified, handle. It returns null if no such association is found or if the matching association is expired.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<a name="methodgetAuthKey" id="getAuthKey"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">getAuthKey</span> (line <span class="line-number">101</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This method returns the auth key generated by the constructor.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
getAuthKey
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodgetAuthKey">Auth_OpenID_OpenIDStore::getAuthKey()</a></dt>
|
||||
<dd>This method returns a key used to sign the tokens, to ensure that they haven't been tampered with in transit. It should return the same key every time it is called. The key returned should be AUTH_KEY_LEN bytes long.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<a name="methodisDumb" id="isDumb"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">isDumb</span> (line <span class="line-number">110</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This store is a dumb mode store, so this method is overridden to return true.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
isDumb
|
||||
</span>
|
||||
()
|
||||
</div>
|
||||
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodisDumb">Auth_OpenID_OpenIDStore::isDumb()</a></dt>
|
||||
<dd>This method must return true if the store is a dumb-mode-style store. Unlike all other methods in this class, this one provides a default implementation, which returns false.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<a name="methodremoveAssociation" id="removeAssociation"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">removeAssociation</span> (line <span class="line-number">76</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This implementation always returns false.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
removeAssociation
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$server_url</span>, <span class="var-type"></span> <span class="var-name">$handle</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$server_url</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$handle</span> </li>
|
||||
</ul>
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodremoveAssociation">Auth_OpenID_OpenIDStore::removeAssociation()</a></dt>
|
||||
<dd>This method removes the matching association if it's found, and returns whether the association was removed or not.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<a name="methodstoreAssociation" id="storeAssociation"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">storeAssociation</span> (line <span class="line-number">61</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This implementation does nothing.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
storeAssociation
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$server_url</span>, <span class="var-type"></span> <span class="var-name">$association</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$server_url</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$association</span> </li>
|
||||
</ul>
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodstoreAssociation">Auth_OpenID_OpenIDStore::storeAssociation()</a></dt>
|
||||
<dd>This method puts an Association object into storage, retrievable by server URL and handle.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<a name="methodstoreNonce" id="storeNonce"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">storeNonce</span> (line <span class="line-number">84</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">This implementation does nothing.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
storeNonce
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$nonce</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$nonce</span> </li>
|
||||
</ul>
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodstoreNonce">Auth_OpenID_OpenIDStore::storeNonce()</a></dt>
|
||||
<dd>Stores a nonce. This is used by the consumer to prevent replay attacks.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<a name="methoduseNonce" id="useNonce"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">useNonce</span> (line <span class="line-number">93</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">In a system truly limited to dumb mode, nonces must all be accepted. This therefore always returns true, which makes replay attacks feasible.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
useNonce
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$nonce</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$nonce</span> </li>
|
||||
</ul>
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methoduseNonce">Auth_OpenID_OpenIDStore::useNonce()</a></dt>
|
||||
<dd>This method is called when the library is attempting to use a nonce. If the nonce is in the store, this method removes it and returns a value which evaluates as true. Otherwise it returns a value which evaluates as false.</dd>
|
||||
</dl>
|
||||
|
||||
</div>
|
||||
<h4>Inherited Methods</h4>
|
||||
<a name='inherited_methods'><!-- --></a>
|
||||
<!-- =========== Summary =========== -->
|
||||
<p>Inherited From <span class="classname"><a href="../OpenID/Auth_OpenID_OpenIDStore.html">Auth_OpenID_OpenIDStore</a></span></p>
|
||||
<blockquote>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodgetAssociation">Auth_OpenID_OpenIDStore::getAssociation()</a></span><br>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodgetAuthKey">Auth_OpenID_OpenIDStore::getAuthKey()</a></span><br>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodisDumb">Auth_OpenID_OpenIDStore::isDumb()</a></span><br>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodremoveAssociation">Auth_OpenID_OpenIDStore::removeAssociation()</a></span><br>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodreset">Auth_OpenID_OpenIDStore::reset()</a></span><br>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodstoreAssociation">Auth_OpenID_OpenIDStore::storeAssociation()</a></span><br>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methodstoreNonce">Auth_OpenID_OpenIDStore::storeNonce()</a></span><br>
|
||||
<span class="method-name"><a href="../OpenID/Auth_OpenID_OpenIDStore.html#methoduseNonce">Auth_OpenID_OpenIDStore::useNonce()</a></span><br>
|
||||
</blockquote>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:28 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,200 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_Encoder</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_Encoder</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-descendents">Descendents</a>
|
||||
| <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Encode an Auth_OpenID_Response to an Auth_OpenID_WebResponse.</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Server.php.html">/Auth/OpenID/Server.php</a> (line <span class="field">1028</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-descendents"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Direct descendents</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Descendents</span>
|
||||
| <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<table cellpadding="2" cellspacing="0" class="class-table">
|
||||
<tr>
|
||||
<th class="class-table-header">Class</th>
|
||||
<th class="class-table-header">Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-right: 2em"><a href="../OpenID/Auth_OpenID_SigningEncoder.html">Auth_OpenID_SigningEncoder</a></td>
|
||||
<td>
|
||||
An encoder which also takes care of signing fields when required.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-var-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variable Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="var-summary">
|
||||
<div class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<a href="#$responseFactory" title="details" class="var-name">$responseFactory</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
|
||||
|
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">void</span>
|
||||
<a href="#encode" title="details" class="method-name">encode</a>
|
||||
(<span class="var-type"></span> <span class="var-name">&$response</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-vars"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variables</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
||||
|
||||
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
|
||||
<a name="var$responseFactory" id="$responseFactory"><!-- --></A>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="var-header">
|
||||
<span class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<span class="var-name">$responseFactory</span>
|
||||
= <span class="var-default"> 'Auth_OpenID_WebResponse'</span> (line <span class="line-number">1030</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodencode" id="encode"><!-- --></a>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">encode</span> (line <span class="line-number">1036</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">Encode an Auth_OpenID_Response and return an Auth_OpenID_WebResponse.</p>
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">void</span>
|
||||
<span class="method-name">
|
||||
encode
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">&$response</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">&$response</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefined in descendants as:</div>
|
||||
<ul class="redefinitions">
|
||||
<li>
|
||||
<a href="../OpenID/Auth_OpenID_SigningEncoder.html#methodencode">Auth_OpenID_SigningEncoder::encode()</a>
|
||||
: Sign an Auth_OpenID_Response and return an Auth_OpenID_WebResponse.
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:30 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,129 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_EncodingError</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_EncodingError</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-descendents">Descendents</a>
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">An error that indicates an encoding problem occurred.</p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Server.php.html">/Auth/OpenID/Server.php</a> (line <span class="field">1181</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre></pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-descendents"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Direct descendents</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Descendents</span>
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<table cellpadding="2" cellspacing="0" class="class-table">
|
||||
<tr>
|
||||
<th class="class-table-header">Class</th>
|
||||
<th class="class-table-header">Description</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="padding-right: 2em"><a href="../OpenID/Auth_OpenID_AlreadySigned.html">Auth_OpenID_AlreadySigned</a></td>
|
||||
<td>
|
||||
An error that indicates that a response was already signed.
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_EncodingError</span>
|
||||
<a href="#Auth_OpenID_EncodingError" title="details" class="method-name">Auth_OpenID_EncodingError</a>
|
||||
(<span class="var-type"></span> <span class="var-name">&$response</span>)
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-descendents">Descendents</a> |
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_EncodingError" id="Auth_OpenID_EncodingError"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_EncodingError</span> (line <span class="line-number">1182</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_EncodingError</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_EncodingError
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">&$response</span>)
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">&$response</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:30 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
|
|
@ -1,172 +0,0 @@
|
|||
<?xml version="1.0" encoding="iso-8859-1"?>
|
||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
||||
<head>
|
||||
<!-- template designed by Marco Von Ballmoos -->
|
||||
<title>Docs For Class Auth_OpenID_FailureResponse</title>
|
||||
<link rel="stylesheet" href="../media/stylesheet.css" />
|
||||
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'/>
|
||||
</head>
|
||||
<body>
|
||||
<div class="page-body">
|
||||
<h2 class="class-name">Class Auth_OpenID_FailureResponse</h2>
|
||||
|
||||
<a name="sec-description"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Description</div>
|
||||
<div class="nav-bar">
|
||||
<span class="disabled">Description</span> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
| <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
<p class="short-description">A response with a status of Auth_OpenID_FAILURE. Indicates that the OpenID protocol has failed. This could be locally or remotely triggered. This has three relevant attributes:</p>
|
||||
<p class="description"><p>identity_url - The identity URL for which authentication was attempted, if it can be determined. Otherwise, null.</p><p>message - A message indicating why the request failed, if one is supplied. Otherwise, null.</p><p>status - Auth_OpenID_FAILURE.</p></p>
|
||||
<p class="notes">
|
||||
Located in <a class="field" href="_Auth---OpenID---Consumer.php.html">/Auth/OpenID/Consumer.php</a> (line <span class="field">1120</span>)
|
||||
</p>
|
||||
|
||||
|
||||
<pre><a href="../OpenID/Auth_OpenID_ConsumerResponse.html">Auth_OpenID_ConsumerResponse</a>
|
||||
|
|
||||
--Auth_OpenID_FailureResponse</pre>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
<a name="sec-var-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variable Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="var-summary">
|
||||
<div class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<a href="#$status" title="details" class="var-name">$status</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-method-summary"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Method Summary</span></div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
|
||||
|
|
||||
<span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<div class="method-summary">
|
||||
|
||||
<div class="method-definition">
|
||||
<span class="method-result">Auth_OpenID_FailureResponse</span>
|
||||
<a href="#Auth_OpenID_FailureResponse" title="details" class="method-name">Auth_OpenID_FailureResponse</a>
|
||||
(<span class="var-type"></span> <span class="var-name">$endpoint</span>, [<span class="var-type"></span> <span class="var-name">$message</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-vars"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Variables</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
|
||||
|
||||
|
||||
|
|
||||
<a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
|
||||
<a name="var$status" id="$status"><!-- --></A>
|
||||
<div class="evenrow">
|
||||
|
||||
<div class="var-header">
|
||||
<span class="var-title">
|
||||
<span class="var-type">mixed</span>
|
||||
<span class="var-name">$status</span>
|
||||
= <span class="var-default"> Auth_OpenID_FAILURE</span> (line <span class="line-number">1121</span>)
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
|
||||
<hr class="separator" />
|
||||
<div class="notes">Redefinition of:</div>
|
||||
<dl>
|
||||
<dt><a href="../OpenID/Auth_OpenID_ConsumerResponse.html#var$status">Auth_OpenID_ConsumerResponse::$status</a></dt>
|
||||
</dl>
|
||||
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<a name="sec-methods"></a>
|
||||
<div class="info-box">
|
||||
<div class="info-box-title">Methods</div>
|
||||
<div class="nav-bar">
|
||||
<a href="#sec-description">Description</a> |
|
||||
<a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
|
||||
<a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
|
||||
|
||||
</div>
|
||||
<div class="info-box-body">
|
||||
<A NAME='method_detail'></A>
|
||||
<a name="methodAuth_OpenID_FailureResponse" id="Auth_OpenID_FailureResponse"><!-- --></a>
|
||||
<div class="oddrow">
|
||||
|
||||
<div class="method-header">
|
||||
<span class="method-title">Constructor Auth_OpenID_FailureResponse</span> (line <span class="line-number">1123</span>)
|
||||
</div>
|
||||
|
||||
<!-- ========== Info from phpDoc block ========= -->
|
||||
|
||||
<div class="method-signature">
|
||||
<span class="method-result">Auth_OpenID_FailureResponse</span>
|
||||
<span class="method-name">
|
||||
Auth_OpenID_FailureResponse
|
||||
</span>
|
||||
(<span class="var-type"></span> <span class="var-name">$endpoint</span>, [<span class="var-type"></span> <span class="var-name">$message</span> = <span class="var-default">null</span>])
|
||||
</div>
|
||||
|
||||
<ul class="parameters">
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$endpoint</span> </li>
|
||||
<li>
|
||||
<span class="var-type"></span>
|
||||
<span class="var-name">$message</span> </li>
|
||||
</ul>
|
||||
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<p class="notes" id="credit">
|
||||
Documentation generated on Mon, 10 Sep 2007 13:29:28 -0700 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.3.2</a>
|
||||
</p>
|
||||
</div></body>
|
||||
</html>
|
||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue