mirror of
https://github.com/phpseclib/phpseclib.git
synced 2025-01-17 03:39:17 +00:00
Merge branch 'master' into php5
* master: Apply coding guidelines (with exceptions) to the tests directory. Update PHP_CodeSniffer from 1.4.7 to 1.5.2. This fixes a rule inheritance bug. Use exclude instead of changing severity. Add build directory.
This commit is contained in:
commit
68fecc6431
@ -19,7 +19,8 @@ before_script:
|
|||||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' ]; then composer install --dev --no-interaction; fi"
|
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' ]; then composer install --dev --no-interaction; fi"
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' ]; then vendor/bin/phpcs -s --extensions=php --standard=tests/code_sniffer_ruleset.xml phpseclib/; fi"
|
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' ]; then vendor/bin/phpcs -s --extensions=php --standard=build/code-sniffer-ruleset.xml phpseclib/; fi"
|
||||||
|
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' ]; then vendor/bin/phpcs -s --extensions=php --standard=build/code-sniffer-ruleset-tests.xml tests/; fi"
|
||||||
- phpunit --verbose --coverage-text --coverage-html code_coverage/
|
- phpunit --verbose --coverage-text --coverage-html code_coverage/
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
|
21
build/code-sniffer-ruleset-tests.xml
Normal file
21
build/code-sniffer-ruleset-tests.xml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<ruleset name="phpseclib Test Standard">
|
||||||
|
|
||||||
|
<description>phpseclib coding standard for tests</description>
|
||||||
|
|
||||||
|
<!-- In general rules that apply to library code also apply to tests. -->
|
||||||
|
<rule ref="./code-sniffer-ruleset.xml">
|
||||||
|
<!-- Exceptions to the library coding standard follow. -->
|
||||||
|
|
||||||
|
<!-- We do not care too much about method, class and file documentation,
|
||||||
|
but having @author, @copyright and @license tags would be nice.
|
||||||
|
The following configuration does not check for these tags, but
|
||||||
|
complains if the file doc block is missing completely. -->
|
||||||
|
<exclude name="PEAR.Commenting.ClassComment" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment" />
|
||||||
|
<exclude name="PEAR.Commenting.FileComment.MissingTag" />
|
||||||
|
<exclude name="PEAR.Commenting.FileComment.MissingVersion" />
|
||||||
|
<exclude name="PEAR.Commenting.FileComment.SpacingBeforeTags" />
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
</ruleset>
|
76
build/code-sniffer-ruleset.xml
Normal file
76
build/code-sniffer-ruleset.xml
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<ruleset name="phpseclib Standard">
|
||||||
|
|
||||||
|
<description>phpseclib coding standard</description>
|
||||||
|
|
||||||
|
<!-- We are using the PEAR standard as a base -->
|
||||||
|
<rule ref="PEAR">
|
||||||
|
<!-- Temporary exceptions to the PEAR standard follow -->
|
||||||
|
<exclude name="Generic.ControlStructures.InlineControlStructure.Discouraged" />
|
||||||
|
<exclude name="Generic.Files.LineLength.TooLong" />
|
||||||
|
<exclude name="PEAR.NamingConventions.ValidFunctionName.FunctionNoCapital" />
|
||||||
|
<exclude name="PEAR.NamingConventions.ValidFunctionName.NotCamelCaps" />
|
||||||
|
<exclude name="PEAR.Commenting.ClassComment.InvalidVersion" />
|
||||||
|
<exclude name="PEAR.Commenting.ClassComment.MissingTag" />
|
||||||
|
<exclude name="PEAR.Commenting.FileComment.EmptyCopyright" />
|
||||||
|
<exclude name="PEAR.Commenting.FileComment.InvalidVersion" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.ExtraParamComment" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.MissingReturn" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.MissingParamComment" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.MissingParamName" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.MissingParamTag" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.ParameterCommentsNotAligned" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.ParameterNamesNotAligned" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.ParamNameNoMatch" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.SpacingAfterParams" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.SpacingBeforeParams" />
|
||||||
|
<exclude name="PEAR.Commenting.FunctionComment.SpacingBeforeTags" />
|
||||||
|
<exclude name="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket" />
|
||||||
|
<exclude name="PEAR.Functions.FunctionCallSignature.CloseBracketLine" />
|
||||||
|
<exclude name="PEAR.Functions.FunctionCallSignature.Indent" />
|
||||||
|
<exclude name="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket" />
|
||||||
|
<exclude name="PEAR.WhiteSpace.ScopeClosingBrace.BreakIdent" />
|
||||||
|
<exclude name="PEAR.WhiteSpace.ScopeClosingBrace.Indent" />
|
||||||
|
<exclude name="PEAR.WhiteSpace.ScopeClosingBrace.Line" />
|
||||||
|
<exclude name="PEAR.WhiteSpace.ScopeIndent.Incorrect" />
|
||||||
|
</rule>
|
||||||
|
|
||||||
|
<!-- Useful additional rules follow -->
|
||||||
|
|
||||||
|
<!-- "for (; bar; )" should be "while (bar)" instead -->
|
||||||
|
<rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" />
|
||||||
|
|
||||||
|
<!-- A method MUST not only call its parent -->
|
||||||
|
<rule ref="Generic.CodeAnalysis.UselessOverridingMethod" />
|
||||||
|
|
||||||
|
<!-- All code files MUST use only UTF-8 without BOM. -->
|
||||||
|
<rule ref="Generic.Files.ByteOrderMark" />
|
||||||
|
|
||||||
|
<!-- Each file MUST end with exactly one newline character -->
|
||||||
|
<rule ref="PSR2.Files.EndFileNewline" />
|
||||||
|
|
||||||
|
<!-- In the argument list, there MUST NOT be a space before each comma,
|
||||||
|
and there MUST be one space after each comma. -->
|
||||||
|
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing">
|
||||||
|
<properties>
|
||||||
|
<property name="equalsSpacing" value="1"/>
|
||||||
|
</properties>
|
||||||
|
</rule>
|
||||||
|
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterHint" />
|
||||||
|
|
||||||
|
<!-- There MUST NOT be trailing whitespace at the end of lines. -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace" />
|
||||||
|
|
||||||
|
<!-- There MUST NOT be whitespace before the first content of a file -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.StartFile" />
|
||||||
|
|
||||||
|
<!-- There MUST NOT be whitespace after the last content of a file -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile" />
|
||||||
|
|
||||||
|
<!-- Functions MUST NOT contain multiple empty lines in a row -->
|
||||||
|
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines" />
|
||||||
|
|
||||||
|
<!-- The ?> closing tag MUST be omitted from files containing only PHP. -->
|
||||||
|
<rule ref="Zend.Files.ClosingTag" />
|
||||||
|
|
||||||
|
</ruleset>
|
13
composer.lock
generated
13
composer.lock
generated
@ -3,23 +3,23 @@
|
|||||||
"This file locks the dependencies of your project to a known state",
|
"This file locks the dependencies of your project to a known state",
|
||||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
||||||
],
|
],
|
||||||
"hash": "e692359d277b10176319a11c2aef51aa",
|
"hash": "4975b8cde04a99d6e78e108753845af6",
|
||||||
"packages": [
|
"packages": [
|
||||||
|
|
||||||
],
|
],
|
||||||
"packages-dev": [
|
"packages-dev": [
|
||||||
{
|
{
|
||||||
"name": "squizlabs/php_codesniffer",
|
"name": "squizlabs/php_codesniffer",
|
||||||
"version": "1.4.7",
|
"version": "1.5.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
||||||
"reference": "df764a1604607ea61c4eeea5410666e27cb37a8b"
|
"reference": "a76a39b317ce8106abe6264daa505e24e1731860"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/df764a1604607ea61c4eeea5410666e27cb37a8b",
|
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/a76a39b317ce8106abe6264daa505e24e1731860",
|
||||||
"reference": "df764a1604607ea61c4eeea5410666e27cb37a8b",
|
"reference": "a76a39b317ce8106abe6264daa505e24e1731860",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@ -39,7 +39,6 @@
|
|||||||
"CodeSniffer/CLI.php",
|
"CodeSniffer/CLI.php",
|
||||||
"CodeSniffer/Exception.php",
|
"CodeSniffer/Exception.php",
|
||||||
"CodeSniffer/File.php",
|
"CodeSniffer/File.php",
|
||||||
"CodeSniffer/MultiFileSniff.php",
|
|
||||||
"CodeSniffer/Report.php",
|
"CodeSniffer/Report.php",
|
||||||
"CodeSniffer/Reporting.php",
|
"CodeSniffer/Reporting.php",
|
||||||
"CodeSniffer/Sniff.php",
|
"CodeSniffer/Sniff.php",
|
||||||
@ -77,7 +76,7 @@
|
|||||||
"phpcs",
|
"phpcs",
|
||||||
"standards"
|
"standards"
|
||||||
],
|
],
|
||||||
"time": "2013-09-26 00:08:21"
|
"time": "2014-02-04 23:49:58"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"aliases": [
|
"aliases": [
|
||||||
|
@ -1,71 +1,72 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXIII Andreas Fischer
|
* @copyright MMXIII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Crypt_AES_ContinuousBufferTest extends Crypt_AES_TestCase
|
class Crypt_AES_ContinuousBufferTest extends Crypt_AES_TestCase
|
||||||
{
|
{
|
||||||
// String intented
|
// String intented
|
||||||
protected $modes = array(
|
protected $modes = array(
|
||||||
'CRYPT_AES_MODE_CTR',
|
'CRYPT_AES_MODE_CTR',
|
||||||
'CRYPT_AES_MODE_OFB',
|
'CRYPT_AES_MODE_OFB',
|
||||||
'CRYPT_AES_MODE_CFB',
|
'CRYPT_AES_MODE_CFB',
|
||||||
);
|
);
|
||||||
|
|
||||||
protected $plaintexts = array(
|
protected $plaintexts = array(
|
||||||
'',
|
'',
|
||||||
'12345678901234567', // https://github.com/phpseclib/phpseclib/issues/39
|
'12345678901234567', // https://github.com/phpseclib/phpseclib/issues/39
|
||||||
"\xDE\xAD\xBE\xAF",
|
"\xDE\xAD\xBE\xAF",
|
||||||
':-):-):-):-):-):-)', // https://github.com/phpseclib/phpseclib/pull/43
|
':-):-):-):-):-):-)', // https://github.com/phpseclib/phpseclib/pull/43
|
||||||
);
|
);
|
||||||
|
|
||||||
protected $ivs = array(
|
protected $ivs = array(
|
||||||
'',
|
'',
|
||||||
'test123',
|
'test123',
|
||||||
);
|
);
|
||||||
|
|
||||||
protected $keys = array(
|
protected $keys = array(
|
||||||
'',
|
'',
|
||||||
':-8', // https://github.com/phpseclib/phpseclib/pull/43
|
':-8', // https://github.com/phpseclib/phpseclib/pull/43
|
||||||
'FOOBARZ',
|
'FOOBARZ',
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Produces all combinations of test values.
|
* Produces all combinations of test values.
|
||||||
*
|
*
|
||||||
* @return array
|
* @return array
|
||||||
*/
|
*/
|
||||||
public function allCombinations()
|
public function allCombinations()
|
||||||
{
|
{
|
||||||
$result = array();
|
$result = array();
|
||||||
|
|
||||||
foreach ($this->modes as $mode)
|
// @codingStandardsIgnoreStart
|
||||||
foreach ($this->plaintexts as $plaintext)
|
foreach ($this->modes as $mode)
|
||||||
foreach ($this->ivs as $iv)
|
foreach ($this->plaintexts as $plaintext)
|
||||||
foreach ($this->keys as $key)
|
foreach ($this->ivs as $iv)
|
||||||
$result[] = array($mode, $plaintext, $iv, $key);
|
foreach ($this->keys as $key)
|
||||||
|
$result[] = array($mode, $plaintext, $iv, $key);
|
||||||
|
// @codingStandardsIgnoreEnd
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider allCombinations
|
* @dataProvider allCombinations
|
||||||
*/
|
*/
|
||||||
public function testEncryptDecrypt($mode, $plaintext, $iv, $key)
|
public function testEncryptDecrypt($mode, $plaintext, $iv, $key)
|
||||||
{
|
{
|
||||||
$aes = new Crypt_AES(constant($mode));
|
$aes = new Crypt_AES(constant($mode));
|
||||||
$aes->enableContinuousBuffer();
|
$aes->enableContinuousBuffer();
|
||||||
$aes->setIV($iv);
|
$aes->setIV($iv);
|
||||||
$aes->setKey($key);
|
$aes->setKey($key);
|
||||||
|
|
||||||
$actual = '';
|
$actual = '';
|
||||||
for ($i = 0, $strlen = strlen($plaintext); $i < $strlen; ++$i)
|
for ($i = 0, $strlen = strlen($plaintext); $i < $strlen; ++$i) {
|
||||||
{
|
$actual .= $aes->decrypt($aes->encrypt($plaintext[$i]));
|
||||||
$actual .= $aes->decrypt($aes->encrypt($plaintext[$i]));
|
}
|
||||||
}
|
|
||||||
|
|
||||||
$this->assertEquals($plaintext, $actual);
|
$this->assertEquals($plaintext, $actual);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXIII Andreas Fischer
|
* @copyright MMXIII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
require_once 'Crypt/AES.php';
|
||||||
|
|
||||||
abstract class Crypt_AES_TestCase extends PhpseclibTestCase
|
abstract class Crypt_AES_TestCase extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
static public function setUpBeforeClass()
|
||||||
{
|
{
|
||||||
require_once('Crypt/AES.php');
|
if (!defined('CRYPT_AES_MODE')) {
|
||||||
|
define('CRYPT_AES_MODE', CRYPT_AES_MODE_INTERNAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!defined('CRYPT_AES_MODE'))
|
public function setUp()
|
||||||
{
|
{
|
||||||
define('CRYPT_AES_MODE', CRYPT_AES_MODE_INTERNAL);
|
if (defined('CRYPT_AES_MODE') && CRYPT_AES_MODE !== CRYPT_AES_MODE_INTERNAL) {
|
||||||
}
|
$this->markTestSkipped(
|
||||||
}
|
'Skipping test because CRYPT_AES_MODE is not defined as CRYPT_AES_MODE_INTERNAL.'
|
||||||
|
);
|
||||||
public function setUp()
|
}
|
||||||
{
|
}
|
||||||
if (defined('CRYPT_AES_MODE') && CRYPT_AES_MODE !== CRYPT_AES_MODE_INTERNAL)
|
|
||||||
{
|
|
||||||
$this->markTestSkipped('Skipping test because CRYPT_AES_MODE is not defined as CRYPT_AES_MODE_INTERNAL.');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,47 +1,47 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXII Andreas Fischer
|
* @copyright MMXII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Crypt_Hash_MD5Test extends Crypt_Hash_TestCase
|
class Crypt_Hash_MD5Test extends Crypt_Hash_TestCase
|
||||||
{
|
{
|
||||||
public function getInstance()
|
public function getInstance()
|
||||||
{
|
{
|
||||||
return new Crypt_Hash('md5');
|
return new Crypt_Hash('md5');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider hashData()
|
* @dataProvider hashData()
|
||||||
*/
|
*/
|
||||||
public function testHash($message, $result)
|
public function testHash($message, $result)
|
||||||
{
|
{
|
||||||
$this->assertHashesTo($this->getInstance(), $message, $result);
|
$this->assertHashesTo($this->getInstance(), $message, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public function hashData()
|
static public function hashData()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array('', 'd41d8cd98f00b204e9800998ecf8427e'),
|
array('', 'd41d8cd98f00b204e9800998ecf8427e'),
|
||||||
array('The quick brown fox jumps over the lazy dog', '9e107d9d372bb6826bd81d3542a419d6'),
|
array('The quick brown fox jumps over the lazy dog', '9e107d9d372bb6826bd81d3542a419d6'),
|
||||||
array('The quick brown fox jumps over the lazy dog.', 'e4d909c290d0fb1ca068ffaddf22cbd0'),
|
array('The quick brown fox jumps over the lazy dog.', 'e4d909c290d0fb1ca068ffaddf22cbd0'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @dataProvider hmacData()
|
* @dataProvider hmacData()
|
||||||
*/
|
*/
|
||||||
public function testHMAC($key, $message, $result)
|
public function testHMAC($key, $message, $result)
|
||||||
{
|
{
|
||||||
$this->assertHMACsTo($this->getInstance(), $key, $message, $result);
|
$this->assertHMACsTo($this->getInstance(), $key, $message, $result);
|
||||||
}
|
}
|
||||||
|
|
||||||
static public function hmacData()
|
static public function hmacData()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
array('', '', '74e6f7298a9c2d168935f58c001bad88'),
|
array('', '', '74e6f7298a9c2d168935f58c001bad88'),
|
||||||
array('key', 'The quick brown fox jumps over the lazy dog', '80070713463e7749b90c2dc24911e275'),
|
array('key', 'The quick brown fox jumps over the lazy dog', '80070713463e7749b90c2dc24911e275'),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,47 +1,52 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXII Andreas Fischer
|
* @copyright MMXII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
require_once 'Crypt/Hash.php';
|
||||||
|
|
||||||
abstract class Crypt_Hash_TestCase extends PhpseclibTestCase
|
abstract class Crypt_Hash_TestCase extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
static public function setUpBeforeClass()
|
||||||
{
|
{
|
||||||
require_once('Crypt/Hash.php');
|
if (!defined('CRYPT_HASH_MODE')) {
|
||||||
|
define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_INTERNAL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!defined('CRYPT_HASH_MODE'))
|
public function setUp()
|
||||||
{
|
{
|
||||||
define('CRYPT_HASH_MODE', CRYPT_HASH_MODE_INTERNAL);
|
if (defined('CRYPT_HASH_MODE') && CRYPT_HASH_MODE !== CRYPT_HASH_MODE_INTERNAL) {
|
||||||
}
|
$this->markTestSkipped(
|
||||||
}
|
'Skipping test because CRYPT_HASH_MODE is not defined as CRYPT_HASH_MODE_INTERNAL.'
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public function setUp()
|
protected function assertHashesTo(Crypt_Hash $hash, $message, $expected)
|
||||||
{
|
{
|
||||||
if (defined('CRYPT_HASH_MODE') && CRYPT_HASH_MODE !== CRYPT_HASH_MODE_INTERNAL)
|
$this->assertEquals(
|
||||||
{
|
strtolower($expected),
|
||||||
$this->markTestSkipped('Skipping test because CRYPT_HASH_MODE is not defined as CRYPT_HASH_MODE_INTERNAL.');
|
bin2hex($hash->hash($message)),
|
||||||
}
|
sprintf("Failed asserting that '%s' hashes to '%s'.", $message, $expected)
|
||||||
}
|
);
|
||||||
|
}
|
||||||
|
|
||||||
protected function assertHashesTo(Crypt_Hash $hash, $message, $expected)
|
protected function assertHMACsTo(Crypt_Hash $hash, $key, $message, $expected)
|
||||||
{
|
{
|
||||||
$this->assertEquals(
|
$hash->setKey($key);
|
||||||
strtolower($expected),
|
|
||||||
bin2hex($hash->hash($message)),
|
|
||||||
sprintf("Failed asserting that '%s' hashes to '%s'.", $message, $expected)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected function assertHMACsTo(Crypt_Hash $hash, $key, $message, $expected)
|
$this->assertEquals(
|
||||||
{
|
strtolower($expected),
|
||||||
$hash->setKey($key);
|
bin2hex($hash->hash($message)),
|
||||||
|
sprintf(
|
||||||
$this->assertEquals(
|
"Failed asserting that '%s' HMACs to '%s' with key '%s'.",
|
||||||
strtolower($expected),
|
$message,
|
||||||
bin2hex($hash->hash($message)),
|
$expected,
|
||||||
sprintf("Failed asserting that '%s' HMACs to '%s' with key '%s'.", $message, $expected, $key)
|
$key
|
||||||
);
|
)
|
||||||
}
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +1,28 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Jim Wigginton <terrafrost@php.net>
|
* @author Jim Wigginton <terrafrost@php.net>
|
||||||
* @copyright MMXIII Jim Wigginton
|
* @copyright MMXIII Jim Wigginton
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
require_once 'Crypt/RSA.php' ;
|
||||||
|
|
||||||
class Crypt_RSA_LoadKeyTest extends PhpseclibTestCase
|
class Crypt_RSA_LoadKeyTest extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
public function testBadKey()
|
||||||
{
|
{
|
||||||
require_once('Crypt/RSA.php');
|
$rsa = new Crypt_RSA();
|
||||||
}
|
|
||||||
|
|
||||||
public function testBadKey()
|
$key = 'zzzzzzzzzzzzzz';
|
||||||
{
|
|
||||||
$rsa = new Crypt_RSA();
|
|
||||||
|
|
||||||
$key = 'zzzzzzzzzzzzzz';
|
$this->assertFalse($rsa->loadKey($key));
|
||||||
|
}
|
||||||
|
|
||||||
$this->assertFalse($rsa->loadKey($key));
|
public function testPKCS1Key()
|
||||||
}
|
{
|
||||||
|
$rsa = new Crypt_RSA();
|
||||||
|
|
||||||
public function testPKCS1Key()
|
$key = '-----BEGIN RSA PRIVATE KEY-----
|
||||||
{
|
|
||||||
$rsa = new Crypt_RSA();
|
|
||||||
|
|
||||||
$key = '-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp
|
MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp
|
||||||
wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5
|
wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5
|
||||||
1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh
|
1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh
|
||||||
@ -39,14 +36,14 @@ U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
|
|||||||
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=
|
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=
|
||||||
-----END RSA PRIVATE KEY-----';
|
-----END RSA PRIVATE KEY-----';
|
||||||
|
|
||||||
$this->assertTrue($rsa->loadKey($key));
|
$this->assertTrue($rsa->loadKey($key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPKCS1SpacesKey()
|
public function testPKCS1SpacesKey()
|
||||||
{
|
{
|
||||||
$rsa = new Crypt_RSA();
|
$rsa = new Crypt_RSA();
|
||||||
|
|
||||||
$key = '-----BEGIN RSA PRIVATE KEY-----
|
$key = '-----BEGIN RSA PRIVATE KEY-----
|
||||||
MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp
|
MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp
|
||||||
wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5
|
wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5
|
||||||
1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh
|
1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh
|
||||||
@ -59,16 +56,16 @@ X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl
|
|||||||
U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
|
U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
|
||||||
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=
|
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=
|
||||||
-----END RSA PRIVATE KEY-----';
|
-----END RSA PRIVATE KEY-----';
|
||||||
$key = str_replace(array("\r", "\n", "\r\n"), ' ', $key);
|
$key = str_replace(array("\r", "\n", "\r\n"), ' ', $key);
|
||||||
|
|
||||||
$this->assertTrue($rsa->loadKey($key));
|
$this->assertTrue($rsa->loadKey($key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPKCS1NoHeaderKey()
|
public function testPKCS1NoHeaderKey()
|
||||||
{
|
{
|
||||||
$rsa = new Crypt_RSA();
|
$rsa = new Crypt_RSA();
|
||||||
|
|
||||||
$key = 'MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp
|
$key = 'MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp
|
||||||
wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5
|
wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5
|
||||||
1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh
|
1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh
|
||||||
3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2
|
3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2
|
||||||
@ -80,44 +77,44 @@ X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl
|
|||||||
U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
|
U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
|
||||||
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
|
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
|
||||||
|
|
||||||
$this->assertTrue($rsa->loadKey($key));
|
$this->assertTrue($rsa->loadKey($key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPKCS1NoWhitespaceNoHeaderKey()
|
public function testPKCS1NoWhitespaceNoHeaderKey()
|
||||||
{
|
{
|
||||||
$rsa = new Crypt_RSA();
|
$rsa = new Crypt_RSA();
|
||||||
|
|
||||||
$key = 'MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp' .
|
$key = 'MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp' .
|
||||||
'wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5' .
|
'wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5' .
|
||||||
'1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh' .
|
'1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh' .
|
||||||
'3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2' .
|
'3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2' .
|
||||||
'pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX' .
|
'pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX' .
|
||||||
'GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il' .
|
'GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il' .
|
||||||
'AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF' .
|
'AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF' .
|
||||||
'L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k' .
|
'L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k' .
|
||||||
'X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl' .
|
'X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl' .
|
||||||
'U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ' .
|
'U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ' .
|
||||||
'37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
|
'37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
|
||||||
$this->assertTrue($rsa->loadKey($key));
|
$this->assertTrue($rsa->loadKey($key));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRawPKCS1Key()
|
public function testRawPKCS1Key()
|
||||||
{
|
{
|
||||||
$rsa = new Crypt_RSA();
|
$rsa = new Crypt_RSA();
|
||||||
|
|
||||||
$key = 'MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp' .
|
$key = 'MIICXAIBAAKBgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4eCZ0FPqri0cb2JZfXJ/DgYSF6vUp' .
|
||||||
'wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5' .
|
'wmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMSGkVb1/3j+skZ6UtW+5u09lHNsj6tQ5' .
|
||||||
'1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh' .
|
'1s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZwIDAQABAoGAFijko56+qGyN8M0RVyaRAXz++xTqHBLh' .
|
||||||
'3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2' .
|
'3tx4VgMtrQ+WEgCjhoTwo23KMBAuJGSYnRmoBZM3lMfTKevIkAidPExvYCdm5dYq3XToLkkLv5L2' .
|
||||||
'pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX' .
|
'pIIVOFMDG+KESnAFV7l2c+cnzRMW0+b6f8mR1CJzZuxVLL6Q02fvLi55/mbSYxECQQDeAw6fiIQX' .
|
||||||
'GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il' .
|
'GukBI4eMZZt4nscy2o12KyYner3VpoeE+Np2q+Z3pvAMd/aNzQ/W9WaI+NRfcxUJrmfPwIGm63il' .
|
||||||
'AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF' .
|
'AkEAxCL5HQb2bQr4ByorcMWm/hEP2MZzROV73yF41hPsRC9m66KrheO9HPTJuo3/9s5p+sqGxOlF' .
|
||||||
'L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k' .
|
'L0NDt4SkosjgGwJAFklyR1uZ/wPJjj611cdBcztlPdqoxssQGnh85BzCj/u3WqBpE2vjvyyvyI5k' .
|
||||||
'X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl' .
|
'X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl' .
|
||||||
'U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ' .
|
'U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ' .
|
||||||
'37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
|
'37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
|
||||||
$key = base64_decode($key);
|
$key = base64_decode($key);
|
||||||
|
|
||||||
$this->assertTrue($rsa->loadKey($key));
|
$this->assertTrue($rsa->loadKey($key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXIII Andreas Fischer
|
* @copyright MMXIII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Math_BigInteger_BCMathTest extends Math_BigInteger_TestCase
|
class Math_BigInteger_BCMathTest extends Math_BigInteger_TestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
static public function setUpBeforeClass()
|
||||||
{
|
{
|
||||||
if (!extension_loaded('bcmath'))
|
if (!extension_loaded('bcmath')) {
|
||||||
{
|
self::markTestSkipped('BCMath extension is not available.');
|
||||||
self::markTestSkipped('BCMath extension is not available.');
|
}
|
||||||
}
|
|
||||||
|
|
||||||
parent::setUpBeforeClass();
|
parent::setUpBeforeClass();
|
||||||
|
|
||||||
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_BCMATH);
|
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_BCMATH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXIII Andreas Fischer
|
* @copyright MMXIII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Math_BigInteger_GMPTest extends Math_BigInteger_TestCase
|
class Math_BigInteger_GMPTest extends Math_BigInteger_TestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
static public function setUpBeforeClass()
|
||||||
{
|
{
|
||||||
if (!extension_loaded('gmp'))
|
if (!extension_loaded('gmp')) {
|
||||||
{
|
self::markTestSkipped('GNU Multiple Precision (GMP) extension is not available.');
|
||||||
self::markTestSkipped('GNU Multiple Precision (GMP) extension is not available.');
|
}
|
||||||
}
|
|
||||||
|
|
||||||
parent::setUpBeforeClass();
|
parent::setUpBeforeClass();
|
||||||
|
|
||||||
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_GMP);
|
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_GMP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,21 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXIII Andreas Fischer
|
* @copyright MMXIII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Math_BigInteger_InternalOpenSSLTest extends Math_BigInteger_TestCase
|
class Math_BigInteger_InternalOpenSSLTest extends Math_BigInteger_TestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
static public function setUpBeforeClass()
|
||||||
{
|
{
|
||||||
if (!function_exists('openssl_public_encrypt'))
|
if (!function_exists('openssl_public_encrypt')) {
|
||||||
{
|
self::markTestSkipped('openssl_public_encrypt() function is not available.');
|
||||||
self::markTestSkipped('openssl_public_encrypt() function is not available.');
|
}
|
||||||
}
|
|
||||||
|
|
||||||
parent::setUpBeforeClass();
|
parent::setUpBeforeClass();
|
||||||
|
|
||||||
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL);
|
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,17 +1,17 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXIII Andreas Fischer
|
* @copyright MMXIII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Math_BigInteger_InternalTest extends Math_BigInteger_TestCase
|
class Math_BigInteger_InternalTest extends Math_BigInteger_TestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
static public function setUpBeforeClass()
|
||||||
{
|
{
|
||||||
parent::setUpBeforeClass();
|
parent::setUpBeforeClass();
|
||||||
|
|
||||||
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL);
|
self::ensureConstant('MATH_BIGINTEGER_MODE', MATH_BIGINTEGER_MODE_INTERNAL);
|
||||||
self::ensureConstant('MATH_BIGINTEGER_OPENSSL_DISABLE', true);
|
self::ensureConstant('MATH_BIGINTEGER_OPENSSL_DISABLE', true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,268 +1,268 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXII Andreas Fischer
|
* @copyright MMXII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
require_once 'Math/BigInteger.php';
|
require_once 'Math/BigInteger.php';
|
||||||
|
|
||||||
abstract class Math_BigInteger_TestCase extends PhpseclibTestCase
|
abstract class Math_BigInteger_TestCase extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
static public function setUpBeforeClass()
|
static public function setUpBeforeClass()
|
||||||
{
|
{
|
||||||
parent::setUpBeforeClass();
|
parent::setUpBeforeClass();
|
||||||
|
|
||||||
self::reRequireFile('Math/BigInteger.php');
|
self::reRequireFile('Math/BigInteger.php');
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getInstance($x = 0, $base = 10)
|
public function getInstance($x = 0, $base = 10)
|
||||||
{
|
{
|
||||||
return new Math_BigInteger($x, $base);
|
return new Math_BigInteger($x, $base);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testConstructorBase2()
|
public function testConstructorBase2()
|
||||||
{
|
{
|
||||||
// 2**65 = 36893488147419103232
|
// 2**65 = 36893488147419103232
|
||||||
$this->assertSame('36893488147419103232', (string) $this->getInstance('1' . str_repeat('0', 65), 2));
|
$this->assertSame('36893488147419103232', (string) $this->getInstance('1' . str_repeat('0', 65), 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testConstructorBase10()
|
public function testConstructorBase10()
|
||||||
{
|
{
|
||||||
$this->assertSame('18446744073709551616', (string) $this->getInstance('18446744073709551616'));
|
$this->assertSame('18446744073709551616', (string) $this->getInstance('18446744073709551616'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testConstructorBase16()
|
public function testConstructorBase16()
|
||||||
{
|
{
|
||||||
$this->assertSame('50', (string) $this->getInstance('0x32', 16));
|
$this->assertSame('50', (string) $this->getInstance('0x32', 16));
|
||||||
$this->assertSame('12345678910', (string) $this->getInstance('0x2DFDC1C3E', 16));
|
$this->assertSame('12345678910', (string) $this->getInstance('0x2DFDC1C3E', 16));
|
||||||
$this->assertSame('18446744073709551615', (string) $this->getInstance('0xFFFFFFFFFFFFFFFF', 16));
|
$this->assertSame('18446744073709551615', (string) $this->getInstance('0xFFFFFFFFFFFFFFFF', 16));
|
||||||
$this->assertSame('18446744073709551616', (string) $this->getInstance('0x10000000000000000', 16));
|
$this->assertSame('18446744073709551616', (string) $this->getInstance('0x10000000000000000', 16));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testToBytes()
|
public function testToBytes()
|
||||||
{
|
{
|
||||||
$this->assertSame(chr(65), $this->getInstance('65')->toBytes());
|
$this->assertSame(chr(65), $this->getInstance('65')->toBytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testToBytesTwosCompliment()
|
public function testToBytesTwosCompliment()
|
||||||
{
|
{
|
||||||
$this->assertSame(chr(126), $this->getInstance('01111110', 2)->toBytes(true));
|
$this->assertSame(chr(126), $this->getInstance('01111110', 2)->toBytes(true));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testToHex()
|
public function testToHex()
|
||||||
{
|
{
|
||||||
$this->assertSame('41', $this->getInstance('65')->toHex());
|
$this->assertSame('41', $this->getInstance('65')->toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testToBits()
|
public function testToBits()
|
||||||
{
|
{
|
||||||
$this->assertSame('1000001', $this->getInstance('65')->toBits());
|
$this->assertSame('1000001', $this->getInstance('65')->toBits());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAdd()
|
public function testAdd()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('18446744073709551615');
|
$x = $this->getInstance('18446744073709551615');
|
||||||
$y = $this->getInstance( '100000000000');
|
$y = $this->getInstance( '100000000000');
|
||||||
|
|
||||||
$a = $x->add($y);
|
$a = $x->add($y);
|
||||||
$b = $y->add($x);
|
$b = $y->add($x);
|
||||||
|
|
||||||
$this->assertTrue($a->equals($b));
|
$this->assertTrue($a->equals($b));
|
||||||
$this->assertTrue($b->equals($a));
|
$this->assertTrue($b->equals($a));
|
||||||
|
|
||||||
$this->assertSame('18446744173709551615', (string) $a);
|
$this->assertSame('18446744173709551615', (string) $a);
|
||||||
$this->assertSame('18446744173709551615', (string) $b);
|
$this->assertSame('18446744173709551615', (string) $b);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSubtract()
|
public function testSubtract()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('18446744073709551618');
|
$x = $this->getInstance('18446744073709551618');
|
||||||
$y = $this->getInstance( '4000000000000');
|
$y = $this->getInstance( '4000000000000');
|
||||||
$this->assertSame('18446740073709551618', (string) $x->subtract($y));
|
$this->assertSame('18446740073709551618', (string) $x->subtract($y));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testMultiply()
|
public function testMultiply()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('8589934592'); // 2**33
|
$x = $this->getInstance('8589934592'); // 2**33
|
||||||
$y = $this->getInstance('36893488147419103232'); // 2**65
|
$y = $this->getInstance('36893488147419103232'); // 2**65
|
||||||
|
|
||||||
$a = $x->multiply($y); // 2**98
|
$a = $x->multiply($y); // 2**98
|
||||||
$b = $y->multiply($x); // 2**98
|
$b = $y->multiply($x); // 2**98
|
||||||
|
|
||||||
$this->assertTrue($a->equals($b));
|
$this->assertTrue($a->equals($b));
|
||||||
$this->assertTrue($b->equals($a));
|
$this->assertTrue($b->equals($a));
|
||||||
|
|
||||||
$this->assertSame('316912650057057350374175801344', (string) $a);
|
$this->assertSame('316912650057057350374175801344', (string) $a);
|
||||||
$this->assertSame('316912650057057350374175801344', (string) $b);
|
$this->assertSame('316912650057057350374175801344', (string) $b);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testDivide()
|
public function testDivide()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('1180591620717411303425'); // 2**70 + 1
|
$x = $this->getInstance('1180591620717411303425'); // 2**70 + 1
|
||||||
$y = $this->getInstance('12345678910');
|
$y = $this->getInstance('12345678910');
|
||||||
|
|
||||||
list($q, $r) = $x->divide($y);
|
list($q, $r) = $x->divide($y);
|
||||||
|
|
||||||
$this->assertSame('95627922070', (string) $q);
|
$this->assertSame('95627922070', (string) $q);
|
||||||
$this->assertSame('10688759725', (string) $r);
|
$this->assertSame('10688759725', (string) $r);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testModPow()
|
public function testModPow()
|
||||||
{
|
{
|
||||||
$a = $this->getInstance('10');
|
$a = $this->getInstance('10');
|
||||||
$b = $this->getInstance('20');
|
$b = $this->getInstance('20');
|
||||||
$c = $this->getInstance('30');
|
$c = $this->getInstance('30');
|
||||||
$d = $a->modPow($b, $c);
|
$d = $a->modPow($b, $c);
|
||||||
|
|
||||||
$this->assertSame('10', (string) $d);
|
$this->assertSame('10', (string) $d);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testModInverse()
|
public function testModInverse()
|
||||||
{
|
{
|
||||||
$a = $this->getInstance(30);
|
$a = $this->getInstance(30);
|
||||||
$b = $this->getInstance(17);
|
$b = $this->getInstance(17);
|
||||||
|
|
||||||
$c = $a->modInverse($b);
|
$c = $a->modInverse($b);
|
||||||
$this->assertSame('4', (string) $c);
|
$this->assertSame('4', (string) $c);
|
||||||
|
|
||||||
$d = $a->multiply($c);
|
$d = $a->multiply($c);
|
||||||
list($q, $r) = $d->divide($b);
|
list($q, $r) = $d->divide($b);
|
||||||
$this->assertSame('1', (string) $r);
|
$this->assertSame('1', (string) $r);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testExtendedGCD()
|
public function testExtendedGCD()
|
||||||
{
|
{
|
||||||
$a = $this->getInstance(693);
|
$a = $this->getInstance(693);
|
||||||
$b = $this->getInstance(609);
|
$b = $this->getInstance(609);
|
||||||
|
|
||||||
$arr = $a->extendedGCD($b);
|
$arr = $a->extendedGCD($b);
|
||||||
|
|
||||||
$this->assertSame('21', (string) $arr['gcd']);
|
$this->assertSame('21', (string) $arr['gcd']);
|
||||||
$this->assertSame(21, $a->toString() * $arr['x']->toString() + $b->toString() * $arr['y']->toString());
|
$this->assertSame(21, $a->toString() * $arr['x']->toString() + $b->toString() * $arr['y']->toString());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testGCD()
|
public function testGCD()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance(693);
|
$x = $this->getInstance(693);
|
||||||
$y = $this->getInstance(609);
|
$y = $this->getInstance(609);
|
||||||
$this->assertSame('21', (string) $x->gcd($y));
|
$this->assertSame('21', (string) $x->gcd($y));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testAbs()
|
public function testAbs()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('-18446744073709551617');
|
$x = $this->getInstance('-18446744073709551617');
|
||||||
$y = $x->abs();
|
$y = $x->abs();
|
||||||
|
|
||||||
$this->assertSame('-18446744073709551617', (string) $x);
|
$this->assertSame('-18446744073709551617', (string) $x);
|
||||||
$this->assertSame('18446744073709551617', (string) $y);
|
$this->assertSame('18446744073709551617', (string) $y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testEquals()
|
public function testEquals()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('18446744073709551616');
|
$x = $this->getInstance('18446744073709551616');
|
||||||
$y = $this->getInstance('18446744073709551616');
|
$y = $this->getInstance('18446744073709551616');
|
||||||
|
|
||||||
$this->assertTrue($x->equals($y));
|
$this->assertTrue($x->equals($y));
|
||||||
$this->assertTrue($y->equals($x));
|
$this->assertTrue($y->equals($x));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testCompare()
|
public function testCompare()
|
||||||
{
|
{
|
||||||
$a = $this->getInstance('-18446744073709551616');
|
$a = $this->getInstance('-18446744073709551616');
|
||||||
$b = $this->getInstance('36893488147419103232');
|
$b = $this->getInstance('36893488147419103232');
|
||||||
$c = $this->getInstance('36893488147419103232');
|
$c = $this->getInstance('36893488147419103232');
|
||||||
$d = $this->getInstance('316912650057057350374175801344');
|
$d = $this->getInstance('316912650057057350374175801344');
|
||||||
|
|
||||||
// a < b
|
// a < b
|
||||||
$this->assertLessThan(0, $a->compare($b));
|
$this->assertLessThan(0, $a->compare($b));
|
||||||
$this->assertGreaterThan(0, $b->compare($a));
|
$this->assertGreaterThan(0, $b->compare($a));
|
||||||
|
|
||||||
// b = c
|
// b = c
|
||||||
$this->assertSame(0, $b->compare($c));
|
$this->assertSame(0, $b->compare($c));
|
||||||
$this->assertSame(0, $c->compare($b));
|
$this->assertSame(0, $c->compare($b));
|
||||||
|
|
||||||
// c < d
|
// c < d
|
||||||
$this->assertLessThan(0, $c->compare($d));
|
$this->assertLessThan(0, $c->compare($d));
|
||||||
$this->assertGreaterThan(0, $d->compare($c));
|
$this->assertGreaterThan(0, $d->compare($c));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBitwiseAND()
|
public function testBitwiseAND()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('66666666666666666666666', 16);
|
$x = $this->getInstance('66666666666666666666666', 16);
|
||||||
$y = $this->getInstance('33333333333333333333333', 16);
|
$y = $this->getInstance('33333333333333333333333', 16);
|
||||||
$z = $this->getInstance('22222222222222222222222', 16);
|
$z = $this->getInstance('22222222222222222222222', 16);
|
||||||
|
|
||||||
$this->assertSame($z->toHex(), $x->bitwise_AND($y)->toHex());
|
$this->assertSame($z->toHex(), $x->bitwise_AND($y)->toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBitwiseOR()
|
public function testBitwiseOR()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('11111111111111111111111', 16);
|
$x = $this->getInstance('11111111111111111111111', 16);
|
||||||
$y = $this->getInstance('EEEEEEEEEEEEEEEEEEEEEEE', 16);
|
$y = $this->getInstance('EEEEEEEEEEEEEEEEEEEEEEE', 16);
|
||||||
$z = $this->getInstance('FFFFFFFFFFFFFFFFFFFFFFF', 16);
|
$z = $this->getInstance('FFFFFFFFFFFFFFFFFFFFFFF', 16);
|
||||||
|
|
||||||
$this->assertSame($z->toHex(), $x->bitwise_OR($y)->toHex());
|
$this->assertSame($z->toHex(), $x->bitwise_OR($y)->toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBitwiseXOR()
|
public function testBitwiseXOR()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('AFAFAFAFAFAFAFAFAFAFAFAF', 16);
|
$x = $this->getInstance('AFAFAFAFAFAFAFAFAFAFAFAF', 16);
|
||||||
$y = $this->getInstance('133713371337133713371337', 16);
|
$y = $this->getInstance('133713371337133713371337', 16);
|
||||||
$z = $this->getInstance('BC98BC98BC98BC98BC98BC98', 16);
|
$z = $this->getInstance('BC98BC98BC98BC98BC98BC98', 16);
|
||||||
|
|
||||||
$this->assertSame($z->toHex(), $x->bitwise_XOR($y)->toHex());
|
$this->assertSame($z->toHex(), $x->bitwise_XOR($y)->toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBitwiseNOT()
|
public function testBitwiseNOT()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('EEEEEEEEEEEEEEEEEEEEEEE', 16);
|
$x = $this->getInstance('EEEEEEEEEEEEEEEEEEEEEEE', 16);
|
||||||
$z = $this->getInstance('11111111111111111111111', 16);
|
$z = $this->getInstance('11111111111111111111111', 16);
|
||||||
|
|
||||||
$this->assertSame($z->toHex(), $x->bitwise_NOT()->toHex());
|
$this->assertSame($z->toHex(), $x->bitwise_NOT()->toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBitwiseLeftShift()
|
public function testBitwiseLeftShift()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('0x0000000FF0000000', 16);
|
$x = $this->getInstance('0x0000000FF0000000', 16);
|
||||||
$y = $this->getInstance('0x000FF00000000000', 16);
|
$y = $this->getInstance('0x000FF00000000000', 16);
|
||||||
|
|
||||||
$this->assertSame($y->toHex(), $x->bitwise_LeftShift(16)->toHex());
|
$this->assertSame($y->toHex(), $x->bitwise_LeftShift(16)->toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testBitwiseRightShift()
|
public function testBitwiseRightShift()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('0x0000000FF0000000', 16);
|
$x = $this->getInstance('0x0000000FF0000000', 16);
|
||||||
$y = $this->getInstance('0x00000000000FF000', 16);
|
$y = $this->getInstance('0x00000000000FF000', 16);
|
||||||
$z = $this->getInstance('0x000000000000000F', 16);
|
$z = $this->getInstance('0x000000000000000F', 16);
|
||||||
$n = $this->getInstance(0);
|
$n = $this->getInstance(0);
|
||||||
|
|
||||||
$this->assertSame($y->toHex(), $x->bitwise_RightShift(16)->toHex());
|
$this->assertSame($y->toHex(), $x->bitwise_RightShift(16)->toHex());
|
||||||
$this->assertSame($z->toHex(), $x->bitwise_RightShift(32)->toHex());
|
$this->assertSame($z->toHex(), $x->bitwise_RightShift(32)->toHex());
|
||||||
$this->assertSame($n->toHex(), $x->bitwise_RightShift(36)->toHex());
|
$this->assertSame($n->toHex(), $x->bitwise_RightShift(36)->toHex());
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSerializable()
|
public function testSerializable()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('18446744073709551616');
|
$x = $this->getInstance('18446744073709551616');
|
||||||
$y = unserialize(serialize($x));
|
$y = unserialize(serialize($x));
|
||||||
|
|
||||||
$this->assertTrue($x->equals($y));
|
$this->assertTrue($x->equals($y));
|
||||||
$this->assertTrue($y->equals($x));
|
$this->assertTrue($y->equals($x));
|
||||||
|
|
||||||
$this->assertSame('18446744073709551616', (string) $x);
|
$this->assertSame('18446744073709551616', (string) $x);
|
||||||
$this->assertSame('18446744073709551616', (string) $y);
|
$this->assertSame('18446744073709551616', (string) $y);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testClone()
|
public function testClone()
|
||||||
{
|
{
|
||||||
$x = $this->getInstance('18446744073709551616');
|
$x = $this->getInstance('18446744073709551616');
|
||||||
$y = clone $x;
|
$y = clone $x;
|
||||||
|
|
||||||
$this->assertTrue($x->equals($y));
|
$this->assertTrue($x->equals($y));
|
||||||
$this->assertTrue($y->equals($x));
|
$this->assertTrue($y->equals($x));
|
||||||
|
|
||||||
$this->assertSame('18446744073709551616', (string) $x);
|
$this->assertSame('18446744073709551616', (string) $x);
|
||||||
$this->assertSame('18446744073709551616', (string) $y);
|
$this->assertSame('18446744073709551616', (string) $y);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Marc Scholten <marc@pedigital.de>
|
* @author Marc Scholten <marc@pedigital.de>
|
||||||
* @copyright MMXIII Marc Scholten
|
* @copyright MMXIII Marc Scholten
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Net_SSH1Test extends PhpseclibTestCase
|
class Net_SSH1Test extends PhpseclibTestCase
|
||||||
|
@ -1,24 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Marc Scholten <marc@pedigital.de>
|
* @author Marc Scholten <marc@pedigital.de>
|
||||||
* @copyright MMXIII Marc Scholten
|
* @copyright MMXIII Marc Scholten
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Net_SSH2Test extends PhpseclibTestCase
|
class Net_SSH2Test extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
/**
|
|
||||||
* @return Net_SSH2
|
|
||||||
*/
|
|
||||||
private function createSSHMock()
|
|
||||||
{
|
|
||||||
return $this->getMockBuilder('Net_SSH2')
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->setMethods(array('__destruct'))
|
|
||||||
->getMock();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function formatLogDataProvider()
|
public function formatLogDataProvider()
|
||||||
{
|
{
|
||||||
return array(
|
return array(
|
||||||
@ -65,12 +54,12 @@ class Net_SSH2Test extends PhpseclibTestCase
|
|||||||
public function testGenerateIdentifier($expected, array $requiredExtensions)
|
public function testGenerateIdentifier($expected, array $requiredExtensions)
|
||||||
{
|
{
|
||||||
$notAllowed = array('gmp', 'bcmath', 'mcrypt', 'gmp');
|
$notAllowed = array('gmp', 'bcmath', 'mcrypt', 'gmp');
|
||||||
foreach($notAllowed as $notAllowedExtension) {
|
foreach ($notAllowed as $notAllowedExtension) {
|
||||||
if(in_array($notAllowedExtension, $requiredExtensions)) {
|
if (in_array($notAllowedExtension, $requiredExtensions)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(extension_loaded($notAllowedExtension)) {
|
if (extension_loaded($notAllowedExtension)) {
|
||||||
$this->markTestSkipped('Extension ' . $notAllowedExtension . ' is not allowed for this data-set');
|
$this->markTestSkipped('Extension ' . $notAllowedExtension . ' is not allowed for this data-set');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -81,4 +70,14 @@ class Net_SSH2Test extends PhpseclibTestCase
|
|||||||
$this->assertEquals($expected, $identifier);
|
$this->assertEquals($expected, $identifier);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Net_SSH2
|
||||||
|
*/
|
||||||
|
protected function createSSHMock()
|
||||||
|
{
|
||||||
|
return $this->getMockBuilder('Net_SSH2')
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->setMethods(array('__destruct'))
|
||||||
|
->getMock();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,74 +1,64 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
/**
|
||||||
* @author Andreas Fischer <bantu@phpbb.com>
|
* @author Andreas Fischer <bantu@phpbb.com>
|
||||||
* @copyright MMXIII Andreas Fischer
|
* @copyright MMXIII Andreas Fischer
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
abstract class PhpseclibTestCase extends PHPUnit_Framework_TestCase
|
abstract class PhpseclibTestCase extends PHPUnit_Framework_TestCase
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
* @param string $constant
|
* @param string $constant
|
||||||
* @param mixed $expected
|
* @param mixed $expected
|
||||||
*
|
*
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
static protected function ensureConstant($constant, $expected)
|
static protected function ensureConstant($constant, $expected)
|
||||||
{
|
{
|
||||||
if (defined($constant))
|
if (defined($constant)) {
|
||||||
{
|
$value = constant($constant);
|
||||||
$value = constant($constant);
|
|
||||||
|
|
||||||
if ($value !== $expected)
|
if ($value !== $expected) {
|
||||||
{
|
if (function_exists('runkit_constant_redefine')) {
|
||||||
if (function_exists('runkit_constant_redefine'))
|
if (!runkit_constant_redefine($constant, $expected)) {
|
||||||
{
|
self::markTestSkipped(sprintf(
|
||||||
if (!runkit_constant_redefine($constant, $expected))
|
"Failed to redefine constant %s to %s",
|
||||||
{
|
$constant,
|
||||||
self::markTestSkipped(sprintf(
|
$expected
|
||||||
"Failed to redefine constant %s to %s",
|
));
|
||||||
$constant,
|
}
|
||||||
$expected
|
} else {
|
||||||
));
|
self::markTestSkipped(sprintf(
|
||||||
}
|
"Skipping test because constant %s is %s instead of %s",
|
||||||
}
|
$constant,
|
||||||
else
|
$value,
|
||||||
{
|
$expected
|
||||||
self::markTestSkipped(sprintf(
|
));
|
||||||
"Skipping test because constant %s is %s instead of %s",
|
}
|
||||||
$constant,
|
}
|
||||||
$value,
|
} else {
|
||||||
$expected
|
define($constant, $expected);
|
||||||
));
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
define($constant, $expected);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param string $filename
|
* @param string $filename
|
||||||
*
|
*
|
||||||
* @return null
|
* @return null
|
||||||
*/
|
*/
|
||||||
static protected function reRequireFile($filename)
|
static protected function reRequireFile($filename)
|
||||||
{
|
{
|
||||||
if (function_exists('runkit_import'))
|
if (function_exists('runkit_import')) {
|
||||||
{
|
$result = runkit_import(
|
||||||
$result = runkit_import(
|
$filename,
|
||||||
$filename,
|
RUNKIT_IMPORT_FUNCTIONS |
|
||||||
RUNKIT_IMPORT_FUNCTIONS |
|
RUNKIT_IMPORT_CLASS_METHODS |
|
||||||
RUNKIT_IMPORT_CLASS_METHODS |
|
RUNKIT_IMPORT_OVERRIDE
|
||||||
RUNKIT_IMPORT_OVERRIDE
|
);
|
||||||
);
|
|
||||||
|
|
||||||
if (!$result)
|
if (!$result) {
|
||||||
{
|
self::markTestSkipped("Failed to reimport file $filename");
|
||||||
self::markTestSkipped("Failed to reimport file $filename");
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
/**
|
/**
|
||||||
* Bootstrapping File for phpseclib Test Suite
|
* Bootstrapping File for phpseclib Test Suite
|
||||||
*
|
*
|
||||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||||
*/
|
*/
|
||||||
|
|
||||||
date_default_timezone_set('UTC');
|
date_default_timezone_set('UTC');
|
||||||
@ -10,35 +10,34 @@ date_default_timezone_set('UTC');
|
|||||||
// Set up include path accordingly. This is especially required because some
|
// Set up include path accordingly. This is especially required because some
|
||||||
// class files of phpseclib require() other dependencies.
|
// class files of phpseclib require() other dependencies.
|
||||||
set_include_path(implode(PATH_SEPARATOR, array(
|
set_include_path(implode(PATH_SEPARATOR, array(
|
||||||
dirname(__FILE__) . '/../phpseclib/',
|
dirname(__FILE__) . '/../phpseclib/',
|
||||||
dirname(__FILE__) . '/',
|
dirname(__FILE__) . '/',
|
||||||
get_include_path(),
|
get_include_path(),
|
||||||
)));
|
)));
|
||||||
|
|
||||||
function phpseclib_is_includable($suffix)
|
function phpseclib_is_includable($suffix)
|
||||||
{
|
{
|
||||||
foreach (explode(PATH_SEPARATOR, get_include_path()) as $prefix)
|
foreach (explode(PATH_SEPARATOR, get_include_path()) as $prefix) {
|
||||||
{
|
$ds = substr($prefix, -1) == DIRECTORY_SEPARATOR ? '' : DIRECTORY_SEPARATOR;
|
||||||
$ds = substr($prefix, -1) == DIRECTORY_SEPARATOR ? '' : DIRECTORY_SEPARATOR;
|
$file = $prefix . $ds . $suffix;
|
||||||
$file = $prefix . $ds . $suffix;
|
|
||||||
|
|
||||||
if (file_exists($file))
|
if (file_exists($file)) {
|
||||||
{
|
return true;
|
||||||
return true;
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
function phpseclib_autoload($class)
|
function phpseclib_autoload($class)
|
||||||
{
|
{
|
||||||
$file = str_replace('_', '/', $class) . '.php';
|
$file = str_replace('_', '/', $class) . '.php';
|
||||||
|
|
||||||
if (phpseclib_is_includable($file))
|
if (phpseclib_is_includable($file)) {
|
||||||
{
|
// @codingStandardsIgnoreStart
|
||||||
require $file;
|
require $file;
|
||||||
}
|
// @codingStandardsIgnoreEnd
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
spl_autoload_register('phpseclib_autoload');
|
spl_autoload_register('phpseclib_autoload');
|
||||||
|
@ -1,77 +0,0 @@
|
|||||||
<?xml version="1.0"?>
|
|
||||||
<ruleset name="phpseclib Standard">
|
|
||||||
|
|
||||||
<description>phpseclib coding standard</description>
|
|
||||||
|
|
||||||
<!-- We are using the PEAR standard as a base -->
|
|
||||||
<rule ref="PEAR"/>
|
|
||||||
|
|
||||||
<!-- Temporary exceptions to the PEAR standard follow -->
|
|
||||||
|
|
||||||
<rule ref="Generic.ControlStructures.InlineControlStructure.Discouraged"><severity>0</severity></rule>
|
|
||||||
<rule ref="Generic.Files.LineLength.TooLong"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.FunctionNoCapital"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.NamingConventions.ValidFunctionName.NotCamelCaps"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.ClassComment.InvalidVersion"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.ClassComment.MissingTag"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FileComment.EmptyCopyright"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FileComment.InvalidVersion"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.ExtraParamComment"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.MissingReturn"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.MissingParamComment"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.MissingParamName"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.MissingParamTag"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.ParameterCommentsNotAligned"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.ParameterNamesNotAligned"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.ParamNameNoMatch"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.SpacingAfterParams"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.SpacingBeforeParams"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Commenting.FunctionComment.SpacingBeforeTags"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.ContentAfterOpenBracket"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.CloseBracketLine"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.Indent"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.Functions.FunctionCallSignature.SpaceAfterOpenBracket"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.WhiteSpace.ScopeClosingBrace.BreakIdent"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.WhiteSpace.ScopeClosingBrace.Indent"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.WhiteSpace.ScopeClosingBrace.Line"><severity>0</severity></rule>
|
|
||||||
<rule ref="PEAR.WhiteSpace.ScopeIndent.Incorrect"><severity>0</severity></rule>
|
|
||||||
|
|
||||||
<!-- Useful additional rules follow -->
|
|
||||||
|
|
||||||
<!-- "for (; bar; )" should be "while (bar)" instead -->
|
|
||||||
<rule ref="Generic.CodeAnalysis.ForLoopShouldBeWhileLoop" />
|
|
||||||
|
|
||||||
<!-- A method MUST not only call its parent -->
|
|
||||||
<rule ref="Generic.CodeAnalysis.UselessOverridingMethod" />
|
|
||||||
|
|
||||||
<!-- All code files MUST use only UTF-8 without BOM. -->
|
|
||||||
<rule ref="Generic.Files.ByteOrderMark" />
|
|
||||||
|
|
||||||
<!-- Each file MUST end with exactly one newline character -->
|
|
||||||
<rule ref="PSR2.Files.EndFileNewline" />
|
|
||||||
|
|
||||||
<!-- In the argument list, there MUST NOT be a space before each comma,
|
|
||||||
and there MUST be one space after each comma. -->
|
|
||||||
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing">
|
|
||||||
<properties>
|
|
||||||
<property name="equalsSpacing" value="1"/>
|
|
||||||
</properties>
|
|
||||||
</rule>
|
|
||||||
<rule ref="Squiz.Functions.FunctionDeclarationArgumentSpacing.SpacingAfterHint" />
|
|
||||||
|
|
||||||
<!-- There MUST NOT be trailing whitespace at the end of lines. -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace" />
|
|
||||||
|
|
||||||
<!-- There MUST NOT be whitespace before the first content of a file -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.StartFile" />
|
|
||||||
|
|
||||||
<!-- There MUST NOT be whitespace after the last content of a file -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EndFile" />
|
|
||||||
|
|
||||||
<!-- Functions MUST NOT contain multiple empty lines in a row -->
|
|
||||||
<rule ref="Squiz.WhiteSpace.SuperfluousWhitespace.EmptyLines" />
|
|
||||||
|
|
||||||
<!-- The ?> closing tag MUST be omitted from files containing only PHP. -->
|
|
||||||
<rule ref="Zend.Files.ClosingTag" />
|
|
||||||
|
|
||||||
</ruleset>
|
|
Loading…
Reference in New Issue
Block a user