mirror of
https://github.com/danog/phpseclib.git
synced 2024-11-27 04:46:26 +01:00
Merge branch 'master' of https://github.com/phpseclib/phpseclib into openssl-support
This commit is contained in:
commit
8fc4f4b70c
83
CHANGELOG.md
Normal file
83
CHANGELOG.md
Normal file
@ -0,0 +1,83 @@
|
||||
# Changelog
|
||||
|
||||
## 0.3.9 - 2014-11-09
|
||||
|
||||
- PHP 5.6 improvements ([#482](https://github.com/phpseclib/phpseclib/pull/482), [#491](https://github.com/phpseclib/phpseclib/issues/491))
|
||||
|
||||
## 0.3.8 - 2014-09-12
|
||||
|
||||
- improve support for indef lengths in File_ASN1
|
||||
- add hmac-sha2-256 support to Net_SSH2
|
||||
- make it so negotiated algorithms can be seen before Net_SSH2 login
|
||||
- add sha256-96 and sha512-96 to Crypt_Hash
|
||||
- window size handling adjustments in Net_SSH2
|
||||
|
||||
## 0.3.7 - 2014-07-05
|
||||
|
||||
- auto-detect public vs private keys
|
||||
- add file_exists, is_dir, is_file, readlink and symlink to Net_SFTP
|
||||
- add support for recursive nlist and rawlist
|
||||
- make it so nlist and rawlist can return pre-sorted output
|
||||
- make it so callback functions can make exec() return early
|
||||
- add signSPKAC and saveSPKAC methods to File_X509
|
||||
- add support for PKCS8 keys in Crypt_RSA
|
||||
- add pbkdf1 support to setPassword() in Crypt_Base
|
||||
- add getWindowColumns, getWindowRows, setWindowColumns, setWindowRows to Net_SSH2
|
||||
- add support for filenames with spaces in them to Net_SCP
|
||||
|
||||
## 0.3.6 - 2014-02-23
|
||||
|
||||
- add preliminary support for custom SSH subsystems
|
||||
- add ssh-agent support
|
||||
|
||||
## 0.3.5 - 2013-07-11
|
||||
|
||||
- numerous SFTP changes:
|
||||
- chown
|
||||
- chgrp
|
||||
- truncate
|
||||
- improved file type detection
|
||||
- put() can write to te middle of a file
|
||||
- mkdir accepts the same paramters that PHP's mkdir does
|
||||
- the ability to upload/download 2GB files
|
||||
- across-the-board speedups for the various encryption algorithms
|
||||
- multi-factor authentication support for Net_SSH2
|
||||
- a $callback parameter for Net_SSH2::exec
|
||||
- new classes:
|
||||
- Net_SFTP_StreamWrapper
|
||||
- Net_SCP
|
||||
- Crypt_Twofish
|
||||
- Crypt_Blowfish
|
||||
|
||||
## 0.3.1 - 2012-11-20
|
||||
|
||||
- add Net_SSH2::enableQuietMode() for suppressing stderr
|
||||
- add Crypt_RSA::__toString() and Crypt_RSA::getSize()
|
||||
- fix problems with File_X509::validateDate(), File_X509::sign() and Crypt_RSA::verify()
|
||||
- use OpenSSL to speed up modular exponention in Math_BigInteger
|
||||
- improved timeout functionality in Net_SSH2
|
||||
- add support for SFTPv2
|
||||
- add support for CRLs in File_X509
|
||||
- SSH-2.0-SSH doesn't implement hmac-*-96 correctly
|
||||
|
||||
## 0.3.0 - 2012-07-08
|
||||
|
||||
- add support for reuming Net_SFTP::put()
|
||||
- add support for recursive deletes and recursive chmods to Net_SFTP
|
||||
- add setTimeout() to Net_SSH2
|
||||
- add support for PBKDF2 to the various Crypt_* classes via setPassword()
|
||||
- add File_X509 and File_ASN1
|
||||
- add the ability to decode various formats in Crypt_RSA
|
||||
- make Net_SSH2::getServerPublicHostKey() return a printer-friendly version of the public key
|
||||
|
||||
## 0.2.2 - 2011-05-09
|
||||
|
||||
- CFB and OFB modes were added to all block ciphers
|
||||
- support for interactive mode was added to Net_SSH2
|
||||
- Net_SSH2 now has limited keyboard_interactive authentication support
|
||||
- support was added for PuTTY formatted RSA private keys and XML formatted RSA private keys
|
||||
- Crypt_RSA::loadKey() will now try all key types automatically
|
||||
= add support for AES-128-CBC and DES-EDE3-CFB encrypted RSA private keys
|
||||
- add Net_SFTP::stat(), Net_SFTP::lstat() and Net_SFTP::rawlist()
|
||||
- logging was added to Net_SSH1
|
||||
- the license was changed to the less restrictive MIT license
|
@ -6,7 +6,7 @@ MIT-licensed pure-PHP implementations of an arbitrary-precision integer
|
||||
arithmetic library, fully PKCS#1 (v2.1) compliant RSA, DES, 3DES, RC4, Rijndael,
|
||||
AES, Blowfish, Twofish, SSH-1, SSH-2, SFTP, and X.509
|
||||
|
||||
* [Download (0.3.8)](http://sourceforge.net/projects/phpseclib/files/phpseclib0.3.8.zip/download)
|
||||
* [Download (0.3.9)](http://sourceforge.net/projects/phpseclib/files/phpseclib0.3.9.zip/download)
|
||||
* [Browse Git](https://github.com/phpseclib/phpseclib)
|
||||
* [Code Coverage Report](http://phpseclib.bantux.org/code_coverage/master/latest/)
|
||||
|
||||
|
@ -915,7 +915,7 @@ class Math_BigInteger
|
||||
$value = $x_value;
|
||||
}
|
||||
|
||||
$value[] = 0; // just in case the carry adds an extra digit
|
||||
$value[count($value)] = 0; // just in case the carry adds an extra digit
|
||||
|
||||
$carry = 0;
|
||||
for ($i = 0, $j = 1; $j < $size; $i+=2, $j+=2) {
|
||||
@ -2137,7 +2137,7 @@ class Math_BigInteger
|
||||
|
||||
if ($this->_compare($result, false, $temp[MATH_BIGINTEGER_VALUE], $temp[MATH_BIGINTEGER_SIGN]) < 0) {
|
||||
$corrector_value = $this->_array_repeat(0, $n_length + 1);
|
||||
$corrector_value[] = 1;
|
||||
$corrector_value[count($corrector_value)] = 1;
|
||||
$result = $this->_add($result, false, $corrector_value, false);
|
||||
$result = $result[MATH_BIGINTEGER_VALUE];
|
||||
}
|
||||
@ -3482,7 +3482,7 @@ class Math_BigInteger
|
||||
}
|
||||
|
||||
if ( $carry ) {
|
||||
$this->value[] = $carry;
|
||||
$this->value[count($this->value)] = $carry;
|
||||
}
|
||||
|
||||
while ($num_digits--) {
|
||||
|
@ -2473,14 +2473,13 @@ class Net_SFTP extends Net_SSH2
|
||||
foreach ($this->attributes as $key => $value) {
|
||||
switch ($flags & $key) {
|
||||
case NET_SFTP_ATTR_SIZE: // 0x00000001
|
||||
// size is represented by a 64-bit integer, so we perhaps ought to be doing the following:
|
||||
// $attr['size'] = new Math_BigInteger($this->_string_shift($response, 8), 256);
|
||||
// of course, you shouldn't be using Net_SFTP to transfer files that are in excess of 4GB
|
||||
// (0xFFFFFFFF bytes), anyway. as such, we'll just represent all file sizes that are bigger than
|
||||
// 4GB as being 4GB.
|
||||
extract(unpack('Nupper/Nsize', $this->_string_shift($response, 8)));
|
||||
$attr['size'] = $upper ? 4294967296 * $upper : 0;
|
||||
$attr['size']+= $size < 0 ? ($size & 0x7FFFFFFF) + 0x80000000 : $size;
|
||||
// The size attribute is defined as an unsigned 64-bit integer.
|
||||
// The following will use floats on 32-bit platforms, if necessary.
|
||||
// As can be seen in the BigInteger class, floats are generally
|
||||
// IEEE 754 binary64 "double precision" on such platforms and
|
||||
// as such can represent integers of at least 2^50 without loss
|
||||
// of precision. Interpreted in filesize, 2^50 bytes = 1024 TiB.
|
||||
$attr['size'] = hexdec(bin2hex($this->_string_shift($response, 8)));
|
||||
break;
|
||||
case NET_SFTP_ATTR_UIDGID: // 0x00000002 (SFTPv3 only)
|
||||
$attr+= unpack('Nuid/Ngid', $this->_string_shift($response, 8));
|
||||
|
@ -77,7 +77,7 @@ define('NET_SSH2_MASK_CONNECTED', 0x00000002);
|
||||
define('NET_SSH2_MASK_LOGIN_REQ', 0x00000004);
|
||||
define('NET_SSH2_MASK_LOGIN', 0x00000008);
|
||||
define('NET_SSH2_MASK_SHELL', 0x00000010);
|
||||
define('NET_SSH2_MASK_WINDOW_ADJUST', 0X00000020);
|
||||
define('NET_SSH2_MASK_WINDOW_ADJUST', 0x00000020);
|
||||
/**#@-*/
|
||||
|
||||
/**#@+
|
||||
@ -2296,7 +2296,7 @@ class Net_SSH2
|
||||
/**
|
||||
* Execute Command
|
||||
*
|
||||
* If $block is set to false then Net_SSH2::_get_channel_packet(NET_SSH2_CHANNEL_EXEC) will need to be called manually.
|
||||
* If $callback is set to false then Net_SSH2::_get_channel_packet(NET_SSH2_CHANNEL_EXEC) will need to be called manually.
|
||||
* In all likelihood, this is not a feature you want to be taking advantage of.
|
||||
*
|
||||
* @param String $command
|
||||
@ -3804,8 +3804,9 @@ class Net_SSH2
|
||||
$e = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
|
||||
$n = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$nLength = $temp['length'];
|
||||
$rawN = $this->_string_shift($server_public_host_key, $temp['length']);
|
||||
$n = new Math_BigInteger($rawN, -256);
|
||||
$nLength = strlen(ltrim($rawN, "\0"));
|
||||
|
||||
/*
|
||||
$temp = unpack('Nlength', $this->_string_shift($signature, 4));
|
||||
@ -3842,7 +3843,7 @@ class Net_SSH2
|
||||
$s = $s->toBytes();
|
||||
|
||||
$h = pack('N4H*', 0x00302130, 0x0906052B, 0x0E03021A, 0x05000414, sha1($this->exchange_hash));
|
||||
$h = chr(0x01) . str_repeat(chr(0xFF), $nLength - 3 - strlen($h)) . $h;
|
||||
$h = chr(0x01) . str_repeat(chr(0xFF), $nLength - 2 - strlen($h)) . $h;
|
||||
|
||||
if ($s != $h) {
|
||||
user_error('Bad server signature');
|
||||
|
@ -431,6 +431,20 @@ class Functional_Net_SFTPUserStoryTest extends PhpseclibFunctionalTestCase
|
||||
/**
|
||||
* @depends testFileExistsIsFileIsDirDir
|
||||
*/
|
||||
public function testTruncateLargeFile($sftp)
|
||||
{
|
||||
$filesize = (4 * 1024 + 16) * 1024 * 1024;
|
||||
$filename = 'file-large-from-truncate-4112MiB.txt';
|
||||
$this->assertTrue($sftp->touch($filename));
|
||||
$this->assertTrue($sftp->truncate($filename, $filesize));
|
||||
$this->assertSame($filesize, $sftp->size($filename));
|
||||
|
||||
return $sftp;
|
||||
}
|
||||
|
||||
/**
|
||||
* @depends testTruncateLargeFile
|
||||
*/
|
||||
public function testRmDirScratch($sftp)
|
||||
{
|
||||
$this->assertFalse(
|
||||
|
Loading…
Reference in New Issue
Block a user