mirror of
https://github.com/phpseclib/phpseclib.git
synced 2024-11-16 18:25:13 +00:00
Merge remote-tracking branch 'upstream/php5' into php5
This commit is contained in:
commit
c26594ba08
53
.gitignore
vendored
53
.gitignore
vendored
@ -1,51 +1,2 @@
|
||||
# Numerous always-ignore extensions
|
||||
*.diff
|
||||
*.err
|
||||
*.orig
|
||||
*.log
|
||||
*.rej
|
||||
*.swo
|
||||
*.swp
|
||||
*.vi
|
||||
*~
|
||||
*.sass-cache
|
||||
|
||||
# OS or Editor folders
|
||||
.DS_Store
|
||||
._*
|
||||
Thumbs.db
|
||||
.cache
|
||||
.project
|
||||
.settings
|
||||
.tmproj
|
||||
nbproject
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
|
||||
# Dreamweaver added files
|
||||
_notes
|
||||
dwsync.xml
|
||||
|
||||
# Komodo
|
||||
*.komodoproject
|
||||
.komodotools
|
||||
|
||||
# Espresso
|
||||
*.esproj
|
||||
*.espressostorage
|
||||
|
||||
# Rubinius
|
||||
*.rbc
|
||||
|
||||
# Folders to ignore
|
||||
.hg
|
||||
.svn
|
||||
.CVS
|
||||
intermediate
|
||||
publish
|
||||
.idea
|
||||
|
||||
# local files
|
||||
vendor
|
||||
composer.phar
|
||||
composer.lock
|
||||
/vendor
|
||||
/composer.phar
|
||||
|
@ -1,7 +1,6 @@
|
||||
language: php
|
||||
|
||||
php:
|
||||
- 5.2
|
||||
- 5.3.3
|
||||
- 5.3
|
||||
- 5.4
|
||||
@ -16,8 +15,10 @@ env:
|
||||
before_script:
|
||||
- git clone git://github.com/zenovich/runkit.git && cd runkit && phpize && ./configure && make && make install && cd ..
|
||||
- echo "extension=runkit.so" >> `php --ini | grep "Loaded Configuration" | sed -e "s|.*:\s*||"`
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' ]; then composer install --dev --no-interaction; fi"
|
||||
|
||||
script:
|
||||
- sh -c "if [ '$TRAVIS_PHP_VERSION' = '5.5' ]; then vendor/bin/phpcs -s --extensions=php --standard=tests/code_sniffer_ruleset.xml phpseclib/; fi"
|
||||
- phpunit --verbose --coverage-text --coverage-html code_coverage/
|
||||
|
||||
after_success:
|
||||
|
2
LICENSE
2
LICENSE
@ -1,4 +1,4 @@
|
||||
Copyright 2007-2012 TerraFrost and other contributors
|
||||
Copyright 2007-2013 TerraFrost and other contributors
|
||||
http://phpseclib.sourceforge.net/
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
|
@ -1,6 +1,6 @@
|
||||
# phpseclib - PHP Secure Communications Library
|
||||
|
||||
[![Build Status](https://secure.travis-ci.org/phpseclib/phpseclib.png?branch=master)](http://travis-ci.org/phpseclib/phpseclib)
|
||||
[![Build Status](https://secure.travis-ci.org/phpseclib/phpseclib.png?branch=php5)](http://travis-ci.org/phpseclib/phpseclib)
|
||||
|
||||
MIT-licensed pure-PHP implementations of an arbitrary-precision integer
|
||||
arithmetic library, fully PKCS#1 (v2.1) compliant RSA, DES, 3DES, RC4, Rijndael,
|
||||
@ -10,7 +10,7 @@ AES, Blowfish, Twofish, SSH-1, SSH-2, SFTP, and X.509
|
||||
* [Browse Git](https://github.com/phpseclib/phpseclib)
|
||||
* [Documentation](http://phpseclib.sourceforge.net/)
|
||||
* [Support](http://www.frostjedi.com/phpbb/viewforum.php?f=46)
|
||||
* [Code Coverage Report](http://phpseclib.bantux.org/code_coverage/latest/)
|
||||
* [Code Coverage Report](http://phpseclib.bantux.org/code_coverage/php5/latest/)
|
||||
|
||||
<img src="http://phpseclib.sourceforge.net/pear-icon.png" alt="PEAR Channel" width="16" height="16">
|
||||
PEAR Channel: [phpseclib.sourceforge.net](http://phpseclib.sourceforge.net/pear.htm)
|
||||
|
@ -11,6 +11,8 @@
|
||||
"signing",
|
||||
"rsa",
|
||||
"aes",
|
||||
"blowfish",
|
||||
"twofish",
|
||||
"ssh",
|
||||
"sftp",
|
||||
"x509",
|
||||
@ -25,16 +27,33 @@
|
||||
{
|
||||
"name": "Jim Wigginton",
|
||||
"email": "terrafrost@php.net",
|
||||
"role": "Lead Developer"
|
||||
},
|
||||
{
|
||||
"name": "Patrick Monnerat",
|
||||
"email": "pm@datasphere.ch",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Andreas Fischer",
|
||||
"email": "bantu@phpbb.com",
|
||||
"role": "Developer"
|
||||
},
|
||||
{
|
||||
"name": "Hans-Jürgen Petrich",
|
||||
"email": "petrich@tronic-media.com",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"require": {
|
||||
"php": ">=5.0.0"
|
||||
"php": ">=5.3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"squizlabs/php_codesniffer": "1.*"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-mcrypt": "Install the Mcrypt extension in order to speed up a wide variety of cryptographic operations.",
|
||||
"ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations.",
|
||||
"pear-pear/PHP_Compat": "Install PHP_Compat to get phpseclib working on PHP >= 4.3.3."
|
||||
"ext-gmp": "Install the GMP (GNU Multiple Precision) extension in order to speed up arbitrary precision integer arithmetic operations."
|
||||
},
|
||||
"include-path": ["phpseclib/"],
|
||||
"autoload": {
|
||||
|
96
composer.lock
generated
Normal file
96
composer.lock
generated
Normal file
@ -0,0 +1,96 @@
|
||||
{
|
||||
"_readme": [
|
||||
"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"
|
||||
],
|
||||
"hash": "e692359d277b10176319a11c2aef51aa",
|
||||
"packages": [
|
||||
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "squizlabs/php_codesniffer",
|
||||
"version": "1.4.7",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/squizlabs/PHP_CodeSniffer.git",
|
||||
"reference": "df764a1604607ea61c4eeea5410666e27cb37a8b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/df764a1604607ea61c4eeea5410666e27cb37a8b",
|
||||
"reference": "df764a1604607ea61c4eeea5410666e27cb37a8b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"ext-tokenizer": "*",
|
||||
"php": ">=5.1.2"
|
||||
},
|
||||
"suggest": {
|
||||
"phpunit/php-timer": "dev-master"
|
||||
},
|
||||
"bin": [
|
||||
"scripts/phpcs"
|
||||
],
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"classmap": [
|
||||
"CodeSniffer.php",
|
||||
"CodeSniffer/CLI.php",
|
||||
"CodeSniffer/Exception.php",
|
||||
"CodeSniffer/File.php",
|
||||
"CodeSniffer/MultiFileSniff.php",
|
||||
"CodeSniffer/Report.php",
|
||||
"CodeSniffer/Reporting.php",
|
||||
"CodeSniffer/Sniff.php",
|
||||
"CodeSniffer/Tokens.php",
|
||||
"CodeSniffer/Reports/",
|
||||
"CodeSniffer/CommentParser/",
|
||||
"CodeSniffer/Tokenizers/",
|
||||
"CodeSniffer/DocGenerators/",
|
||||
"CodeSniffer/Standards/AbstractPatternSniff.php",
|
||||
"CodeSniffer/Standards/AbstractScopeSniff.php",
|
||||
"CodeSniffer/Standards/AbstractVariableSniff.php",
|
||||
"CodeSniffer/Standards/IncorrectPatternException.php",
|
||||
"CodeSniffer/Standards/Generic/Sniffs/",
|
||||
"CodeSniffer/Standards/MySource/Sniffs/",
|
||||
"CodeSniffer/Standards/PEAR/Sniffs/",
|
||||
"CodeSniffer/Standards/PSR1/Sniffs/",
|
||||
"CodeSniffer/Standards/PSR2/Sniffs/",
|
||||
"CodeSniffer/Standards/Squiz/Sniffs/",
|
||||
"CodeSniffer/Standards/Zend/Sniffs/"
|
||||
]
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-3-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Greg Sherwood",
|
||||
"role": "lead"
|
||||
}
|
||||
],
|
||||
"description": "PHP_CodeSniffer tokenises PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.",
|
||||
"homepage": "http://www.squizlabs.com/php-codesniffer",
|
||||
"keywords": [
|
||||
"phpcs",
|
||||
"standards"
|
||||
],
|
||||
"time": "2013-09-26 00:08:21"
|
||||
}
|
||||
],
|
||||
"aliases": [
|
||||
|
||||
],
|
||||
"minimum-stability": "stable",
|
||||
"stability-flags": [
|
||||
|
||||
],
|
||||
"platform": {
|
||||
"php": ">=5.0.0"
|
||||
},
|
||||
"platform-dev": [
|
||||
|
||||
]
|
||||
}
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of AES.
|
||||
@ -54,19 +53,19 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_AES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVIII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_AES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVIII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include Crypt_Rijndael
|
||||
*/
|
||||
if (!class_exists('Crypt_Rijndael')) {
|
||||
require_once('Rijndael.php');
|
||||
include_once 'Rijndael.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -125,12 +124,13 @@ define('CRYPT_AES_MODE_MCRYPT', CRYPT_MODE_MCRYPT);
|
||||
/**
|
||||
* Pure-PHP implementation of AES.
|
||||
*
|
||||
* @package Crypt_AES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Crypt_AES
|
||||
*/
|
||||
class Crypt_AES extends Crypt_Rijndael {
|
||||
class Crypt_AES extends Crypt_Rijndael
|
||||
{
|
||||
/**
|
||||
* The namespace used by the cipher for its constants.
|
||||
*
|
||||
@ -184,5 +184,3 @@ class Crypt_AES extends Crypt_Rijndael {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Base Class for all Crypt_* cipher classes
|
||||
@ -44,14 +43,14 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_Base
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 1.0.1
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_Base
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 1.0.1
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**#@+
|
||||
@ -115,13 +114,14 @@ define('CRYPT_MODE_MCRYPT', 2);
|
||||
/**
|
||||
* Base Class for all Crypt_* cipher classes
|
||||
*
|
||||
* @package Crypt_Base
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @version 1.0.0
|
||||
* @access public
|
||||
* @package Crypt_Base
|
||||
*/
|
||||
class Crypt_Base {
|
||||
class Crypt_Base
|
||||
{
|
||||
/**
|
||||
* The Encryption Mode
|
||||
*
|
||||
@ -582,7 +582,7 @@ class Crypt_Base {
|
||||
case !function_exists('hash_algos'):
|
||||
case !in_array($hash, hash_algos()):
|
||||
if (!class_exists('Crypt_Hash')) {
|
||||
require_once('Crypt/Hash.php');
|
||||
include_once 'Crypt/Hash.php';
|
||||
}
|
||||
$i = 1;
|
||||
while (strlen($key) < $dkLen) {
|
||||
@ -1985,5 +1985,3 @@ class Crypt_Base {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of Blowfish.
|
||||
@ -45,14 +44,14 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_Blowfish
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 1.0
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_Blowfish
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 1.0
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -61,7 +60,7 @@
|
||||
* Base cipher class
|
||||
*/
|
||||
if (!class_exists('Crypt_Base')) {
|
||||
require_once('Base.php');
|
||||
include_once 'Base.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -120,13 +119,14 @@ define('CRYPT_BLOWFISH_MODE_MCRYPT', CRYPT_MODE_MCRYPT);
|
||||
/**
|
||||
* Pure-PHP implementation of Blowfish.
|
||||
*
|
||||
* @package Crypt_Blowfish
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @version 1.0
|
||||
* @access public
|
||||
* @package Crypt_Blowfish
|
||||
*/
|
||||
class Crypt_Blowfish extends Crypt_Base {
|
||||
class Crypt_Blowfish extends Crypt_Base
|
||||
{
|
||||
/**
|
||||
* Block Length of the cipher
|
||||
*
|
||||
@ -418,8 +418,7 @@ class Crypt_Blowfish extends Crypt_Base {
|
||||
|
||||
if (!$keylength) {
|
||||
$key = "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0";
|
||||
}
|
||||
elseif ($keylength > 56) {
|
||||
} elseif ($keylength > 56) {
|
||||
$key = substr($key, 0, 56);
|
||||
}
|
||||
|
||||
@ -674,5 +673,3 @@ class Crypt_Blowfish extends Crypt_Base {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of DES.
|
||||
@ -51,12 +50,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_DES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_DES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -65,7 +64,7 @@
|
||||
* Base cipher class
|
||||
*/
|
||||
if (!class_exists('Crypt_Base')) {
|
||||
require_once('Base.php');
|
||||
include_once 'Base.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -139,12 +138,13 @@ define('CRYPT_DES_MODE_MCRYPT', CRYPT_MODE_MCRYPT);
|
||||
/**
|
||||
* Pure-PHP implementation of DES.
|
||||
*
|
||||
* @package Crypt_DES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Crypt_DES
|
||||
*/
|
||||
class Crypt_DES extends Crypt_Base {
|
||||
class Crypt_DES extends Crypt_Base
|
||||
{
|
||||
/**
|
||||
* Block Length of the cipher
|
||||
*
|
||||
@ -1336,12 +1336,14 @@ class Crypt_DES extends Crypt_Base {
|
||||
$pc2mapd3[($d >> 8) & 0xFF] | $pc2mapd4[ $d & 0xFF];
|
||||
|
||||
// Reorder: odd bytes/even bytes. Push the result in key schedule.
|
||||
$keys[$des_round][CRYPT_DES_ENCRYPT][ ] =
|
||||
$keys[$des_round][CRYPT_DES_DECRYPT][$ki - 1] = ( $cp & 0xFF000000) | (($cp << 8) & 0x00FF0000) |
|
||||
(($dp >> 16) & 0x0000FF00) | (($dp >> 8) & 0x000000FF);
|
||||
$keys[$des_round][CRYPT_DES_ENCRYPT][ ] =
|
||||
$keys[$des_round][CRYPT_DES_DECRYPT][$ki ] = (($cp << 8) & 0xFF000000) | (($cp << 16) & 0x00FF0000) |
|
||||
(($dp >> 8) & 0x0000FF00) | ( $dp & 0x000000FF);
|
||||
$val1 = ( $cp & 0xFF000000) | (($cp << 8) & 0x00FF0000) |
|
||||
(($dp >> 16) & 0x0000FF00) | (($dp >> 8) & 0x000000FF);
|
||||
$val2 = (($cp << 8) & 0xFF000000) | (($cp << 16) & 0x00FF0000) |
|
||||
(($dp >> 8) & 0x0000FF00) | ( $dp & 0x000000FF);
|
||||
$keys[$des_round][CRYPT_DES_ENCRYPT][ ] = $val1;
|
||||
$keys[$des_round][CRYPT_DES_DECRYPT][$ki - 1] = $val1;
|
||||
$keys[$des_round][CRYPT_DES_ENCRYPT][ ] = $val2;
|
||||
$keys[$des_round][CRYPT_DES_DECRYPT][$ki ] = $val2;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1532,5 +1534,3 @@ class Crypt_DES extends Crypt_Base {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions.
|
||||
@ -47,12 +46,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_Hash
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_Hash
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**#@+
|
||||
@ -76,12 +75,13 @@ define('CRYPT_HASH_MODE_HASH', 3);
|
||||
/**
|
||||
* Pure-PHP implementations of keyed-hash message authentication codes (HMACs) and various cryptographic hashing functions.
|
||||
*
|
||||
* @package Crypt_Hash
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Crypt_Hash
|
||||
*/
|
||||
class Crypt_Hash {
|
||||
class Crypt_Hash
|
||||
{
|
||||
/**
|
||||
* Hash Parameter
|
||||
*
|
||||
@ -581,7 +581,7 @@ class Crypt_Hash {
|
||||
function _sha512($m)
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
require_once('Math/BigInteger.php');
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
static $init384, $init512, $k;
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of RC2.
|
||||
@ -45,11 +44,11 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_RC2
|
||||
* @author Patrick Monnerat <pm@datasphere.ch>
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_RC2
|
||||
* @author Patrick Monnerat <pm@datasphere.ch>
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -58,7 +57,7 @@
|
||||
* Base cipher class
|
||||
*/
|
||||
if (!class_exists('Crypt_Base')) {
|
||||
require_once('Base.php');
|
||||
include_once 'Base.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -117,11 +116,12 @@ define('CRYPT_RC2_MODE_MCRYPT', CRYPT_MODE_MCRYPT);
|
||||
/**
|
||||
* Pure-PHP implementation of RC2.
|
||||
*
|
||||
* @package Crypt_RC2
|
||||
* @version 0.1.1
|
||||
* @access public
|
||||
* @package Crypt_RC2
|
||||
*/
|
||||
class Crypt_RC2 extends Crypt_Base {
|
||||
class Crypt_RC2 extends Crypt_Base
|
||||
{
|
||||
/**
|
||||
* Block Length of the cipher
|
||||
*
|
||||
@ -652,5 +652,3 @@ class Crypt_RC2 extends Crypt_Base {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of RC4.
|
||||
@ -53,12 +52,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_RC4
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_RC4
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -67,7 +66,7 @@
|
||||
* Base cipher class
|
||||
*/
|
||||
if (!class_exists('Crypt_Base')) {
|
||||
require_once('Base.php');
|
||||
include_once 'Base.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -95,12 +94,13 @@ define('CRYPT_RC4_DECRYPT', 1);
|
||||
/**
|
||||
* Pure-PHP implementation of RC4.
|
||||
*
|
||||
* @package Crypt_RC4
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Crypt_RC4
|
||||
*/
|
||||
class Crypt_RC4 extends Crypt_Base {
|
||||
class Crypt_RC4 extends Crypt_Base
|
||||
{
|
||||
/**
|
||||
* Block Length of the cipher
|
||||
*
|
||||
@ -333,5 +333,3 @@ class Crypt_RC4 extends Crypt_Base {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP PKCS#1 (v2.1) compliant implementation of RSA.
|
||||
@ -60,12 +59,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_RSA
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMIX Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_RSA
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMIX Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -73,17 +72,17 @@
|
||||
*/
|
||||
// the class_exists() will only be called if the crypt_random_string function hasn't been defined and
|
||||
// will trigger a call to __autoload() if you're wanting to auto-load classes
|
||||
// call function_exists() a second time to stop the require_once from being called outside
|
||||
// call function_exists() a second time to stop the include_once from being called outside
|
||||
// of the auto loader
|
||||
if (!function_exists('crypt_random_string')) {
|
||||
require_once('Random.php');
|
||||
include_once 'Random.php';
|
||||
}
|
||||
|
||||
/**
|
||||
* Include Crypt_Hash
|
||||
*/
|
||||
if (!class_exists('Crypt_Hash')) {
|
||||
require_once('Hash.php');
|
||||
include_once 'Hash.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -240,12 +239,13 @@ define('CRYPT_RSA_PUBLIC_FORMAT_PKCS1', 7);
|
||||
/**
|
||||
* Pure-PHP PKCS#1 compliant implementation of RSA.
|
||||
*
|
||||
* @package Crypt_RSA
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Crypt_RSA
|
||||
*/
|
||||
class Crypt_RSA {
|
||||
class Crypt_RSA
|
||||
{
|
||||
/**
|
||||
* Precomputed Zero
|
||||
*
|
||||
@ -433,7 +433,7 @@ class Crypt_RSA {
|
||||
/**
|
||||
* OpenSSL configuration file name.
|
||||
*
|
||||
* Set to NULL to use system configuration file.
|
||||
* Set to null to use system configuration file.
|
||||
* @see Crypt_RSA::createKey()
|
||||
* @var Mixed
|
||||
* @Access public
|
||||
@ -461,7 +461,7 @@ class Crypt_RSA {
|
||||
function Crypt_RSA()
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
require_once('Math/BigInteger.php');
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
$this->configFile = CRYPT_RSA_OPENSSL_CONFIG;
|
||||
@ -555,7 +555,7 @@ class Crypt_RSA {
|
||||
$config['config'] = $this->configFile;
|
||||
}
|
||||
$rsa = openssl_pkey_new(array('private_key_bits' => $bits) + $config);
|
||||
openssl_pkey_export($rsa, $privatekey, NULL, $config);
|
||||
openssl_pkey_export($rsa, $privatekey, null, $config);
|
||||
$publickey = openssl_pkey_get_details($rsa);
|
||||
$publickey = $publickey['key'];
|
||||
|
||||
@ -773,7 +773,7 @@ class Crypt_RSA {
|
||||
$private.= crypt_random_string(16 - (strlen($private) & 15));
|
||||
$source.= pack('Na*', strlen($private), $private);
|
||||
if (!class_exists('Crypt_AES')) {
|
||||
require_once('Crypt/AES.php');
|
||||
include_once 'Crypt/AES.php';
|
||||
}
|
||||
$sequence = 0;
|
||||
$symkey = '';
|
||||
@ -794,7 +794,7 @@ class Crypt_RSA {
|
||||
$key.= 'Private-Lines: ' . ((strlen($private) + 63) >> 6) . "\r\n";
|
||||
$key.= chunk_split($private, 64);
|
||||
if (!class_exists('Crypt_Hash')) {
|
||||
require_once('Crypt/Hash.php');
|
||||
include_once 'Crypt/Hash.php';
|
||||
}
|
||||
$hash = new Crypt_Hash('sha1');
|
||||
$hash->setKey(pack('H*', sha1($hashkey)));
|
||||
@ -834,7 +834,7 @@ class Crypt_RSA {
|
||||
$symkey = pack('H*', md5($this->password . $iv)); // symkey is short for symmetric key
|
||||
$symkey.= substr(pack('H*', md5($symkey . $this->password . $iv)), 0, 8);
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$des = new Crypt_TripleDES();
|
||||
$des->setKey($symkey);
|
||||
@ -1000,33 +1000,33 @@ class Crypt_RSA {
|
||||
switch ($matches[1]) {
|
||||
case 'AES-256-CBC':
|
||||
if (!class_exists('Crypt_AES')) {
|
||||
require_once('Crypt/AES.php');
|
||||
include_once 'Crypt/AES.php';
|
||||
}
|
||||
$crypto = new Crypt_AES();
|
||||
break;
|
||||
case 'AES-128-CBC':
|
||||
if (!class_exists('Crypt_AES')) {
|
||||
require_once('Crypt/AES.php');
|
||||
include_once 'Crypt/AES.php';
|
||||
}
|
||||
$symkey = substr($symkey, 0, 16);
|
||||
$crypto = new Crypt_AES();
|
||||
break;
|
||||
case 'DES-EDE3-CFB':
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$crypto = new Crypt_TripleDES(CRYPT_DES_MODE_CFB);
|
||||
break;
|
||||
case 'DES-EDE3-CBC':
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$symkey = substr($symkey, 0, 24);
|
||||
$crypto = new Crypt_TripleDES();
|
||||
break;
|
||||
case 'DES-CBC':
|
||||
if (!class_exists('Crypt_DES')) {
|
||||
require_once('Crypt/DES.php');
|
||||
include_once 'Crypt/DES.php';
|
||||
}
|
||||
$crypto = new Crypt_DES();
|
||||
break;
|
||||
@ -1240,7 +1240,7 @@ class Crypt_RSA {
|
||||
switch ($encryption) {
|
||||
case 'aes256-cbc':
|
||||
if (!class_exists('Crypt_AES')) {
|
||||
require_once('Crypt/AES.php');
|
||||
include_once 'Crypt/AES.php';
|
||||
}
|
||||
$symkey = '';
|
||||
$sequence = 0;
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Random Number Generator
|
||||
@ -33,12 +32,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_Random
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_Random
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of Rijndael.
|
||||
@ -63,12 +62,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_Rijndael
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVIII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_Rijndael
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVIII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -77,7 +76,7 @@
|
||||
* Base cipher class
|
||||
*/
|
||||
if (!class_exists('Crypt_Base')) {
|
||||
require_once('Base.php');
|
||||
include_once 'Base.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -136,12 +135,13 @@ define('CRYPT_RIJNDAEL_MODE_MCRYPT', CRYPT_MODE_MCRYPT);
|
||||
/**
|
||||
* Pure-PHP implementation of Rijndael.
|
||||
*
|
||||
* @package Crypt_Rijndael
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Crypt_Rijndael
|
||||
*/
|
||||
class Crypt_Rijndael extends Crypt_Base {
|
||||
class Crypt_Rijndael extends Crypt_Base
|
||||
{
|
||||
/**
|
||||
* The default password key_size used by setPassword()
|
||||
*
|
||||
@ -1370,5 +1370,3 @@ class Crypt_Rijndael extends Crypt_Base {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of Triple DES.
|
||||
@ -45,19 +44,19 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_TripleDES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_TripleDES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include Crypt_DES
|
||||
*/
|
||||
if (!class_exists('Crypt_DES')) {
|
||||
require_once('DES.php');
|
||||
include_once 'DES.php';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -77,12 +76,13 @@ define('CRYPT_DES_MODE_CBC3', CRYPT_DES_MODE_CBC);
|
||||
/**
|
||||
* Pure-PHP implementation of Triple DES.
|
||||
*
|
||||
* @package Crypt_TripleDES
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Crypt_TripleDES
|
||||
*/
|
||||
class Crypt_TripleDES extends Crypt_DES {
|
||||
class Crypt_TripleDES extends Crypt_DES
|
||||
{
|
||||
/**
|
||||
* The default password key_size used by setPassword()
|
||||
*
|
||||
@ -418,5 +418,3 @@ class Crypt_TripleDES extends Crypt_DES {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of Twofish.
|
||||
@ -45,14 +44,14 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Crypt
|
||||
* @package Crypt_Twofish
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 1.0
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Crypt
|
||||
* @package Crypt_Twofish
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @version 1.0
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -61,7 +60,7 @@
|
||||
* Base cipher class
|
||||
*/
|
||||
if (!class_exists('Crypt_Base')) {
|
||||
require_once('Base.php');
|
||||
include_once 'Base.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -120,13 +119,14 @@ define('CRYPT_TWOFISH_MODE_MCRYPT', CRYPT_MODE_MCRYPT);
|
||||
/**
|
||||
* Pure-PHP implementation of Twofish.
|
||||
*
|
||||
* @package Crypt_Twofish
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @author Hans-Juergen Petrich <petrich@tronic-media.com>
|
||||
* @version 1.0
|
||||
* @access public
|
||||
* @package Crypt_Twofish
|
||||
*/
|
||||
class Crypt_Twofish extends Crypt_Base {
|
||||
class Crypt_Twofish extends Crypt_Base
|
||||
{
|
||||
/**
|
||||
* The namespace used by the cipher for its constants.
|
||||
*
|
||||
@ -920,5 +920,3 @@ class Crypt_Twofish extends Crypt_Base {
|
||||
}
|
||||
}
|
||||
|
||||
// vim: ts=4:sw=4:et:
|
||||
// vim6: fdl=1:
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP ANSI Decoder
|
||||
@ -29,23 +28,24 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category File
|
||||
* @package File_ANSI
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category File
|
||||
* @package File_ANSI
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
* Pure-PHP ANSI Decoder
|
||||
*
|
||||
* @package File_ANSI
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.3.0
|
||||
* @access public
|
||||
* @package File_ANSI
|
||||
*/
|
||||
class File_ANSI {
|
||||
class File_ANSI
|
||||
{
|
||||
/**
|
||||
* Max Width
|
||||
*
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP ASN.1 Parser
|
||||
@ -32,12 +31,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category File
|
||||
* @package File_ASN1
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category File
|
||||
* @package File_ASN1
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**#@+
|
||||
@ -58,21 +57,21 @@ define('FILE_ASN1_CLASS_PRIVATE', 3);
|
||||
* @access private
|
||||
* @link http://www.obj-sys.com/asn1tutorial/node124.html
|
||||
*/
|
||||
define('FILE_ASN1_TYPE_BOOLEAN', 1);
|
||||
define('FILE_ASN1_TYPE_INTEGER', 2);
|
||||
define('FILE_ASN1_TYPE_BIT_STRING', 3);
|
||||
define('FILE_ASN1_TYPE_OCTET_STRING', 4);
|
||||
define('FILE_ASN1_TYPE_NULL', 5);
|
||||
define('FILE_ASN1_TYPE_OBJECT_IDENTIFIER',6);
|
||||
//define('FILE_ASN1_TYPE_OBJECT_DESCRIPTOR',7);
|
||||
//define('FILE_ASN1_TYPE_INSTANCE_OF', 8); // EXTERNAL
|
||||
define('FILE_ASN1_TYPE_REAL', 9);
|
||||
define('FILE_ASN1_TYPE_ENUMERATED', 10);
|
||||
//define('FILE_ASN1_TYPE_EMBEDDED', 11);
|
||||
define('FILE_ASN1_TYPE_UTF8_STRING', 12);
|
||||
//define('FILE_ASN1_TYPE_RELATIVE_OID', 13);
|
||||
define('FILE_ASN1_TYPE_SEQUENCE', 16); // SEQUENCE OF
|
||||
define('FILE_ASN1_TYPE_SET', 17); // SET OF
|
||||
define('FILE_ASN1_TYPE_BOOLEAN', 1);
|
||||
define('FILE_ASN1_TYPE_INTEGER', 2);
|
||||
define('FILE_ASN1_TYPE_BIT_STRING', 3);
|
||||
define('FILE_ASN1_TYPE_OCTET_STRING', 4);
|
||||
define('FILE_ASN1_TYPE_NULL', 5);
|
||||
define('FILE_ASN1_TYPE_OBJECT_IDENTIFIER', 6);
|
||||
//define('FILE_ASN1_TYPE_OBJECT_DESCRIPTOR', 7);
|
||||
//define('FILE_ASN1_TYPE_INSTANCE_OF', 8); // EXTERNAL
|
||||
define('FILE_ASN1_TYPE_REAL', 9);
|
||||
define('FILE_ASN1_TYPE_ENUMERATED', 10);
|
||||
//define('FILE_ASN1_TYPE_EMBEDDED', 11);
|
||||
define('FILE_ASN1_TYPE_UTF8_STRING', 12);
|
||||
//define('FILE_ASN1_TYPE_RELATIVE_OID', 13);
|
||||
define('FILE_ASN1_TYPE_SEQUENCE', 16); // SEQUENCE OF
|
||||
define('FILE_ASN1_TYPE_SET', 17); // SET OF
|
||||
/**#@-*/
|
||||
/**#@+
|
||||
* More Tag Classes
|
||||
@ -80,19 +79,19 @@ define('FILE_ASN1_TYPE_SET', 17); // SET OF
|
||||
* @access private
|
||||
* @link http://www.obj-sys.com/asn1tutorial/node10.html
|
||||
*/
|
||||
define('FILE_ASN1_TYPE_NUMERIC_STRING', 18);
|
||||
define('FILE_ASN1_TYPE_PRINTABLE_STRING',19);
|
||||
define('FILE_ASN1_TYPE_TELETEX_STRING', 20); // T61String
|
||||
define('FILE_ASN1_TYPE_VIDEOTEX_STRING', 21);
|
||||
define('FILE_ASN1_TYPE_IA5_STRING', 22);
|
||||
define('FILE_ASN1_TYPE_UTC_TIME', 23);
|
||||
define('FILE_ASN1_TYPE_GENERALIZED_TIME',24);
|
||||
define('FILE_ASN1_TYPE_GRAPHIC_STRING', 25);
|
||||
define('FILE_ASN1_TYPE_VISIBLE_STRING', 26); // ISO646String
|
||||
define('FILE_ASN1_TYPE_GENERAL_STRING', 27);
|
||||
define('FILE_ASN1_TYPE_UNIVERSAL_STRING',28);
|
||||
//define('FILE_ASN1_TYPE_CHARACTER_STRING',29);
|
||||
define('FILE_ASN1_TYPE_BMP_STRING', 30);
|
||||
define('FILE_ASN1_TYPE_NUMERIC_STRING', 18);
|
||||
define('FILE_ASN1_TYPE_PRINTABLE_STRING', 19);
|
||||
define('FILE_ASN1_TYPE_TELETEX_STRING', 20); // T61String
|
||||
define('FILE_ASN1_TYPE_VIDEOTEX_STRING', 21);
|
||||
define('FILE_ASN1_TYPE_IA5_STRING', 22);
|
||||
define('FILE_ASN1_TYPE_UTC_TIME', 23);
|
||||
define('FILE_ASN1_TYPE_GENERALIZED_TIME', 24);
|
||||
define('FILE_ASN1_TYPE_GRAPHIC_STRING', 25);
|
||||
define('FILE_ASN1_TYPE_VISIBLE_STRING', 26); // ISO646String
|
||||
define('FILE_ASN1_TYPE_GENERAL_STRING', 27);
|
||||
define('FILE_ASN1_TYPE_UNIVERSAL_STRING', 28);
|
||||
//define('FILE_ASN1_TYPE_CHARACTER_STRING', 29);
|
||||
define('FILE_ASN1_TYPE_BMP_STRING', 30);
|
||||
/**#@-*/
|
||||
|
||||
/**#@+
|
||||
@ -111,12 +110,13 @@ define('FILE_ASN1_TYPE_ANY', -2);
|
||||
*
|
||||
* Bypass normal encoding rules in File_ASN1::encodeDER()
|
||||
*
|
||||
* @package File_ASN1
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.3.0
|
||||
* @access public
|
||||
* @package File_ASN1
|
||||
*/
|
||||
class File_ASN1_Element {
|
||||
class File_ASN1_Element
|
||||
{
|
||||
/**
|
||||
* Raw element value
|
||||
*
|
||||
@ -141,12 +141,13 @@ class File_ASN1_Element {
|
||||
/**
|
||||
* Pure-PHP ASN.1 Parser
|
||||
*
|
||||
* @package File_ASN1
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.3.0
|
||||
* @access public
|
||||
* @package File_ASN1
|
||||
*/
|
||||
class File_ASN1 {
|
||||
class File_ASN1
|
||||
{
|
||||
/**
|
||||
* ASN.1 object identifier
|
||||
*
|
||||
@ -252,7 +253,7 @@ class File_ASN1 {
|
||||
if (!$static_init) {
|
||||
$static_init = true;
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
require_once('Math/BigInteger.php');
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -545,13 +546,13 @@ class File_ASN1 {
|
||||
return array($key => $value);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
return null;
|
||||
case isset($mapping['implicit']):
|
||||
case isset($mapping['explicit']):
|
||||
case $decoded['type'] == $mapping['type']:
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
|
||||
if (isset($mapping['implicit'])) {
|
||||
@ -566,8 +567,8 @@ class File_ASN1 {
|
||||
if (isset($mapping['min']) && isset($mapping['max'])) {
|
||||
$child = $mapping['children'];
|
||||
foreach ($decoded['content'] as $content) {
|
||||
if (($map[] = $this->asn1map($content, $child, $special)) === NULL) {
|
||||
return NULL;
|
||||
if (($map[] = $this->asn1map($content, $child, $special)) === null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -585,15 +586,14 @@ class File_ASN1 {
|
||||
if ($child['type'] != FILE_ASN1_TYPE_CHOICE) {
|
||||
// Get the mapping and input class & constant.
|
||||
$childClass = $tempClass = FILE_ASN1_CLASS_UNIVERSAL;
|
||||
$constant = NULL;
|
||||
$constant = null;
|
||||
if (isset($temp['constant'])) {
|
||||
$tempClass = isset($temp['class']) ? $temp['class'] : FILE_ASN1_CLASS_CONTEXT_SPECIFIC;
|
||||
}
|
||||
if (isset($child['class'])) {
|
||||
$childClass = $child['class'];
|
||||
$constant = $child['cast'];
|
||||
}
|
||||
elseif (isset($child['constant'])) {
|
||||
} elseif (isset($child['constant'])) {
|
||||
$childClass = FILE_ASN1_CLASS_CONTEXT_SPECIFIC;
|
||||
$constant = $child['constant'];
|
||||
}
|
||||
@ -611,7 +611,7 @@ class File_ASN1 {
|
||||
if ($maymatch) {
|
||||
// Attempt submapping.
|
||||
$candidate = $this->asn1map($temp, $child, $special);
|
||||
$maymatch = $candidate !== NULL;
|
||||
$maymatch = $candidate !== null;
|
||||
}
|
||||
|
||||
if ($maymatch) {
|
||||
@ -624,12 +624,12 @@ class File_ASN1 {
|
||||
} elseif (isset($child['default'])) {
|
||||
$map[$key] = $child['default']; // Use default.
|
||||
} elseif (!isset($child['optional'])) {
|
||||
return NULL; // Syntax error.
|
||||
return null; // Syntax error.
|
||||
}
|
||||
}
|
||||
|
||||
// Fail mapping if all input items have not been consumed.
|
||||
return $i < $n? NULL: $map;
|
||||
return $i < $n? null: $map;
|
||||
|
||||
// the main diff between sets and sequences is the encapsulation of the foreach in another for loop
|
||||
case FILE_ASN1_TYPE_SET:
|
||||
@ -639,8 +639,8 @@ class File_ASN1 {
|
||||
if (isset($mapping['min']) && isset($mapping['max'])) {
|
||||
$child = $mapping['children'];
|
||||
foreach ($decoded['content'] as $content) {
|
||||
if (($map[] = $this->asn1map($content, $child, $special)) === NULL) {
|
||||
return NULL;
|
||||
if (($map[] = $this->asn1map($content, $child, $special)) === null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@ -661,12 +661,11 @@ class File_ASN1 {
|
||||
$maymatch = true;
|
||||
if ($child['type'] != FILE_ASN1_TYPE_CHOICE) {
|
||||
$childClass = FILE_ASN1_CLASS_UNIVERSAL;
|
||||
$constant = NULL;
|
||||
$constant = null;
|
||||
if (isset($child['class'])) {
|
||||
$childClass = $child['class'];
|
||||
$constant = $child['cast'];
|
||||
}
|
||||
elseif (isset($child['constant'])) {
|
||||
} elseif (isset($child['constant'])) {
|
||||
$childClass = FILE_ASN1_CLASS_CONTEXT_SPECIFIC;
|
||||
$constant = $child['constant'];
|
||||
}
|
||||
@ -683,7 +682,7 @@ class File_ASN1 {
|
||||
if ($maymatch) {
|
||||
// Attempt submapping.
|
||||
$candidate = $this->asn1map($temp, $child, $special);
|
||||
$maymatch = $candidate !== NULL;
|
||||
$maymatch = $candidate !== null;
|
||||
}
|
||||
|
||||
if (!$maymatch) {
|
||||
@ -704,7 +703,7 @@ class File_ASN1 {
|
||||
if (isset($child['default'])) {
|
||||
$map[$key] = $child['default'];
|
||||
} elseif (!isset($child['optional'])) {
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -797,7 +796,7 @@ class File_ASN1 {
|
||||
function encodeDER($source, $mapping, $special = array())
|
||||
{
|
||||
$this->location = array();
|
||||
return $this->_encode_der($source, $mapping, NULL, $special);
|
||||
return $this->_encode_der($source, $mapping, null, $special);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -819,7 +818,7 @@ class File_ASN1 {
|
||||
* @return String
|
||||
* @access private
|
||||
*/
|
||||
function _encode_der($source, $mapping, $idx = NULL, $special = array())
|
||||
function _encode_der($source, $mapping, $idx = null, $special = array())
|
||||
{
|
||||
if (is_object($source) && strtolower(get_class($source)) == 'file_asn1_element') {
|
||||
return $source->element;
|
||||
@ -850,7 +849,7 @@ class File_ASN1 {
|
||||
$child = $mapping['children'];
|
||||
|
||||
foreach ($source as $content) {
|
||||
$temp = $this->_encode_der($content, $child, NULL, $special);
|
||||
$temp = $this->_encode_der($content, $child, null, $special);
|
||||
if ($temp === false) {
|
||||
return false;
|
||||
}
|
||||
@ -1030,19 +1029,19 @@ class File_ASN1 {
|
||||
|
||||
switch (true) {
|
||||
case !isset($source):
|
||||
return $this->_encode_der(NULL, array('type' => FILE_ASN1_TYPE_NULL) + $mapping, NULL, $special);
|
||||
return $this->_encode_der(null, array('type' => FILE_ASN1_TYPE_NULL) + $mapping, null, $special);
|
||||
case is_int($source):
|
||||
case is_object($source) && strtolower(get_class($source)) == 'math_biginteger':
|
||||
return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_INTEGER) + $mapping, NULL, $special);
|
||||
return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_INTEGER) + $mapping, null, $special);
|
||||
case is_float($source):
|
||||
return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_REAL) + $mapping, NULL, $special);
|
||||
return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_REAL) + $mapping, null, $special);
|
||||
case is_bool($source):
|
||||
return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_BOOLEAN) + $mapping, NULL, $special);
|
||||
return $this->_encode_der($source, array('type' => FILE_ASN1_TYPE_BOOLEAN) + $mapping, null, $special);
|
||||
case is_array($source) && count($source) == 1:
|
||||
$typename = implode('', array_keys($source));
|
||||
$outtype = array_search($typename, $this->ANYmap, true);
|
||||
if ($outtype !== false) {
|
||||
return $this->_encode_der($source[$typename], array('type' => $outtype) + $mapping, NULL, $special);
|
||||
return $this->_encode_der($source[$typename], array('type' => $outtype) + $mapping, null, $special);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1058,7 +1057,7 @@ class File_ASN1 {
|
||||
user_error('No filters defined for ' . implode('/', $loc));
|
||||
return false;
|
||||
}
|
||||
return $this->_encode_der($source, $filters + $mapping, NULL, $special);
|
||||
return $this->_encode_der($source, $filters + $mapping, null, $special);
|
||||
case FILE_ASN1_TYPE_NULL:
|
||||
$value = '';
|
||||
break;
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP X.509 Parser
|
||||
@ -35,19 +34,19 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category File
|
||||
* @package File_X509
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category File
|
||||
* @package File_X509
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include File_ASN1
|
||||
*/
|
||||
if (!class_exists('File_ASN1')) {
|
||||
require_once('ASN1.php');
|
||||
include_once 'ASN1.php';
|
||||
}
|
||||
|
||||
/**
|
||||
@ -124,12 +123,13 @@ define('FILE_X509_ATTR_REPLACE', -3); // Clear first, then add a value.
|
||||
/**
|
||||
* Pure-PHP X.509 Parser
|
||||
*
|
||||
* @package File_X509
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.3.1
|
||||
* @access public
|
||||
* @package File_X509
|
||||
*/
|
||||
class File_X509 {
|
||||
class File_X509
|
||||
{
|
||||
/**
|
||||
* ASN.1 syntax for X.509 certificates
|
||||
*
|
||||
@ -307,7 +307,7 @@ class File_X509 {
|
||||
function File_X509()
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
require_once('Math/BigInteger.php');
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
// Explicitly Tagged Module, 1988 Syntax
|
||||
@ -1431,7 +1431,7 @@ class File_X509 {
|
||||
$this->currentCert = $cert;
|
||||
|
||||
$currentKeyIdentifier = $this->getExtension('id-ce-subjectKeyIdentifier');
|
||||
$this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : NULL;
|
||||
$this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : null;
|
||||
|
||||
unset($this->signatureSubject);
|
||||
|
||||
@ -1469,7 +1469,7 @@ class File_X509 {
|
||||
$this->dn = $x509['tbsCertificate']['subject'];
|
||||
|
||||
$currentKeyIdentifier = $this->getExtension('id-ce-subjectKeyIdentifier');
|
||||
$this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : NULL;
|
||||
$this->currentKeyIdentifier = is_string($currentKeyIdentifier) ? $currentKeyIdentifier : null;
|
||||
|
||||
return $x509;
|
||||
}
|
||||
@ -1496,33 +1496,33 @@ class File_X509 {
|
||||
default:
|
||||
switch ($algorithm) {
|
||||
case 'rsaEncryption':
|
||||
$cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'] =
|
||||
base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'])));
|
||||
$cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey']
|
||||
= base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $cert['tbsCertificate']['subjectPublicKeyInfo']['subjectPublicKey'])));
|
||||
}
|
||||
}
|
||||
|
||||
$asn1 = new File_ASN1();
|
||||
|
||||
$asn1->loadOIDs($this->oids);
|
||||
|
||||
$filters = array();
|
||||
$filters['tbsCertificate']['signature']['parameters'] =
|
||||
$filters['tbsCertificate']['signature']['issuer']['rdnSequence']['value'] =
|
||||
$filters['tbsCertificate']['issuer']['rdnSequence']['value'] =
|
||||
$filters['tbsCertificate']['subject']['rdnSequence']['value'] =
|
||||
$filters['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['parameters'] =
|
||||
$filters['signatureAlgorithm']['parameters'] =
|
||||
$filters['authorityCertIssuer']['directoryName']['rdnSequence']['value'] =
|
||||
//$filters['policyQualifiers']['qualifier'] =
|
||||
$filters['distributionPoint']['fullName']['directoryName']['rdnSequence']['value'] =
|
||||
$filters['directoryName']['rdnSequence']['value'] =
|
||||
array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
$type_utf8_string = array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
$filters['tbsCertificate']['signature']['parameters'] = $type_utf8_string;
|
||||
$filters['tbsCertificate']['signature']['issuer']['rdnSequence']['value'] = $type_utf8_string;
|
||||
$filters['tbsCertificate']['issuer']['rdnSequence']['value'] = $type_utf8_string;
|
||||
$filters['tbsCertificate']['subject']['rdnSequence']['value'] = $type_utf8_string;
|
||||
$filters['tbsCertificate']['subjectPublicKeyInfo']['algorithm']['parameters'] = $type_utf8_string;
|
||||
$filters['signatureAlgorithm']['parameters'] = $type_utf8_string;
|
||||
$filters['authorityCertIssuer']['directoryName']['rdnSequence']['value'] = $type_utf8_string;
|
||||
//$filters['policyQualifiers']['qualifier'] = $type_utf8_string;
|
||||
$filters['distributionPoint']['fullName']['directoryName']['rdnSequence']['value'] = $type_utf8_string;
|
||||
$filters['directoryName']['rdnSequence']['value'] = $type_utf8_string;
|
||||
|
||||
/* in the case of policyQualifiers/qualifier, the type has to be FILE_ASN1_TYPE_IA5_STRING.
|
||||
FILE_ASN1_TYPE_PRINTABLE_STRING will cause OpenSSL's X.509 parser to spit out random
|
||||
characters.
|
||||
*/
|
||||
$filters['policyQualifiers']['qualifier'] =
|
||||
array('type' => FILE_ASN1_TYPE_IA5_STRING);
|
||||
$filters['policyQualifiers']['qualifier']
|
||||
= array('type' => FILE_ASN1_TYPE_IA5_STRING);
|
||||
|
||||
$asn1->loadFilters($filters);
|
||||
|
||||
@ -1715,8 +1715,7 @@ class File_X509 {
|
||||
if ($map === false) {
|
||||
user_error($id . ' is not a currently supported attribute', E_USER_NOTICE);
|
||||
unset($attributes[$i]);
|
||||
}
|
||||
elseif (is_array($attributes[$i]['value'])) {
|
||||
} elseif (is_array($attributes[$i]['value'])) {
|
||||
$values = &$attributes[$i]['value'];
|
||||
for ($j = 0; $j < count($values); $j++) {
|
||||
switch ($id) {
|
||||
@ -1963,7 +1962,7 @@ class File_X509 {
|
||||
* @param Integer $date optional
|
||||
* @access public
|
||||
*/
|
||||
function validateDate($date = NULL)
|
||||
function validateDate($date = null)
|
||||
{
|
||||
if (!is_array($this->currentCert) || !isset($this->currentCert['tbsCertificate'])) {
|
||||
return false;
|
||||
@ -1992,7 +1991,7 @@ class File_X509 {
|
||||
* Validate a signature
|
||||
*
|
||||
* Works on X.509 certs, CSR's and CRL's.
|
||||
* Returns true if the signature is verified, false if it is not correct or NULL on error
|
||||
* Returns true if the signature is verified, false if it is not correct or null on error
|
||||
*
|
||||
* By default returns false for self-signed certs. Call validateSignature(false) to make this support
|
||||
* self-signed.
|
||||
@ -2006,7 +2005,7 @@ class File_X509 {
|
||||
function validateSignature($caonly = true)
|
||||
{
|
||||
if (!is_array($this->currentCert) || !isset($this->signatureSubject)) {
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
|
||||
/* TODO:
|
||||
@ -2107,7 +2106,7 @@ class File_X509 {
|
||||
/**
|
||||
* Validates a signature
|
||||
*
|
||||
* Returns true if the signature is verified, false if it is not correct or NULL on error
|
||||
* Returns true if the signature is verified, false if it is not correct or null on error
|
||||
*
|
||||
* @param String $publicKeyAlgorithm
|
||||
* @param String $publicKey
|
||||
@ -2122,7 +2121,7 @@ class File_X509 {
|
||||
switch ($publicKeyAlgorithm) {
|
||||
case 'rsaEncryption':
|
||||
if (!class_exists('Crypt_RSA')) {
|
||||
require_once('Crypt/RSA.php');
|
||||
include_once 'Crypt/RSA.php';
|
||||
}
|
||||
$rsa = new Crypt_RSA();
|
||||
$rsa->loadKey($publicKey);
|
||||
@ -2142,11 +2141,11 @@ class File_X509 {
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return NULL;
|
||||
return null;
|
||||
}
|
||||
|
||||
return true;
|
||||
@ -2367,7 +2366,7 @@ class File_X509 {
|
||||
* @return Mixed
|
||||
* @access public
|
||||
*/
|
||||
function getDNProp($propName, $dn = NULL, $withType = false)
|
||||
function getDNProp($propName, $dn = null, $withType = false)
|
||||
{
|
||||
if (!isset($dn)) {
|
||||
$dn = $this->dn;
|
||||
@ -2421,7 +2420,7 @@ class File_X509 {
|
||||
function setDN($dn, $merge = false, $type = 'utf8String')
|
||||
{
|
||||
if (!$merge) {
|
||||
$this->dn = NULL;
|
||||
$this->dn = null;
|
||||
}
|
||||
|
||||
if (is_array($dn)) {
|
||||
@ -2460,7 +2459,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Boolean
|
||||
*/
|
||||
function getDN($format = FILE_X509_DN_ARRAY, $dn = NULL)
|
||||
function getDN($format = FILE_X509_DN_ARRAY, $dn = null)
|
||||
{
|
||||
if (!isset($dn)) {
|
||||
$dn = isset($this->currentCert['tbsCertList']) ? $this->currentCert['tbsCertList']['issuer'] : $this->dn;
|
||||
@ -2524,7 +2523,7 @@ class File_X509 {
|
||||
case FILE_X509_DN_HASH:
|
||||
$dn = $this->getDN(FILE_X509_DN_CANON, $dn);
|
||||
if (!class_exists('Crypt_Hash')) {
|
||||
require_once('Crypt/Hash.php');
|
||||
include_once 'Crypt/Hash.php';
|
||||
}
|
||||
$hash = new Crypt_Hash('sha1');
|
||||
$hash = $hash->hash($dn);
|
||||
@ -2676,7 +2675,7 @@ class File_X509 {
|
||||
{
|
||||
switch (true) {
|
||||
case !empty($this->dn):
|
||||
return $this->getDNProp($propName, NULL, $withType);
|
||||
return $this->getDNProp($propName, null, $withType);
|
||||
case !isset($this->currentCert) || !is_array($this->currentCert):
|
||||
break;
|
||||
case isset($this->currentCert['tbsCertificate']):
|
||||
@ -2792,7 +2791,7 @@ class File_X509 {
|
||||
switch ($keyinfo['algorithm']['algorithm']) {
|
||||
case 'rsaEncryption':
|
||||
if (!class_exists('Crypt_RSA')) {
|
||||
require_once('Crypt/RSA.php');
|
||||
include_once 'Crypt/RSA.php';
|
||||
}
|
||||
$publicKey = new Crypt_RSA();
|
||||
$publicKey->loadKey($key);
|
||||
@ -2865,17 +2864,17 @@ class File_X509 {
|
||||
switch ($algorithm) {
|
||||
case 'rsaEncryption':
|
||||
if (!class_exists('Crypt_RSA')) {
|
||||
require_once('Crypt/RSA.php');
|
||||
include_once 'Crypt/RSA.php';
|
||||
}
|
||||
$this->publicKey = new Crypt_RSA();
|
||||
$this->publicKey->loadKey($key);
|
||||
$this->publicKey->setPublicKey();
|
||||
break;
|
||||
default:
|
||||
$this->publicKey = NULL;
|
||||
$this->publicKey = null;
|
||||
}
|
||||
|
||||
$this->currentKeyIdentifier = NULL;
|
||||
$this->currentKeyIdentifier = null;
|
||||
$this->currentCert = $csr;
|
||||
|
||||
return $csr;
|
||||
@ -2902,8 +2901,8 @@ class File_X509 {
|
||||
default:
|
||||
switch ($algorithm) {
|
||||
case 'rsaEncryption':
|
||||
$csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'] =
|
||||
base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'])));
|
||||
$csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey']
|
||||
= base64_encode("\0" . base64_decode(preg_replace('#-.+-|[\r\n]#', '', $csr['certificationRequestInfo']['subjectPKInfo']['subjectPublicKey'])));
|
||||
}
|
||||
}
|
||||
|
||||
@ -2912,8 +2911,8 @@ class File_X509 {
|
||||
$asn1->loadOIDs($this->oids);
|
||||
|
||||
$filters = array();
|
||||
$filters['certificationRequestInfo']['subject']['rdnSequence']['value'] =
|
||||
array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
$filters['certificationRequestInfo']['subject']['rdnSequence']['value']
|
||||
= array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
|
||||
$asn1->loadFilters($filters);
|
||||
|
||||
@ -2990,17 +2989,17 @@ class File_X509 {
|
||||
switch ($algorithm) {
|
||||
case 'rsaEncryption':
|
||||
if (!class_exists('Crypt_RSA')) {
|
||||
require_once('Crypt/RSA.php');
|
||||
include_once 'Crypt/RSA.php';
|
||||
}
|
||||
$this->publicKey = new Crypt_RSA();
|
||||
$this->publicKey->loadKey($key);
|
||||
$this->publicKey->setPublicKey();
|
||||
break;
|
||||
default:
|
||||
$this->publicKey = NULL;
|
||||
$this->publicKey = null;
|
||||
}
|
||||
|
||||
$this->currentKeyIdentifier = NULL;
|
||||
$this->currentKeyIdentifier = null;
|
||||
$this->currentCert = $spkac;
|
||||
|
||||
return $spkac;
|
||||
@ -3048,14 +3047,14 @@ class File_X509 {
|
||||
$this->signatureSubject = substr($orig, $decoded[0]['content'][0]['start'], $decoded[0]['content'][0]['length']);
|
||||
|
||||
$this->_mapInExtensions($crl, 'tbsCertList/crlExtensions', $asn1);
|
||||
$rclist = &$this->_subArray($crl,'tbsCertList/revokedCertificates');
|
||||
$rclist = &$this->_subArray($crl, 'tbsCertList/revokedCertificates');
|
||||
if (is_array($rclist)) {
|
||||
foreach ($rclist as $i => $extension) {
|
||||
$this->_mapInExtensions($rclist, "$i/crlEntryExtensions", $asn1);
|
||||
}
|
||||
}
|
||||
|
||||
$this->currentKeyIdentifier = NULL;
|
||||
$this->currentKeyIdentifier = null;
|
||||
$this->currentCert = $crl;
|
||||
|
||||
return $crl;
|
||||
@ -3080,25 +3079,27 @@ class File_X509 {
|
||||
$asn1->loadOIDs($this->oids);
|
||||
|
||||
$filters = array();
|
||||
$filters['tbsCertList']['issuer']['rdnSequence']['value'] =
|
||||
$filters['tbsCertList']['signature']['parameters'] =
|
||||
$filters['signatureAlgorithm']['parameters'] =
|
||||
array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
$filters['tbsCertList']['issuer']['rdnSequence']['value']
|
||||
= array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
$filters['tbsCertList']['signature']['parameters']
|
||||
= array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
$filters['signatureAlgorithm']['parameters']
|
||||
= array('type' => FILE_ASN1_TYPE_UTF8_STRING);
|
||||
|
||||
if (empty($crl['tbsCertList']['signature']['parameters'])) {
|
||||
$filters['tbsCertList']['signature']['parameters'] =
|
||||
array('type' => FILE_ASN1_TYPE_NULL);
|
||||
$filters['tbsCertList']['signature']['parameters']
|
||||
= array('type' => FILE_ASN1_TYPE_NULL);
|
||||
}
|
||||
|
||||
if (empty($crl['signatureAlgorithm']['parameters'])) {
|
||||
$filters['signatureAlgorithm']['parameters'] =
|
||||
array('type' => FILE_ASN1_TYPE_NULL);
|
||||
$filters['signatureAlgorithm']['parameters']
|
||||
= array('type' => FILE_ASN1_TYPE_NULL);
|
||||
}
|
||||
|
||||
$asn1->loadFilters($filters);
|
||||
|
||||
$this->_mapOutExtensions($crl, 'tbsCertList/crlExtensions', $asn1);
|
||||
$rclist = &$this->_subArray($crl,'tbsCertList/revokedCertificates');
|
||||
$rclist = &$this->_subArray($crl, 'tbsCertList/revokedCertificates');
|
||||
if (is_array($rclist)) {
|
||||
foreach ($rclist as $i => $extension) {
|
||||
$this->_mapOutExtensions($rclist, "$i/crlEntryExtensions", $asn1);
|
||||
@ -3139,14 +3140,14 @@ class File_X509 {
|
||||
return false;
|
||||
}
|
||||
|
||||
$currentCert = isset($this->currentCert) ? $this->currentCert : NULL;
|
||||
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: NULL;
|
||||
$currentCert = isset($this->currentCert) ? $this->currentCert : null;
|
||||
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: null;
|
||||
|
||||
if (isset($subject->currentCert) && is_array($subject->currentCert) && isset($subject->currentCert['tbsCertificate'])) {
|
||||
$this->currentCert = $subject->currentCert;
|
||||
$this->currentCert['tbsCertificate']['signature']['algorithm'] =
|
||||
$this->currentCert['signatureAlgorithm']['algorithm'] =
|
||||
$signatureAlgorithm;
|
||||
$this->currentCert['tbsCertificate']['signature']['algorithm'] = $signatureAlgorithm;
|
||||
$this->currentCert['signatureAlgorithm']['algorithm'] = $signatureAlgorithm;
|
||||
|
||||
if (!empty($this->startDate)) {
|
||||
$this->currentCert['tbsCertificate']['validity']['notBefore']['generalTime'] = $this->startDate;
|
||||
unset($this->currentCert['tbsCertificate']['validity']['notBefore']['utcTime']);
|
||||
@ -3312,12 +3313,11 @@ class File_X509 {
|
||||
}
|
||||
$this->publicKey = $origPublicKey;
|
||||
|
||||
$currentCert = isset($this->currentCert) ? $this->currentCert : NULL;
|
||||
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: NULL;
|
||||
$currentCert = isset($this->currentCert) ? $this->currentCert : null;
|
||||
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject: null;
|
||||
|
||||
if (isset($this->currentCert) && is_array($this->currentCert) && isset($this->currentCert['certificationRequestInfo'])) {
|
||||
$this->currentCert['signatureAlgorithm']['algorithm'] =
|
||||
$signatureAlgorithm;
|
||||
$this->currentCert['signatureAlgorithm']['algorithm'] = $signatureAlgorithm;
|
||||
if (!empty($this->dn)) {
|
||||
$this->currentCert['certificationRequestInfo']['subject'] = $this->dn;
|
||||
}
|
||||
@ -3366,8 +3366,8 @@ class File_X509 {
|
||||
return false;
|
||||
}
|
||||
|
||||
$currentCert = isset($this->currentCert) ? $this->currentCert : NULL;
|
||||
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject : NULL;
|
||||
$currentCert = isset($this->currentCert) ? $this->currentCert : null;
|
||||
$signatureSubject = isset($this->signatureSubject) ? $this->signatureSubject : null;
|
||||
$thisUpdate = !empty($this->startDate) ? $this->startDate : @date('D, d M y H:i:s O');
|
||||
|
||||
if (isset($crl->currentCert) && is_array($crl->currentCert) && isset($crl->currentCert['tbsCertList'])) {
|
||||
@ -3400,10 +3400,9 @@ class File_X509 {
|
||||
|
||||
if (!empty($this->serialNumber)) {
|
||||
$crlNumber = $this->serialNumber;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$crlNumber = $this->getExtension('id-ce-cRLNumber');
|
||||
$crlNumber = $crlNumber !== false ? $crlNumber->add(new Math_BigInteger(1)) : NULL;
|
||||
$crlNumber = $crlNumber !== false ? $crlNumber->add(new Math_BigInteger(1)) : null;
|
||||
}
|
||||
|
||||
$this->removeExtension('id-ce-authorityKeyIdentifier');
|
||||
@ -3414,8 +3413,7 @@ class File_X509 {
|
||||
if (!$version) {
|
||||
if (!empty($tbsCertList['crlExtensions'])) {
|
||||
$version = 1; // v2.
|
||||
}
|
||||
elseif (!empty($tbsCertList['revokedCertificates'])) {
|
||||
} elseif (!empty($tbsCertList['revokedCertificates'])) {
|
||||
foreach ($tbsCertList['revokedCertificates'] as $cert) {
|
||||
if (!empty($cert['crlEntryExtensions'])) {
|
||||
$version = 1; // v2.
|
||||
@ -3613,7 +3611,7 @@ class File_X509 {
|
||||
* @access private
|
||||
* @return array ref or false
|
||||
*/
|
||||
function &_extensions(&$root, $path = NULL, $create = false)
|
||||
function &_extensions(&$root, $path = null, $create = false)
|
||||
{
|
||||
if (!isset($root)) {
|
||||
$root = $this->currentCert;
|
||||
@ -3667,7 +3665,7 @@ class File_X509 {
|
||||
* @access private
|
||||
* @return Boolean
|
||||
*/
|
||||
function _removeExtension($id, $path = NULL)
|
||||
function _removeExtension($id, $path = null)
|
||||
{
|
||||
$extensions = &$this->_extensions($this->currentCert, $path);
|
||||
|
||||
@ -3698,7 +3696,7 @@ class File_X509 {
|
||||
* @access private
|
||||
* @return Mixed
|
||||
*/
|
||||
function _getExtension($id, $cert = NULL, $path = NULL)
|
||||
function _getExtension($id, $cert = null, $path = null)
|
||||
{
|
||||
$extensions = $this->_extensions($cert, $path);
|
||||
|
||||
@ -3723,7 +3721,7 @@ class File_X509 {
|
||||
* @access private
|
||||
* @return Array
|
||||
*/
|
||||
function _getExtensions($cert = NULL, $path = NULL)
|
||||
function _getExtensions($cert = null, $path = null)
|
||||
{
|
||||
$exts = $this->_extensions($cert, $path);
|
||||
$extensions = array();
|
||||
@ -3748,7 +3746,7 @@ class File_X509 {
|
||||
* @access private
|
||||
* @return Boolean
|
||||
*/
|
||||
function _setExtension($id, $value, $critical = false, $replace = true, $path = NULL)
|
||||
function _setExtension($id, $value, $critical = false, $replace = true, $path = null)
|
||||
{
|
||||
$extensions = &$this->_extensions($this->currentCert, $path, true);
|
||||
|
||||
@ -3795,7 +3793,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Mixed
|
||||
*/
|
||||
function getExtension($id, $cert = NULL)
|
||||
function getExtension($id, $cert = null)
|
||||
{
|
||||
return $this->_getExtension($id, $cert);
|
||||
}
|
||||
@ -3807,7 +3805,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Array
|
||||
*/
|
||||
function getExtensions($cert = NULL)
|
||||
function getExtensions($cert = null)
|
||||
{
|
||||
return $this->_getExtensions($cert);
|
||||
}
|
||||
@ -3886,7 +3884,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Mixed
|
||||
*/
|
||||
function getAttribute($id, $disposition = FILE_X509_ATTR_ALL, $csr = NULL)
|
||||
function getAttribute($id, $disposition = FILE_X509_ATTR_ALL, $csr = null)
|
||||
{
|
||||
if (empty($csr)) {
|
||||
$csr = $this->currentCert;
|
||||
@ -3926,7 +3924,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Array
|
||||
*/
|
||||
function getAttributes($csr = NULL)
|
||||
function getAttributes($csr = null)
|
||||
{
|
||||
if (empty($csr)) {
|
||||
$csr = $this->currentCert;
|
||||
@ -4035,7 +4033,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return String binary key identifier
|
||||
*/
|
||||
function computeKeyIdentifier($key = NULL, $method = 1)
|
||||
function computeKeyIdentifier($key = null, $method = 1)
|
||||
{
|
||||
if (is_null($key)) {
|
||||
$key = $this;
|
||||
@ -4064,7 +4062,7 @@ class File_X509 {
|
||||
$raw = base64_decode($raw);
|
||||
// If the key is private, compute identifier from its corresponding public key.
|
||||
if (!class_exists('Crypt_RSA')) {
|
||||
require_once('Crypt/RSA.php');
|
||||
include_once 'Crypt/RSA.php';
|
||||
}
|
||||
$key = new Crypt_RSA();
|
||||
if (!$key->loadKey($raw)) {
|
||||
@ -4096,7 +4094,7 @@ class File_X509 {
|
||||
|
||||
// Now we have the key string: compute its sha-1 sum.
|
||||
if (!class_exists('Crypt_Hash')) {
|
||||
require_once('Crypt/Hash.php');
|
||||
include_once 'Crypt/Hash.php';
|
||||
}
|
||||
$hash = new Crypt_Hash('sha1');
|
||||
$hash = $hash->hash($key);
|
||||
@ -4228,7 +4226,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Boolean
|
||||
*/
|
||||
function revoke($serial, $date = NULL)
|
||||
function revoke($serial, $date = null)
|
||||
{
|
||||
if (isset($this->currentCert['tbsCertList'])) {
|
||||
if (is_array($rclist = &$this->_subArray($this->currentCert, 'tbsCertList/revokedCertificates', true))) {
|
||||
@ -4293,7 +4291,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return array
|
||||
*/
|
||||
function listRevoked($crl = NULL)
|
||||
function listRevoked($crl = null)
|
||||
{
|
||||
if (!isset($crl)) {
|
||||
$crl = $this->currentCert;
|
||||
@ -4344,7 +4342,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Mixed
|
||||
*/
|
||||
function getRevokedCertificateExtension($serial, $id, $crl = NULL)
|
||||
function getRevokedCertificateExtension($serial, $id, $crl = null)
|
||||
{
|
||||
if (!isset($crl)) {
|
||||
$crl = $this->currentCert;
|
||||
@ -4367,7 +4365,7 @@ class File_X509 {
|
||||
* @access public
|
||||
* @return Array
|
||||
*/
|
||||
function getRevokedCertificateExtensions($serial, $crl = NULL)
|
||||
function getRevokedCertificateExtensions($serial, $crl = null)
|
||||
{
|
||||
if (!isset($crl)) {
|
||||
$crl = $this->currentCert;
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP arbitrary precision integer arithmetic library.
|
||||
@ -65,12 +64,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Math
|
||||
* @package Math_BigInteger
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVI Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://pear.php.net/package/Math_BigInteger
|
||||
* @category Math
|
||||
* @package Math_BigInteger
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVI Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://pear.php.net/package/Math_BigInteger
|
||||
*/
|
||||
|
||||
/**#@+
|
||||
@ -174,12 +173,13 @@ define('MATH_BIGINTEGER_KARATSUBA_CUTOFF', 25);
|
||||
* Pure-PHP arbitrary precision integer arithmetic library. Supports base-2, base-10, base-16, and base-256
|
||||
* numbers.
|
||||
*
|
||||
* @package Math_BigInteger
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 1.0.0RC4
|
||||
* @access public
|
||||
* @package Math_BigInteger
|
||||
*/
|
||||
class Math_BigInteger {
|
||||
class Math_BigInteger
|
||||
{
|
||||
/**
|
||||
* Holds the BigInteger's value.
|
||||
*
|
||||
@ -3299,6 +3299,7 @@ class Math_BigInteger {
|
||||
|
||||
if (!$t) {
|
||||
// see HAC 4.49 "Note (controlling the error probability)"
|
||||
// @codingStandardsIgnoreStart
|
||||
if ($length >= 163) { $t = 2; } // floor(1300 / 8)
|
||||
else if ($length >= 106) { $t = 3; } // floor( 850 / 8)
|
||||
else if ($length >= 81 ) { $t = 4; } // floor( 650 / 8)
|
||||
@ -3311,6 +3312,7 @@ class Math_BigInteger {
|
||||
else if ($length >= 25 ) { $t = 15; } // floor( 200 / 8)
|
||||
else if ($length >= 18 ) { $t = 18; } // floor( 150 / 8)
|
||||
else { $t = 27; }
|
||||
// @codingStandardsIgnoreEnd
|
||||
}
|
||||
|
||||
// ie. gmp_testbit($this, 0)
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of SCP.
|
||||
@ -42,12 +41,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Net
|
||||
* @package Net_SCP
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMX Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Net
|
||||
* @package Net_SCP
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMX Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**#@+
|
||||
@ -82,12 +81,13 @@ define('NET_SCP_SSH2', 2);
|
||||
/**
|
||||
* Pure-PHP implementations of SCP.
|
||||
*
|
||||
* @package Net_SCP
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Net_SCP
|
||||
*/
|
||||
class Net_SCP {
|
||||
class Net_SCP
|
||||
{
|
||||
/**
|
||||
* SSH Object
|
||||
*
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of SFTP.
|
||||
@ -46,19 +45,19 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Net
|
||||
* @package Net_SFTP
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMIX Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Net
|
||||
* @package Net_SFTP
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMIX Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
* Include Net_SSH2
|
||||
*/
|
||||
if (!class_exists('Net_SSH2')) {
|
||||
require_once('SSH2.php');
|
||||
include_once 'SSH2.php';
|
||||
}
|
||||
|
||||
/**#@+
|
||||
@ -116,12 +115,13 @@ define('NET_SFTP_RESUME_START', 8);
|
||||
/**
|
||||
* Pure-PHP implementations of SFTP.
|
||||
*
|
||||
* @package Net_SFTP
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Net_SFTP
|
||||
*/
|
||||
class Net_SFTP extends Net_SSH2 {
|
||||
class Net_SFTP extends Net_SSH2
|
||||
{
|
||||
/**
|
||||
* Packet Types
|
||||
*
|
||||
@ -1058,7 +1058,7 @@ class Net_SFTP extends Net_SSH2 {
|
||||
* @return Boolean
|
||||
* @access public
|
||||
*/
|
||||
function touch($filename, $time = NULL, $atime = NULL)
|
||||
function touch($filename, $time = null, $atime = null)
|
||||
{
|
||||
if (!($this->bitmap & NET_SSH2_MASK_LOGIN)) {
|
||||
return false;
|
||||
@ -1101,7 +1101,7 @@ class Net_SFTP extends Net_SSH2 {
|
||||
/**
|
||||
* Changes file or directory owner
|
||||
*
|
||||
* Returns TRUE on success or FALSE on error.
|
||||
* Returns true on success or false on error.
|
||||
*
|
||||
* @param String $filename
|
||||
* @param Integer $uid
|
||||
@ -1121,7 +1121,7 @@ class Net_SFTP extends Net_SSH2 {
|
||||
/**
|
||||
* Changes file or directory group
|
||||
*
|
||||
* Returns TRUE on success or FALSE on error.
|
||||
* Returns true on success or false on error.
|
||||
*
|
||||
* @param String $filename
|
||||
* @param Integer $gid
|
||||
@ -1139,8 +1139,8 @@ class Net_SFTP extends Net_SSH2 {
|
||||
/**
|
||||
* Set permissions on a file.
|
||||
*
|
||||
* Returns the new file permissions on success or FALSE on error.
|
||||
* If $recursive is true than this just returns TRUE or FALSE.
|
||||
* Returns the new file permissions on success or false on error.
|
||||
* If $recursive is true than this just returns true or false.
|
||||
*
|
||||
* @param Integer $mode
|
||||
* @param String $filename
|
||||
@ -1506,8 +1506,6 @@ class Net_SFTP extends Net_SSH2 {
|
||||
return false;
|
||||
}
|
||||
|
||||
$initialize = true;
|
||||
|
||||
// http://tools.ietf.org/html/draft-ietf-secsh-filexfer-13#section-8.2.3
|
||||
if ($mode & NET_SFTP_LOCAL_FILE) {
|
||||
if (!is_file($data)) {
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* SFTP Stream Wrapper
|
||||
@ -26,23 +25,24 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Net
|
||||
* @package Net_SFTP_Stream
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXIII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Net
|
||||
* @package Net_SFTP_Stream
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMXIII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**
|
||||
* SFTP Stream Wrapper
|
||||
*
|
||||
* @package Net_SFTP_Stream
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.3.2
|
||||
* @access public
|
||||
* @package Net_SFTP_Stream
|
||||
*/
|
||||
class Net_SFTP_Stream {
|
||||
class Net_SFTP_Stream
|
||||
{
|
||||
/**
|
||||
* SFTP instances
|
||||
*
|
||||
@ -139,7 +139,7 @@ class Net_SFTP_Stream {
|
||||
}
|
||||
|
||||
if (!class_exists('Net_SFTP')) {
|
||||
require_once('Net/SFTP.php');
|
||||
include_once 'Net/SFTP.php';
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of SSHv1.
|
||||
@ -57,12 +56,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Net
|
||||
* @package Net_SSH1
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Net
|
||||
* @package Net_SSH1
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**#@+
|
||||
@ -226,12 +225,13 @@ define('NET_SSH1_READ_REGEX', 2);
|
||||
/**
|
||||
* Pure-PHP implementation of SSHv1.
|
||||
*
|
||||
* @package Net_SSH1
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Net_SSH1
|
||||
*/
|
||||
class Net_SSH1 {
|
||||
class Net_SSH1
|
||||
{
|
||||
/**
|
||||
* The SSH identifier
|
||||
*
|
||||
@ -449,16 +449,16 @@ class Net_SSH1 {
|
||||
function Net_SSH1($host, $port = 22, $timeout = 10, $cipher = NET_SSH1_CIPHER_3DES)
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
require_once('Math/BigInteger.php');
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
// Include Crypt_Random
|
||||
// the class_exists() will only be called if the crypt_random_string function hasn't been defined and
|
||||
// will trigger a call to __autoload() if you're wanting to auto-load classes
|
||||
// call function_exists() a second time to stop the require_once from being called outside
|
||||
// call function_exists() a second time to stop the include_once from being called outside
|
||||
// of the auto loader
|
||||
if (!function_exists('crypt_random_string') && !class_exists('Crypt_Random') && !function_exists('crypt_random_string')) {
|
||||
require_once('Crypt/Random.php');
|
||||
include_once 'Crypt/Random.php';
|
||||
}
|
||||
|
||||
$this->protocol_flags = array(
|
||||
@ -603,7 +603,7 @@ class Net_SSH1 {
|
||||
// break;
|
||||
case NET_SSH1_CIPHER_DES:
|
||||
if (!class_exists('Crypt_DES')) {
|
||||
require_once('Crypt/DES.php');
|
||||
include_once 'Crypt/DES.php';
|
||||
}
|
||||
$this->crypto = new Crypt_DES();
|
||||
$this->crypto->disablePadding();
|
||||
@ -612,7 +612,7 @@ class Net_SSH1 {
|
||||
break;
|
||||
case NET_SSH1_CIPHER_3DES:
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$this->crypto = new Crypt_TripleDES(CRYPT_DES_MODE_3CBC);
|
||||
$this->crypto->disablePadding();
|
||||
@ -621,7 +621,7 @@ class Net_SSH1 {
|
||||
break;
|
||||
//case NET_SSH1_CIPHER_RC4:
|
||||
// if (!class_exists('Crypt_RC4')) {
|
||||
// require_once('Crypt/RC4.php');
|
||||
// include_once('Crypt/RC4.php');
|
||||
// }
|
||||
// $this->crypto = new Crypt_RC4();
|
||||
// $this->crypto->enableContinuousBuffer();
|
||||
@ -1017,7 +1017,7 @@ class Net_SSH1 {
|
||||
|
||||
if ($this->curTimeout) {
|
||||
$read = array($this->fsock);
|
||||
$write = $except = NULL;
|
||||
$write = $except = null;
|
||||
|
||||
$start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
|
||||
$sec = floor($this->curTimeout);
|
||||
@ -1253,7 +1253,7 @@ class Net_SSH1 {
|
||||
{
|
||||
/*
|
||||
if (!class_exists('Crypt_RSA')) {
|
||||
require_once('Crypt/RSA.php');
|
||||
include_once 'Crypt/RSA.php';
|
||||
}
|
||||
|
||||
$rsa = new Crypt_RSA();
|
||||
|
@ -1,5 +1,4 @@
|
||||
<?php
|
||||
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
|
||||
|
||||
/**
|
||||
* Pure-PHP implementation of SSHv2.
|
||||
@ -59,12 +58,12 @@
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
* THE SOFTWARE.
|
||||
*
|
||||
* @category Net
|
||||
* @package Net_SSH2
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
* @category Net
|
||||
* @package Net_SSH2
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @copyright MMVII Jim Wigginton
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
/**#@+
|
||||
@ -144,12 +143,13 @@ define('NET_SSH2_LOG_MAX_SIZE', 1024 * 1024);
|
||||
/**
|
||||
* Pure-PHP implementation of SSHv2.
|
||||
*
|
||||
* @package Net_SSH2
|
||||
* @author Jim Wigginton <terrafrost@php.net>
|
||||
* @version 0.1.0
|
||||
* @access public
|
||||
* @package Net_SSH2
|
||||
*/
|
||||
class Net_SSH2 {
|
||||
class Net_SSH2
|
||||
{
|
||||
/**
|
||||
* The SSH identifier
|
||||
*
|
||||
@ -747,6 +747,30 @@ class Net_SSH2 {
|
||||
*/
|
||||
var $is_timeout = false;
|
||||
|
||||
/**
|
||||
* Log Boundary
|
||||
*
|
||||
* @see Net_SSH2::_format_log
|
||||
* @access private
|
||||
*/
|
||||
var $log_boundary = ':';
|
||||
|
||||
/**
|
||||
* Log Long Width
|
||||
*
|
||||
* @see Net_SSH2::_format_log
|
||||
* @access private
|
||||
*/
|
||||
var $log_long_width = 65;
|
||||
|
||||
/**
|
||||
* Log Short Width
|
||||
*
|
||||
* @see Net_SSH2::_format_log
|
||||
* @access private
|
||||
*/
|
||||
var $log_short_width = 16;
|
||||
|
||||
/**
|
||||
* Default Constructor.
|
||||
*
|
||||
@ -763,18 +787,18 @@ class Net_SSH2 {
|
||||
// Include Math_BigInteger
|
||||
// Used to do Diffie-Hellman key exchange and DSA/RSA signature verification.
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
require_once('Math/BigInteger.php');
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
if (!function_exists('crypt_random_string')) {
|
||||
require_once('Crypt/Random.php');
|
||||
include_once 'Crypt/Random.php';
|
||||
}
|
||||
|
||||
if (!class_exists('Crypt_Hash')) {
|
||||
require_once('Crypt/Hash.php');
|
||||
include_once 'Crypt/Hash.php';
|
||||
}
|
||||
|
||||
$this->last_packet = strtok(microtime(), ' ') + strtok(''); // == microtime(true) in PHP5
|
||||
$this->last_packet = microtime(true);
|
||||
$this->message_numbers = array(
|
||||
1 => 'NET_SSH2_MSG_DISCONNECT',
|
||||
2 => 'NET_SSH2_MSG_IGNORE',
|
||||
@ -845,13 +869,13 @@ class Net_SSH2 {
|
||||
61 => 'NET_SSH2_MSG_USERAUTH_INFO_RESPONSE')
|
||||
);
|
||||
|
||||
$start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
|
||||
$start = microtime(true);
|
||||
$this->fsock = @fsockopen($host, $port, $errno, $errstr, $timeout);
|
||||
if (!$this->fsock) {
|
||||
user_error(rtrim("Cannot connect to $host. Error $errno. $errstr"));
|
||||
return;
|
||||
}
|
||||
$elapsed = strtok(microtime(), ' ') + strtok('') - $start;
|
||||
$elapsed = microtime(true) - $start;
|
||||
|
||||
$timeout-= $elapsed;
|
||||
|
||||
@ -861,7 +885,7 @@ class Net_SSH2 {
|
||||
}
|
||||
|
||||
$read = array($this->fsock);
|
||||
$write = $except = NULL;
|
||||
$write = $except = null;
|
||||
|
||||
$sec = floor($timeout);
|
||||
$usec = 1000000 * ($timeout - $sec);
|
||||
@ -1353,14 +1377,14 @@ class Net_SSH2 {
|
||||
switch ($encrypt) {
|
||||
case '3des-cbc':
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_TripleDES();
|
||||
// $this->encrypt_block_size = 64 / 8 == the default
|
||||
break;
|
||||
case '3des-ctr':
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR);
|
||||
// $this->encrypt_block_size = 64 / 8 == the default
|
||||
@ -1369,7 +1393,7 @@ class Net_SSH2 {
|
||||
case 'aes192-cbc':
|
||||
case 'aes128-cbc':
|
||||
if (!class_exists('Crypt_Rijndael')) {
|
||||
require_once('Crypt/Rijndael.php');
|
||||
include_once 'Crypt/Rijndael.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_Rijndael();
|
||||
$this->encrypt_block_size = 16; // eg. 128 / 8
|
||||
@ -1378,21 +1402,21 @@ class Net_SSH2 {
|
||||
case 'aes192-ctr':
|
||||
case 'aes128-ctr':
|
||||
if (!class_exists('Crypt_Rijndael')) {
|
||||
require_once('Crypt/Rijndael.php');
|
||||
include_once 'Crypt/Rijndael.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_Rijndael(CRYPT_RIJNDAEL_MODE_CTR);
|
||||
$this->encrypt_block_size = 16; // eg. 128 / 8
|
||||
break;
|
||||
case 'blowfish-cbc':
|
||||
if (!class_exists('Crypt_Blowfish')) {
|
||||
require_once('Crypt/Blowfish.php');
|
||||
include_once 'Crypt/Blowfish.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_Blowfish();
|
||||
$this->encrypt_block_size = 8;
|
||||
break;
|
||||
case 'blowfish-ctr':
|
||||
if (!class_exists('Crypt_Blowfish')) {
|
||||
require_once('Crypt/Blowfish.php');
|
||||
include_once 'Crypt/Blowfish.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_Blowfish(CRYPT_BLOWFISH_MODE_CTR);
|
||||
$this->encrypt_block_size = 8;
|
||||
@ -1402,7 +1426,7 @@ class Net_SSH2 {
|
||||
case 'twofish256-cbc':
|
||||
case 'twofish-cbc':
|
||||
if (!class_exists('Crypt_Twofish')) {
|
||||
require_once('Crypt/Twofish.php');
|
||||
include_once 'Crypt/Twofish.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_Twofish();
|
||||
$this->encrypt_block_size = 16;
|
||||
@ -1411,7 +1435,7 @@ class Net_SSH2 {
|
||||
case 'twofish192-ctr':
|
||||
case 'twofish256-ctr':
|
||||
if (!class_exists('Crypt_Twofish')) {
|
||||
require_once('Crypt/Twofish.php');
|
||||
include_once 'Crypt/Twofish.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_Twofish(CRYPT_TWOFISH_MODE_CTR);
|
||||
$this->encrypt_block_size = 16;
|
||||
@ -1420,7 +1444,7 @@ class Net_SSH2 {
|
||||
case 'arcfour128':
|
||||
case 'arcfour256':
|
||||
if (!class_exists('Crypt_RC4')) {
|
||||
require_once('Crypt/RC4.php');
|
||||
include_once 'Crypt/RC4.php';
|
||||
}
|
||||
$this->encrypt = new Crypt_RC4();
|
||||
break;
|
||||
@ -1431,13 +1455,13 @@ class Net_SSH2 {
|
||||
switch ($decrypt) {
|
||||
case '3des-cbc':
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_TripleDES();
|
||||
break;
|
||||
case '3des-ctr':
|
||||
if (!class_exists('Crypt_TripleDES')) {
|
||||
require_once('Crypt/TripleDES.php');
|
||||
include_once 'Crypt/TripleDES.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_TripleDES(CRYPT_DES_MODE_CTR);
|
||||
break;
|
||||
@ -1445,7 +1469,7 @@ class Net_SSH2 {
|
||||
case 'aes192-cbc':
|
||||
case 'aes128-cbc':
|
||||
if (!class_exists('Crypt_Rijndael')) {
|
||||
require_once('Crypt/Rijndael.php');
|
||||
include_once 'Crypt/Rijndael.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_Rijndael();
|
||||
$this->decrypt_block_size = 16;
|
||||
@ -1454,21 +1478,21 @@ class Net_SSH2 {
|
||||
case 'aes192-ctr':
|
||||
case 'aes128-ctr':
|
||||
if (!class_exists('Crypt_Rijndael')) {
|
||||
require_once('Crypt/Rijndael.php');
|
||||
include_once 'Crypt/Rijndael.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_Rijndael(CRYPT_RIJNDAEL_MODE_CTR);
|
||||
$this->decrypt_block_size = 16;
|
||||
break;
|
||||
case 'blowfish-cbc':
|
||||
if (!class_exists('Crypt_Blowfish')) {
|
||||
require_once('Crypt/Blowfish.php');
|
||||
include_once 'Crypt/Blowfish.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_Blowfish();
|
||||
$this->decrypt_block_size = 8;
|
||||
break;
|
||||
case 'blowfish-ctr':
|
||||
if (!class_exists('Crypt_Blowfish')) {
|
||||
require_once('Crypt/Blowfish.php');
|
||||
include_once 'Crypt/Blowfish.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_Blowfish(CRYPT_BLOWFISH_MODE_CTR);
|
||||
$this->decrypt_block_size = 8;
|
||||
@ -1478,7 +1502,7 @@ class Net_SSH2 {
|
||||
case 'twofish256-cbc':
|
||||
case 'twofish-cbc':
|
||||
if (!class_exists('Crypt_Twofish')) {
|
||||
require_once('Crypt/Twofish.php');
|
||||
include_once 'Crypt/Twofish.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_Twofish();
|
||||
$this->decrypt_block_size = 16;
|
||||
@ -1487,7 +1511,7 @@ class Net_SSH2 {
|
||||
case 'twofish192-ctr':
|
||||
case 'twofish256-ctr':
|
||||
if (!class_exists('Crypt_Twofish')) {
|
||||
require_once('Crypt/Twofish.php');
|
||||
include_once 'Crypt/Twofish.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_Twofish(CRYPT_TWOFISH_MODE_CTR);
|
||||
$this->decrypt_block_size = 16;
|
||||
@ -1496,7 +1520,7 @@ class Net_SSH2 {
|
||||
case 'arcfour128':
|
||||
case 'arcfour256':
|
||||
if (!class_exists('Crypt_RC4')) {
|
||||
require_once('Crypt/RC4.php');
|
||||
include_once 'Crypt/RC4.php';
|
||||
}
|
||||
$this->decrypt = new Crypt_RC4();
|
||||
break;
|
||||
@ -1757,7 +1781,7 @@ class Net_SSH2 {
|
||||
|
||||
// remove the username and password from the logged packet
|
||||
if (!defined('NET_SSH2_LOGGING')) {
|
||||
$logged = NULL;
|
||||
$logged = null;
|
||||
} else {
|
||||
$logged = pack('CNa*Na*Na*CNa*',
|
||||
NET_SSH2_MSG_USERAUTH_REQUEST, strlen('username'), 'username', strlen('ssh-connection'), 'ssh-connection',
|
||||
@ -2075,7 +2099,7 @@ class Net_SSH2 {
|
||||
* @return String
|
||||
* @access public
|
||||
*/
|
||||
function exec($command, $callback = NULL)
|
||||
function exec($command, $callback = null)
|
||||
{
|
||||
$this->curTimeout = $this->timeout;
|
||||
$this->is_timeout = false;
|
||||
@ -2349,7 +2373,6 @@ class Net_SSH2 {
|
||||
return false;
|
||||
}
|
||||
|
||||
$channel = $this->in_request_pty_exec ? NET_SSH2_CHANNEL_EXEC : NET_SSH2_CHANNEL_SHELL;
|
||||
return $this->_send_channel_packet($this->_get_interactive_channel(), $cmd);
|
||||
}
|
||||
|
||||
@ -2430,8 +2453,7 @@ class Net_SSH2 {
|
||||
*/
|
||||
function reset()
|
||||
{
|
||||
$channel = $this->in_request_pty_exec ? NET_SSH2_CHANNEL_EXEC : NET_SSH2_CHANNEL_SHELL;
|
||||
$this->_close_channel($channel);
|
||||
$this->_close_channel($this->_get_interactive_channel());
|
||||
}
|
||||
|
||||
/**
|
||||
@ -2499,7 +2521,7 @@ class Net_SSH2 {
|
||||
return false;
|
||||
}
|
||||
|
||||
$start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
|
||||
$start = microtime(true);
|
||||
$raw = fread($this->fsock, $this->decrypt_block_size);
|
||||
|
||||
if (!strlen($raw)) {
|
||||
@ -2532,7 +2554,7 @@ class Net_SSH2 {
|
||||
$buffer.= $temp;
|
||||
$remaining_length-= strlen($temp);
|
||||
}
|
||||
$stop = strtok(microtime(), ' ') + strtok('');
|
||||
$stop = microtime(true);
|
||||
if (strlen($buffer)) {
|
||||
$raw.= $this->decrypt !== false ? $this->decrypt->decrypt($buffer) : $buffer;
|
||||
}
|
||||
@ -2555,7 +2577,7 @@ class Net_SSH2 {
|
||||
$this->get_seq_no++;
|
||||
|
||||
if (defined('NET_SSH2_LOGGING')) {
|
||||
$current = strtok(microtime(), ' ') + strtok('');
|
||||
$current = microtime(true);
|
||||
$message_number = isset($this->message_numbers[ord($payload[0])]) ? $this->message_numbers[ord($payload[0])] : 'UNKNOWN (' . ord($payload[0]) . ')';
|
||||
$message_number = '<- ' . $message_number .
|
||||
' (since last: ' . round($current - $this->last_packet, 4) . ', network: ' . round($stop - $start, 4) . 's)';
|
||||
@ -2724,9 +2746,9 @@ class Net_SSH2 {
|
||||
}
|
||||
|
||||
$read = array($this->fsock);
|
||||
$write = $except = NULL;
|
||||
$write = $except = null;
|
||||
|
||||
$start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
|
||||
$start = microtime(true);
|
||||
$sec = floor($this->curTimeout);
|
||||
$usec = 1000000 * ($this->curTimeout - $sec);
|
||||
// on windows this returns a "Warning: Invalid CRT parameters detected" error
|
||||
@ -2734,7 +2756,7 @@ class Net_SSH2 {
|
||||
$this->is_timeout = true;
|
||||
return true;
|
||||
}
|
||||
$elapsed = strtok(microtime(), ' ') + strtok('') - $start;
|
||||
$elapsed = microtime(true) - $start;
|
||||
$this->curTimeout-= $elapsed;
|
||||
}
|
||||
|
||||
@ -2907,7 +2929,7 @@ class Net_SSH2 {
|
||||
* @return Boolean
|
||||
* @access private
|
||||
*/
|
||||
function _send_binary_packet($data, $logged = NULL)
|
||||
function _send_binary_packet($data, $logged = null)
|
||||
{
|
||||
if (!is_resource($this->fsock) || feof($this->fsock)) {
|
||||
user_error('Connection closed prematurely');
|
||||
@ -2941,12 +2963,12 @@ class Net_SSH2 {
|
||||
|
||||
$packet.= $hmac;
|
||||
|
||||
$start = strtok(microtime(), ' ') + strtok(''); // http://php.net/microtime#61838
|
||||
$start = microtime(true);
|
||||
$result = strlen($packet) == fputs($this->fsock, $packet);
|
||||
$stop = strtok(microtime(), ' ') + strtok('');
|
||||
$stop = microtime(true);
|
||||
|
||||
if (defined('NET_SSH2_LOGGING')) {
|
||||
$current = strtok(microtime(), ' ') + strtok('');
|
||||
$current = microtime(true);
|
||||
$message_number = isset($this->message_numbers[ord($data[0])]) ? $this->message_numbers[ord($data[0])] : 'UNKNOWN (' . ord($data[0]) . ')';
|
||||
$message_number = '-> ' . $message_number .
|
||||
' (since last: ' . round($current - $this->last_packet, 4) . ', network: ' . round($stop - $start, 4) . 's)';
|
||||
@ -3227,8 +3249,6 @@ class Net_SSH2 {
|
||||
*/
|
||||
function _format_log($message_log, $message_number_log)
|
||||
{
|
||||
static $boundary = ':', $long_width = 65, $short_width = 16;
|
||||
|
||||
$output = '';
|
||||
for ($i = 0; $i < count($message_log); $i++) {
|
||||
$output.= $message_number_log[$i] . "\r\n";
|
||||
@ -3238,19 +3258,13 @@ class Net_SSH2 {
|
||||
if (strlen($current_log)) {
|
||||
$output.= str_pad(dechex($j), 7, '0', STR_PAD_LEFT) . '0 ';
|
||||
}
|
||||
$fragment = $this->_string_shift($current_log, $short_width);
|
||||
$hex = substr(
|
||||
preg_replace(
|
||||
'#(.)#es',
|
||||
'"' . $boundary . '" . str_pad(dechex(ord(substr("\\1", -1))), 2, "0", STR_PAD_LEFT)',
|
||||
$fragment),
|
||||
strlen($boundary)
|
||||
);
|
||||
$fragment = $this->_string_shift($current_log, $this->log_short_width);
|
||||
$hex = substr(preg_replace_callback('#.#s', array($this, '_format_log_helper'), $fragment), strlen($this->log_boundary));
|
||||
// replace non ASCII printable characters with dots
|
||||
// http://en.wikipedia.org/wiki/ASCII#ASCII_printable_characters
|
||||
// also replace < with a . since < messes up the output on web browsers
|
||||
$raw = preg_replace('#[^\x20-\x7E]|<#', '.', $fragment);
|
||||
$output.= str_pad($hex, $long_width - $short_width, ' ') . $raw . "\r\n";
|
||||
$output.= str_pad($hex, $this->log_long_width - $this->log_short_width, ' ') . $raw . "\r\n";
|
||||
$j++;
|
||||
} while (strlen($current_log));
|
||||
$output.= "\r\n";
|
||||
@ -3259,6 +3273,20 @@ class Net_SSH2 {
|
||||
return $output;
|
||||
}
|
||||
|
||||
/**
|
||||
* Helper function for _format_log
|
||||
*
|
||||
* For use with preg_replace_callback()
|
||||
*
|
||||
* @param Array $matches
|
||||
* @access private
|
||||
* @return String
|
||||
*/
|
||||
function _format_log_helper($matches)
|
||||
{
|
||||
return $this->log_boundary . str_pad(dechex(ord($matches[0])), 2, '0', STR_PAD_LEFT);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns all errors
|
||||
*
|
||||
@ -3512,7 +3540,7 @@ class Net_SSH2 {
|
||||
$signature = $this->_string_shift($signature, $temp['length']);
|
||||
|
||||
if (!class_exists('Crypt_RSA')) {
|
||||
require_once('Crypt/RSA.php');
|
||||
include_once 'Crypt/RSA.php';
|
||||
}
|
||||
|
||||
$rsa = new Crypt_RSA();
|
||||
|
41
tests/Net/SSH2Test.php
Normal file
41
tests/Net/SSH2Test.php
Normal file
@ -0,0 +1,41 @@
|
||||
<?php
|
||||
/**
|
||||
* @author Marc Scholten <marc@pedigital.de>
|
||||
* @copyright MMXIII Marc Scholten
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
*/
|
||||
|
||||
class Net_SSH2Test extends PhpseclibTestCase
|
||||
{
|
||||
public function formatLogDataProvider()
|
||||
{
|
||||
return array(
|
||||
array(
|
||||
array('hello world'),
|
||||
array('<--'),
|
||||
"<--\r\n00000000 68:65:6c:6c:6f:20:77:6f:72:6c:64 hello world\r\n\r\n"
|
||||
),
|
||||
array(
|
||||
array('hello', 'world'),
|
||||
array('<--', '<--'),
|
||||
"<--\r\n00000000 68:65:6c:6c:6f hello\r\n\r\n" .
|
||||
"<--\r\n00000000 77:6f:72:6c:64 world\r\n\r\n"
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider formatLogDataProvider
|
||||
*/
|
||||
public function testFormatLog(array $message_log, array $message_number_log, $expected)
|
||||
{
|
||||
$ssh = $this->getMockBuilder('Net_SSH2')
|
||||
->disableOriginalConstructor()
|
||||
->setMethods(array('__destruct'))
|
||||
->getMock();
|
||||
|
||||
$result = $ssh->_format_log($message_log, $message_number_log);
|
||||
|
||||
$this->assertEquals($expected, $result);
|
||||
}
|
||||
}
|
@ -5,6 +5,8 @@
|
||||
* @license http://www.opensource.org/licenses/mit-license.html MIT License
|
||||
*/
|
||||
|
||||
date_default_timezone_set('UTC');
|
||||
|
||||
// Set up include path accordingly. This is especially required because some
|
||||
// class files of phpseclib require() other dependencies.
|
||||
set_include_path(implode(PATH_SEPARATOR, array(
|
||||
|
@ -24,11 +24,12 @@ fi
|
||||
|
||||
# Workaround for rsync not creating target directories with depth > 1
|
||||
mv "$LDIRNAME" "x$LDIRNAME"
|
||||
mkdir -p "$RDIRNAME/$TRAVIS_BUILD_NUMBER"
|
||||
mv "x$LDIRNAME" "$RDIRNAME/$TRAVIS_BUILD_NUMBER/PHP-$TRAVIS_PHP_VERSION/"
|
||||
RROOT="$RDIRNAME/$TRAVIS_BRANCH/$TRAVIS_BUILD_NUMBER"
|
||||
mkdir -p "$RROOT"
|
||||
mv "x$LDIRNAME" "$RROOT/PHP-$TRAVIS_PHP_VERSION/"
|
||||
|
||||
# Update latest symlink
|
||||
ln -s "$TRAVIS_BUILD_NUMBER" "$RDIRNAME/latest"
|
||||
ln -s "$TRAVIS_BUILD_NUMBER" "$RDIRNAME/$TRAVIS_BRANCH/latest"
|
||||
|
||||
# Stop complaints about world-readable key file.
|
||||
chmod 600 "$ID_RSA"
|
||||
|
62
tests/code_sniffer_ruleset.xml
Normal file
62
tests/code_sniffer_ruleset.xml
Normal file
@ -0,0 +1,62 @@
|
||||
<?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" />
|
||||
|
||||
<!-- 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" />
|
||||
|
||||
<!-- 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