mirror of
https://github.com/phpseclib/phpseclib.git
synced 2024-06-03 09:00:52 +00:00
Merge branch '3.0'
This commit is contained in:
commit
414b0b0d3b
|
@ -950,6 +950,8 @@ class SSH2
|
||||||
* Default Constructor.
|
* Default Constructor.
|
||||||
*
|
*
|
||||||
* $host can either be a string, representing the host, or a stream resource.
|
* $host can either be a string, representing the host, or a stream resource.
|
||||||
|
* If $host is a stream resource then $port doesn't do anything, altho $timeout
|
||||||
|
* still will be used
|
||||||
*
|
*
|
||||||
* @see self::login()
|
* @see self::login()
|
||||||
*/
|
*/
|
||||||
|
@ -957,6 +959,8 @@ class SSH2
|
||||||
{
|
{
|
||||||
self::$connections[$this->getResourceId()] = \WeakReference::create($this);
|
self::$connections[$this->getResourceId()] = \WeakReference::create($this);
|
||||||
|
|
||||||
|
$this->timeout = $timeout;
|
||||||
|
|
||||||
if (is_resource($host)) {
|
if (is_resource($host)) {
|
||||||
$this->fsock = $host;
|
$this->fsock = $host;
|
||||||
return;
|
return;
|
||||||
|
@ -965,7 +969,6 @@ class SSH2
|
||||||
if (Strings::is_stringable($host)) {
|
if (Strings::is_stringable($host)) {
|
||||||
$this->host = $host;
|
$this->host = $host;
|
||||||
$this->port = $port;
|
$this->port = $port;
|
||||||
$this->timeout = $timeout;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3195,6 +3198,9 @@ class SSH2
|
||||||
}
|
}
|
||||||
|
|
||||||
$start = microtime(true);
|
$start = microtime(true);
|
||||||
|
$sec = (int) floor($this->curTimeout);
|
||||||
|
$usec = (int) (1000000 * ($this->curTimeout - $sec));
|
||||||
|
stream_set_timeout($this->fsock, $sec, $usec);
|
||||||
$raw = stream_get_contents($this->fsock, $this->decrypt_block_size);
|
$raw = stream_get_contents($this->fsock, $this->decrypt_block_size);
|
||||||
|
|
||||||
if (!strlen($raw)) {
|
if (!strlen($raw)) {
|
||||||
|
|
|
@ -30,7 +30,7 @@ abstract class TestCase extends PhpseclibTestCase
|
||||||
/**
|
/**
|
||||||
* Produces all combinations of test values.
|
* Produces all combinations of test values.
|
||||||
*/
|
*/
|
||||||
public function continuousBufferCombos(): array
|
public static function continuousBufferCombos(): array
|
||||||
{
|
{
|
||||||
$modes = [
|
$modes = [
|
||||||
'ctr',
|
'ctr',
|
||||||
|
@ -133,7 +133,7 @@ abstract class TestCase extends PhpseclibTestCase
|
||||||
*
|
*
|
||||||
* @return list<array{string, string, array}>
|
* @return list<array{string, string, array}>
|
||||||
*/
|
*/
|
||||||
public function continuousBufferBatteryCombos(): array
|
public static function continuousBufferBatteryCombos(): array
|
||||||
{
|
{
|
||||||
$modes = [
|
$modes = [
|
||||||
'ctr',
|
'ctr',
|
||||||
|
@ -178,7 +178,7 @@ abstract class TestCase extends PhpseclibTestCase
|
||||||
*/
|
*/
|
||||||
public function continuousBufferBatteryCombosWithoutSingleCombos(): array
|
public function continuousBufferBatteryCombosWithoutSingleCombos(): array
|
||||||
{
|
{
|
||||||
return array_filter($this->continuousBufferBatteryCombos(), fn (array $continuousBufferBatteryCombo) => count($continuousBufferBatteryCombo[2]) > 1);
|
return array_filter(self::$continuousBufferBatteryCombos(), fn (array $continuousBufferBatteryCombo) => count($continuousBufferBatteryCombo[2]) > 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -16,7 +16,7 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class BlowfishTest extends PhpseclibTestCase
|
class BlowfishTest extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public function engineVectors(): array
|
public static function engineVectors(): array
|
||||||
{
|
{
|
||||||
$engines = [
|
$engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
|
|
|
@ -18,7 +18,7 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class CurveTest extends PhpseclibTestCase
|
class CurveTest extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public function curves(): array
|
public static function curves(): array
|
||||||
{
|
{
|
||||||
$curves = [];
|
$curves = [];
|
||||||
foreach (new \DirectoryIterator(__DIR__ . '/../../../../phpseclib/Crypt/EC/Curves/') as $file) {
|
foreach (new \DirectoryIterator(__DIR__ . '/../../../../phpseclib/Crypt/EC/Curves/') as $file) {
|
||||||
|
@ -40,7 +40,7 @@ class CurveTest extends PhpseclibTestCase
|
||||||
return $curves;
|
return $curves;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function allCurves(): array
|
public static function allCurves(): array
|
||||||
{
|
{
|
||||||
$curves = [];
|
$curves = [];
|
||||||
foreach (new \DirectoryIterator(__DIR__ . '/../../../../phpseclib/Crypt/EC/Curves/') as $file) {
|
foreach (new \DirectoryIterator(__DIR__ . '/../../../../phpseclib/Crypt/EC/Curves/') as $file) {
|
||||||
|
@ -57,7 +57,7 @@ class CurveTest extends PhpseclibTestCase
|
||||||
return $curves;
|
return $curves;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function curvesWithOIDs(): array
|
public static function curvesWithOIDs(): array
|
||||||
{
|
{
|
||||||
$class = new \ReflectionClass('phpseclib3\Crypt\EC\Formats\Keys\PKCS8');
|
$class = new \ReflectionClass('phpseclib3\Crypt\EC\Formats\Keys\PKCS8');
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ class GCMTest extends PhpseclibTestCase
|
||||||
/**
|
/**
|
||||||
* Produces all combinations of test values.
|
* Produces all combinations of test values.
|
||||||
*/
|
*/
|
||||||
public function engine128Vectors(): array
|
public static function engine128Vectors(): array
|
||||||
{
|
{
|
||||||
$engines = [
|
$engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
|
@ -128,7 +128,7 @@ class GCMTest extends PhpseclibTestCase
|
||||||
/**
|
/**
|
||||||
* Produces all combinations of test values.
|
* Produces all combinations of test values.
|
||||||
*/
|
*/
|
||||||
public function engine256Vectors(): array
|
public static function engine256Vectors(): array
|
||||||
{
|
{
|
||||||
$engines = [
|
$engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
|
|
|
@ -428,7 +428,7 @@ class HashTest extends PhpseclibTestCase
|
||||||
$this->assertSame($hash->getLengthInBytes(), $length);
|
$this->assertSame($hash->getLengthInBytes(), $length);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function lengths(): array
|
public static function lengths(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
// known
|
// known
|
||||||
|
@ -441,7 +441,7 @@ class HashTest extends PhpseclibTestCase
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function UMACs(): array
|
public static function UMACs(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['', 'umac-32', '113145FB', "umac-32 and message of <empty>"],
|
['', 'umac-32', '113145FB', "umac-32 and message of <empty>"],
|
||||||
|
|
|
@ -15,13 +15,13 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class RC2Test extends PhpseclibTestCase
|
class RC2Test extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public $engines = [
|
public static $engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
'Eval',
|
'Eval',
|
||||||
'OpenSSL',
|
'OpenSSL',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function engineVectors(): array
|
public static function engineVectors(): array
|
||||||
{
|
{
|
||||||
// tests from https://tools.ietf.org/html/rfc2268#page-8
|
// tests from https://tools.ietf.org/html/rfc2268#page-8
|
||||||
$tests = [
|
$tests = [
|
||||||
|
@ -38,7 +38,7 @@ class RC2Test extends PhpseclibTestCase
|
||||||
|
|
||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
foreach ($this->engines as $engine) {
|
foreach (self::$engines as $engine) {
|
||||||
foreach ($tests as $test) {
|
foreach ($tests as $test) {
|
||||||
$result[] = [$engine, $test[0], $test[1], $test[2], $test[3]];
|
$result[] = [$engine, $test[0], $test[1], $test[2], $test[3]];
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,7 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class RC4Test extends PhpseclibTestCase
|
class RC4Test extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public function engineVectors(): array
|
public static function engineVectors(): array
|
||||||
{
|
{
|
||||||
$engines = [
|
$engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
|
|
|
@ -15,9 +15,9 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class RandomTest extends PhpseclibTestCase
|
class RandomTest extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public function stringLengthData(): array
|
public static function stringLengthData(): array
|
||||||
{
|
{
|
||||||
return array_map([$this, 'wrap'], [
|
return array_map(fn($x) => [$x], [
|
||||||
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 17, 19, 20, 23, 29, 31, 37,
|
1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 17, 19, 20, 23, 29, 31, 37,
|
||||||
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 111, 128, 1000,
|
41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 111, 128, 1000,
|
||||||
1024, 10000, 12345, 100000, 123456,
|
1024, 10000, 12345, 100000, 123456,
|
||||||
|
@ -52,10 +52,4 @@ class RandomTest extends PhpseclibTestCase
|
||||||
$values[$rand] = true;
|
$values[$rand] = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected function wrap($x): array
|
|
||||||
{
|
|
||||||
// array() is not a function, but $this->wrap() is.
|
|
||||||
return [$x];
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class Salsa20Test extends PhpseclibTestCase
|
class Salsa20Test extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public function engineVectors(): array
|
public static function engineVectors(): array
|
||||||
{
|
{
|
||||||
$engines = [
|
$engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
|
|
|
@ -15,13 +15,13 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class TripleDESTest extends PhpseclibTestCase
|
class TripleDESTest extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public $engines = [
|
public static $engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
'Eval',
|
'Eval',
|
||||||
'OpenSSL',
|
'OpenSSL',
|
||||||
];
|
];
|
||||||
|
|
||||||
public function engineVectors(): array
|
public static function engineVectors(): array
|
||||||
{
|
{
|
||||||
// tests from http://csrc.nist.gov/publications/nistpubs/800-20/800-20.pdf#page=273
|
// tests from http://csrc.nist.gov/publications/nistpubs/800-20/800-20.pdf#page=273
|
||||||
$tests = [
|
$tests = [
|
||||||
|
@ -95,7 +95,7 @@ class TripleDESTest extends PhpseclibTestCase
|
||||||
|
|
||||||
$result = [];
|
$result = [];
|
||||||
|
|
||||||
foreach ($this->engines as $engine) {
|
foreach (self::$engines as $engine) {
|
||||||
foreach ($tests as $test) {
|
foreach ($tests as $test) {
|
||||||
$result[] = [$engine, $test[0], $test[1], $test[2]];
|
$result[] = [$engine, $test[0], $test[1], $test[2]];
|
||||||
}
|
}
|
||||||
|
@ -122,7 +122,7 @@ class TripleDESTest extends PhpseclibTestCase
|
||||||
$this->assertEquals($result, $expected, "Failed asserting that $plaintext yielded expected output in $engine engine");
|
$this->assertEquals($result, $expected, "Failed asserting that $plaintext yielded expected output in $engine engine");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function engineIVVectors(): array
|
public static function engineIVVectors(): array
|
||||||
{
|
{
|
||||||
$engines = [
|
$engines = [
|
||||||
'PHP',
|
'PHP',
|
||||||
|
@ -184,7 +184,7 @@ class TripleDESTest extends PhpseclibTestCase
|
||||||
$des->setKey('abcdefghijklmnopqrstuvwx');
|
$des->setKey('abcdefghijklmnopqrstuvwx');
|
||||||
$des->setIV(str_repeat("\0", $des->getBlockLength() >> 3));
|
$des->setIV(str_repeat("\0", $des->getBlockLength() >> 3));
|
||||||
|
|
||||||
foreach ($this->engines as $engine) {
|
foreach (self::$engines as $engine) {
|
||||||
$des->setPreferredEngine($engine);
|
$des->setPreferredEngine($engine);
|
||||||
if (!$des->isValidEngine($engine)) {
|
if (!$des->isValidEngine($engine)) {
|
||||||
self::markTestSkipped("Unable to initialize $engine engine");
|
self::markTestSkipped("Unable to initialize $engine engine");
|
||||||
|
@ -209,7 +209,7 @@ class TripleDESTest extends PhpseclibTestCase
|
||||||
/**
|
/**
|
||||||
* @return list<array{string, string}>
|
* @return list<array{string, string}>
|
||||||
*/
|
*/
|
||||||
public function provideForCorrectSelfUseInLambda(): array
|
public static function provideForCorrectSelfUseInLambda(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
['YWFhYWFhYWFhYWFhYWFhYWFhYWG9l9gm', 'fDSmC5bbLdx8NKYLltst3Hw0pguW2y3cfDSmC5bbLdxmhqEOIeS2ig=='],
|
['YWFhYWFhYWFhYWFhYWFhYWFhYWG9l9gm', 'fDSmC5bbLdx8NKYLltst3Hw0pguW2y3cfDSmC5bbLdxmhqEOIeS2ig=='],
|
||||||
|
|
|
@ -16,7 +16,7 @@ use phpseclib3\Tests\PhpseclibTestCase;
|
||||||
|
|
||||||
class SSH2UnitTest extends PhpseclibTestCase
|
class SSH2UnitTest extends PhpseclibTestCase
|
||||||
{
|
{
|
||||||
public function formatLogDataProvider(): array
|
public static function formatLogDataProvider(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
[
|
[
|
||||||
|
|
Loading…
Reference in New Issue
Block a user