mirror of
https://github.com/phpseclib/phpseclib.git
synced 2025-01-14 18:59:51 +00:00
Update users of Math_BigInteger.
This commit is contained in:
parent
65ec4dc8bc
commit
f2f5fcd70a
@ -54,6 +54,8 @@
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
use \phpseclib\Math\BigInteger;
|
||||
|
||||
/**#@+
|
||||
* @access private
|
||||
* @see Crypt_Hash::Crypt_Hash()
|
||||
@ -579,10 +581,6 @@ class Crypt_Hash
|
||||
*/
|
||||
function _sha512($m)
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
static $init384, $init512, $k;
|
||||
|
||||
if (!isset($k)) {
|
||||
@ -597,9 +595,9 @@ class Crypt_Hash
|
||||
);
|
||||
|
||||
for ($i = 0; $i < 8; $i++) {
|
||||
$init384[$i] = new Math_BigInteger($init384[$i], 16);
|
||||
$init384[$i] = new BigInteger($init384[$i], 16);
|
||||
$init384[$i]->setPrecision(64);
|
||||
$init512[$i] = new Math_BigInteger($init512[$i], 16);
|
||||
$init512[$i] = new BigInteger($init512[$i], 16);
|
||||
$init512[$i]->setPrecision(64);
|
||||
}
|
||||
|
||||
@ -629,7 +627,7 @@ class Crypt_Hash
|
||||
);
|
||||
|
||||
for ($i = 0; $i < 80; $i++) {
|
||||
$k[$i] = new Math_BigInteger($k[$i], 16);
|
||||
$k[$i] = new BigInteger($k[$i], 16);
|
||||
}
|
||||
}
|
||||
|
||||
@ -648,7 +646,7 @@ class Crypt_Hash
|
||||
foreach ($chunks as $chunk) {
|
||||
$w = array();
|
||||
for ($i = 0; $i < 16; $i++) {
|
||||
$temp = new Math_BigInteger($this->_string_shift($chunk, 8), 256);
|
||||
$temp = new BigInteger($this->_string_shift($chunk, 8), 256);
|
||||
$temp->setPrecision(64);
|
||||
$w[] = $temp;
|
||||
}
|
||||
@ -802,7 +800,7 @@ class Crypt_Hash
|
||||
* Add
|
||||
*
|
||||
* _sha256() adds multiple unsigned 32-bit integers. Since PHP doesn't support unsigned integers and since the
|
||||
* possibility of overflow exists, care has to be taken. Math_BigInteger() could be used but this should be faster.
|
||||
* possibility of overflow exists, care has to be taken. BigInteger could be used but this should be faster.
|
||||
*
|
||||
* @param Integer $...
|
||||
* @return Integer
|
||||
|
@ -67,6 +67,8 @@
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
use \phpseclib\Math\BigInteger;
|
||||
|
||||
/**
|
||||
* Include Crypt_Random
|
||||
*/
|
||||
@ -201,7 +203,7 @@ define('CRYPT_RSA_PRIVATE_FORMAT_XML', 2);
|
||||
/**
|
||||
* Raw public key
|
||||
*
|
||||
* An array containing two Math_BigInteger objects.
|
||||
* An array containing two \phpseclib\Math\BigInteger objects.
|
||||
*
|
||||
* The exponent can be indexed with any of the following:
|
||||
*
|
||||
@ -280,7 +282,7 @@ class Crypt_RSA
|
||||
/**
|
||||
* Modulus (ie. n)
|
||||
*
|
||||
* @var Math_BigInteger
|
||||
* @var \phpseclib\Math\BigInteger
|
||||
* @access private
|
||||
*/
|
||||
var $modulus;
|
||||
@ -288,7 +290,7 @@ class Crypt_RSA
|
||||
/**
|
||||
* Modulus length
|
||||
*
|
||||
* @var Math_BigInteger
|
||||
* @var \phpseclib\Math\BigInteger
|
||||
* @access private
|
||||
*/
|
||||
var $k;
|
||||
@ -296,7 +298,7 @@ class Crypt_RSA
|
||||
/**
|
||||
* Exponent (ie. e or d)
|
||||
*
|
||||
* @var Math_BigInteger
|
||||
* @var \phpseclib\Math\BigInteger
|
||||
* @access private
|
||||
*/
|
||||
var $exponent;
|
||||
@ -459,10 +461,6 @@ class Crypt_RSA
|
||||
*/
|
||||
function Crypt_RSA()
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
$this->configFile = CRYPT_RSA_OPENSSL_CONFIG;
|
||||
|
||||
if ( !defined('CRYPT_RSA_MODE') ) {
|
||||
@ -507,8 +505,8 @@ class Crypt_RSA
|
||||
}
|
||||
}
|
||||
|
||||
$this->zero = new Math_BigInteger();
|
||||
$this->one = new Math_BigInteger(1);
|
||||
$this->zero = new BigInteger();
|
||||
$this->one = new BigInteger(1);
|
||||
|
||||
$this->hash = new Crypt_Hash('sha1');
|
||||
$this->hLen = $this->hash->getLength();
|
||||
@ -529,7 +527,7 @@ class Crypt_RSA
|
||||
* @access public
|
||||
* @param optional Integer $bits
|
||||
* @param optional Integer $timeout
|
||||
* @param optional Math_BigInteger $p
|
||||
* @param optional array $p
|
||||
*/
|
||||
function createKey($bits = 1024, $timeout = false, $partial = array())
|
||||
{
|
||||
@ -573,7 +571,7 @@ class Crypt_RSA
|
||||
|
||||
static $e;
|
||||
if (!isset($e)) {
|
||||
$e = new Math_BigInteger(CRYPT_RSA_EXPONENT);
|
||||
$e = new BigInteger(CRYPT_RSA_EXPONENT);
|
||||
}
|
||||
|
||||
extract($this->_generateMinMax($bits));
|
||||
@ -589,7 +587,7 @@ class Crypt_RSA
|
||||
$finalMax = $max;
|
||||
extract($this->_generateMinMax($temp));
|
||||
|
||||
$generator = new Math_BigInteger();
|
||||
$generator = new BigInteger();
|
||||
|
||||
$n = $this->one->copy();
|
||||
if (!empty($partial)) {
|
||||
@ -1100,10 +1098,10 @@ class Crypt_RSA
|
||||
$length = $this->_decodeLength($key);
|
||||
$temp = $this->_string_shift($key, $length);
|
||||
if (strlen($temp) != 1 || ord($temp) > 2) {
|
||||
$components['modulus'] = new Math_BigInteger($temp, 256);
|
||||
$components['modulus'] = new BigInteger($temp, 256);
|
||||
$this->_string_shift($key); // skip over CRYPT_RSA_ASN1_INTEGER
|
||||
$length = $this->_decodeLength($key);
|
||||
$components[$type == CRYPT_RSA_PUBLIC_FORMAT_PKCS1 ? 'publicExponent' : 'privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components[$type == CRYPT_RSA_PUBLIC_FORMAT_PKCS1 ? 'publicExponent' : 'privateExponent'] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
|
||||
return $components;
|
||||
}
|
||||
@ -1111,28 +1109,28 @@ class Crypt_RSA
|
||||
return false;
|
||||
}
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['modulus'] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['modulus'] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['publicExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['publicExponent'] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['privateExponent'] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['privateExponent'] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256));
|
||||
$components['primes'] = array(1 => new BigInteger($this->_string_shift($key, $length), 256));
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['primes'][] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['exponents'] = array(1 => new Math_BigInteger($this->_string_shift($key, $length), 256));
|
||||
$components['exponents'] = array(1 => new BigInteger($this->_string_shift($key, $length), 256));
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['exponents'][] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($key, $length), 256));
|
||||
$components['coefficients'] = array(2 => new BigInteger($this->_string_shift($key, $length), 256));
|
||||
|
||||
if (!empty($key)) {
|
||||
if (ord($this->_string_shift($key)) != CRYPT_RSA_ASN1_SEQUENCE) {
|
||||
@ -1146,13 +1144,13 @@ class Crypt_RSA
|
||||
$this->_decodeLength($key);
|
||||
$key = substr($key, 1);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['primes'][] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['primes'][] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['exponents'][] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['exponents'][] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
$this->_string_shift($key);
|
||||
$length = $this->_decodeLength($key);
|
||||
$components['coefficients'][] = new Math_BigInteger($this->_string_shift($key, $length), 256);
|
||||
$components['coefficients'][] = new BigInteger($this->_string_shift($key, $length), 256);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1173,19 +1171,19 @@ class Crypt_RSA
|
||||
return false;
|
||||
}
|
||||
extract(unpack('Nlength', $this->_string_shift($key, 4)));
|
||||
$publicExponent = new Math_BigInteger($this->_string_shift($key, $length), -256);
|
||||
$publicExponent = new BigInteger($this->_string_shift($key, $length), -256);
|
||||
if (strlen($key) <= 4) {
|
||||
return false;
|
||||
}
|
||||
extract(unpack('Nlength', $this->_string_shift($key, 4)));
|
||||
$modulus = new Math_BigInteger($this->_string_shift($key, $length), -256);
|
||||
$modulus = new BigInteger($this->_string_shift($key, $length), -256);
|
||||
|
||||
if ($cleanup && strlen($key)) {
|
||||
if (strlen($key) <= 4) {
|
||||
return false;
|
||||
}
|
||||
extract(unpack('Nlength', $this->_string_shift($key, 4)));
|
||||
$realModulus = new Math_BigInteger($this->_string_shift($key, $length), -256);
|
||||
$realModulus = new BigInteger($this->_string_shift($key, $length), -256);
|
||||
return strlen($key) ? false : array(
|
||||
'modulus' => $realModulus,
|
||||
'publicExponent' => $modulus,
|
||||
@ -1229,9 +1227,9 @@ class Crypt_RSA
|
||||
$public = base64_decode(implode('', array_map('trim', array_slice($key, 4, $publicLength))));
|
||||
$public = substr($public, 11);
|
||||
extract(unpack('Nlength', $this->_string_shift($public, 4)));
|
||||
$components['publicExponent'] = new Math_BigInteger($this->_string_shift($public, $length), -256);
|
||||
$components['publicExponent'] = new BigInteger($this->_string_shift($public, $length), -256);
|
||||
extract(unpack('Nlength', $this->_string_shift($public, 4)));
|
||||
$components['modulus'] = new Math_BigInteger($this->_string_shift($public, $length), -256);
|
||||
$components['modulus'] = new BigInteger($this->_string_shift($public, $length), -256);
|
||||
|
||||
$privateLength = trim(preg_replace('#Private-Lines: (\d+)#', '$1', $key[$publicLength + 4]));
|
||||
$private = base64_decode(implode('', array_map('trim', array_slice($key, $publicLength + 5, $privateLength))));
|
||||
@ -1264,17 +1262,17 @@ class Crypt_RSA
|
||||
if (strlen($private) < $length) {
|
||||
return false;
|
||||
}
|
||||
$components['privateExponent'] = new Math_BigInteger($this->_string_shift($private, $length), -256);
|
||||
$components['privateExponent'] = new BigInteger($this->_string_shift($private, $length), -256);
|
||||
extract(unpack('Nlength', $this->_string_shift($private, 4)));
|
||||
if (strlen($private) < $length) {
|
||||
return false;
|
||||
}
|
||||
$components['primes'] = array(1 => new Math_BigInteger($this->_string_shift($private, $length), -256));
|
||||
$components['primes'] = array(1 => new BigInteger($this->_string_shift($private, $length), -256));
|
||||
extract(unpack('Nlength', $this->_string_shift($private, 4)));
|
||||
if (strlen($private) < $length) {
|
||||
return false;
|
||||
}
|
||||
$components['primes'][] = new Math_BigInteger($this->_string_shift($private, $length), -256);
|
||||
$components['primes'][] = new BigInteger($this->_string_shift($private, $length), -256);
|
||||
|
||||
$temp = $components['primes'][1]->subtract($this->one);
|
||||
$components['exponents'] = array(1 => $components['publicExponent']->modInverse($temp));
|
||||
@ -1285,7 +1283,7 @@ class Crypt_RSA
|
||||
if (strlen($private) < $length) {
|
||||
return false;
|
||||
}
|
||||
$components['coefficients'] = array(2 => new Math_BigInteger($this->_string_shift($private, $length), -256));
|
||||
$components['coefficients'] = array(2 => new BigInteger($this->_string_shift($private, $length), -256));
|
||||
|
||||
return $components;
|
||||
}
|
||||
@ -1357,7 +1355,7 @@ class Crypt_RSA
|
||||
function _stop_element_handler($parser, $name)
|
||||
{
|
||||
if (isset($this->current)) {
|
||||
$this->current = new Math_BigInteger(base64_decode($this->current), 256);
|
||||
$this->current = new BigInteger(base64_decode($this->current), 256);
|
||||
unset($this->current);
|
||||
}
|
||||
}
|
||||
@ -1729,8 +1727,8 @@ class Crypt_RSA
|
||||
}
|
||||
|
||||
return array(
|
||||
'min' => new Math_BigInteger($min, 256),
|
||||
'max' => new Math_BigInteger($max, 256)
|
||||
'min' => new BigInteger($min, 256),
|
||||
'max' => new BigInteger($max, 256)
|
||||
);
|
||||
}
|
||||
|
||||
@ -1894,7 +1892,7 @@ class Crypt_RSA
|
||||
* See {@link http://tools.ietf.org/html/rfc3447#section-4.1 RFC3447#section-4.1}.
|
||||
*
|
||||
* @access private
|
||||
* @param Math_BigInteger $x
|
||||
* @param \phpseclib\Math\BigInteger $x
|
||||
* @param Integer $xLen
|
||||
* @return String
|
||||
*/
|
||||
@ -1915,11 +1913,11 @@ class Crypt_RSA
|
||||
*
|
||||
* @access private
|
||||
* @param String $x
|
||||
* @return Math_BigInteger
|
||||
* @return \phpseclib\Math\BigInteger
|
||||
*/
|
||||
function _os2ip($x)
|
||||
{
|
||||
return new Math_BigInteger($x, 256);
|
||||
return new BigInteger($x, 256);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1928,8 +1926,8 @@ class Crypt_RSA
|
||||
* See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.2}.
|
||||
*
|
||||
* @access private
|
||||
* @param Math_BigInteger $x
|
||||
* @return Math_BigInteger
|
||||
* @param \phpseclib\Math\BigInteger $x
|
||||
* @return \phpseclib\Math\BigInteger
|
||||
*/
|
||||
function _exponentiate($x)
|
||||
{
|
||||
@ -1969,7 +1967,7 @@ class Crypt_RSA
|
||||
}
|
||||
}
|
||||
|
||||
$one = new Math_BigInteger(1);
|
||||
$one = new BigInteger(1);
|
||||
|
||||
$r = $one->random($one, $smallest->subtract($one));
|
||||
|
||||
@ -2006,10 +2004,10 @@ class Crypt_RSA
|
||||
* Returns $x->modPow($this->exponents[$i], $this->primes[$i])
|
||||
*
|
||||
* @access private
|
||||
* @param Math_BigInteger $x
|
||||
* @param Math_BigInteger $r
|
||||
* @param \phpseclib\Math\BigInteger $x
|
||||
* @param \phpseclib\Math\BigInteger $r
|
||||
* @param Integer $i
|
||||
* @return Math_BigInteger
|
||||
* @return \phpseclib\Math\BigInteger
|
||||
*/
|
||||
function _blind($x, $r, $i)
|
||||
{
|
||||
@ -2057,8 +2055,8 @@ class Crypt_RSA
|
||||
* See {@link http://tools.ietf.org/html/rfc3447#section-5.1.1 RFC3447#section-5.1.1}.
|
||||
*
|
||||
* @access private
|
||||
* @param Math_BigInteger $m
|
||||
* @return Math_BigInteger
|
||||
* @param \phpseclib\Math\BigInteger $m
|
||||
* @return \phpseclib\Math\BigInteger
|
||||
*/
|
||||
function _rsaep($m)
|
||||
{
|
||||
@ -2075,8 +2073,8 @@ class Crypt_RSA
|
||||
* See {@link http://tools.ietf.org/html/rfc3447#section-5.1.2 RFC3447#section-5.1.2}.
|
||||
*
|
||||
* @access private
|
||||
* @param Math_BigInteger $c
|
||||
* @return Math_BigInteger
|
||||
* @param \phpseclib\Math\BigInteger $c
|
||||
* @return \phpseclib\Math\BigInteger
|
||||
*/
|
||||
function _rsadp($c)
|
||||
{
|
||||
@ -2093,8 +2091,8 @@ class Crypt_RSA
|
||||
* See {@link http://tools.ietf.org/html/rfc3447#section-5.2.1 RFC3447#section-5.2.1}.
|
||||
*
|
||||
* @access private
|
||||
* @param Math_BigInteger $m
|
||||
* @return Math_BigInteger
|
||||
* @param \phpseclib\Math\BigInteger $m
|
||||
* @return \phpseclib\Math\BigInteger
|
||||
*/
|
||||
function _rsasp1($m)
|
||||
{
|
||||
@ -2111,8 +2109,8 @@ class Crypt_RSA
|
||||
* See {@link http://tools.ietf.org/html/rfc3447#section-5.2.2 RFC3447#section-5.2.2}.
|
||||
*
|
||||
* @access private
|
||||
* @param Math_BigInteger $s
|
||||
* @return Math_BigInteger
|
||||
* @param \phpseclib\Math\BigInteger $s
|
||||
* @return \phpseclib\Math\BigInteger
|
||||
*/
|
||||
function _rsavp1($s)
|
||||
{
|
||||
|
@ -39,6 +39,8 @@
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
use \phpseclib\Math\BigInteger;
|
||||
|
||||
/**#@+
|
||||
* Tag Classes
|
||||
*
|
||||
@ -240,22 +242,6 @@ class File_ASN1
|
||||
FILE_ASN1_TYPE_VISIBLE_STRING => 1,
|
||||
);
|
||||
|
||||
/**
|
||||
* Default Constructor.
|
||||
*
|
||||
* @access public
|
||||
*/
|
||||
function File_ASN1()
|
||||
{
|
||||
static $static_init = null;
|
||||
if (!$static_init) {
|
||||
$static_init = true;
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse BER-encoding
|
||||
*
|
||||
@ -377,7 +363,7 @@ class File_ASN1
|
||||
break;
|
||||
case FILE_ASN1_TYPE_INTEGER:
|
||||
case FILE_ASN1_TYPE_ENUMERATED:
|
||||
$current['content'] = new Math_BigInteger($content, -256);
|
||||
$current['content'] = new BigInteger($content, -256);
|
||||
break;
|
||||
case FILE_ASN1_TYPE_REAL: // not currently supported
|
||||
return false;
|
||||
@ -773,7 +759,7 @@ class File_ASN1
|
||||
case FILE_ASN1_TYPE_ENUMERATED:
|
||||
$temp = $decoded['content'];
|
||||
if (isset($mapping['implicit'])) {
|
||||
$temp = new Math_BigInteger($decoded['content'], -256);
|
||||
$temp = new BigInteger($decoded['content'], -256);
|
||||
}
|
||||
if (isset($mapping['mapping'])) {
|
||||
$temp = (int) $temp->toString();
|
||||
@ -951,7 +937,7 @@ class File_ASN1
|
||||
case FILE_ASN1_TYPE_ENUMERATED:
|
||||
if (!isset($mapping['mapping'])) {
|
||||
if (is_numeric($source)) {
|
||||
$source = new Math_BigInteger($source);
|
||||
$source = new BigInteger($source);
|
||||
}
|
||||
$value = $source->toBytes(true);
|
||||
} else {
|
||||
@ -959,7 +945,7 @@ class File_ASN1
|
||||
if ($value === false) {
|
||||
return false;
|
||||
}
|
||||
$value = new Math_BigInteger($value);
|
||||
$value = new BigInteger($value);
|
||||
$value = $value->toBytes(true);
|
||||
}
|
||||
if (!strlen($value)) {
|
||||
@ -1044,7 +1030,7 @@ class File_ASN1
|
||||
case !isset($source):
|
||||
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':
|
||||
case is_object($source) && strtolower(get_class($source)) == 'math_biginteger': // TODO
|
||||
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);
|
||||
|
@ -305,10 +305,6 @@ class File_X509
|
||||
*/
|
||||
function File_X509()
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
// Explicitly Tagged Module, 1988 Syntax
|
||||
// http://tools.ietf.org/html/rfc5280#appendix-A.1
|
||||
|
||||
@ -971,7 +967,7 @@ class File_X509
|
||||
'constant' => 0,
|
||||
'optional' => true,
|
||||
'implicit' => true,
|
||||
'default' => new Math_BigInteger(0)
|
||||
'default' => new BigInteger(0)
|
||||
) + $BaseDistance,
|
||||
'maximum' => array(
|
||||
'constant' => 1,
|
||||
@ -3197,7 +3193,7 @@ class File_X509
|
||||
|
||||
$startDate = !empty($this->startDate) ? $this->startDate : @date('D, d M Y H:i:s O');
|
||||
$endDate = !empty($this->endDate) ? $this->endDate : @date('D, d M Y H:i:s O', strtotime('+1 year'));
|
||||
$serialNumber = !empty($this->serialNumber) ? $this->serialNumber : new Math_BigInteger();
|
||||
$serialNumber = !empty($this->serialNumber) ? $this->serialNumber : new BigInteger();
|
||||
|
||||
$this->currentCert = array(
|
||||
'tbsCertificate' =>
|
||||
@ -3421,7 +3417,7 @@ class File_X509
|
||||
$crlNumber = $this->serialNumber;
|
||||
} else {
|
||||
$crlNumber = $this->getExtension('id-ce-cRLNumber');
|
||||
$crlNumber = $crlNumber !== false ? $crlNumber->add(new Math_BigInteger(1)) : null;
|
||||
$crlNumber = $crlNumber !== false ? $crlNumber->add(new BigInteger(1)) : null;
|
||||
}
|
||||
|
||||
$this->removeExtension('id-ce-authorityKeyIdentifier');
|
||||
@ -3572,7 +3568,7 @@ class File_X509
|
||||
*/
|
||||
function setSerialNumber($serial, $base = -256)
|
||||
{
|
||||
$this->serialNumber = new Math_BigInteger($serial, $base);
|
||||
$this->serialNumber = new BigInteger($serial, $base);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -4219,7 +4215,7 @@ class File_X509
|
||||
*/
|
||||
function _revokedCertificate(&$rclist, $serial, $create = false)
|
||||
{
|
||||
$serial = new Math_BigInteger($serial);
|
||||
$serial = new BigInteger($serial);
|
||||
|
||||
foreach ($rclist as $i => $rc) {
|
||||
if (!($serial->compare($rc['userCertificate']))) {
|
||||
|
@ -2267,7 +2267,7 @@ class Net_SFTP extends Net_SSH2
|
||||
switch ($flags & $key) {
|
||||
case NET_SFTP_ATTR_SIZE: // 0x00000001
|
||||
// size is represented by a 64-bit integer, so we perhaps ought to be doing the following:
|
||||
// $attr['size'] = new Math_BigInteger($this->_string_shift($response, 8), 256);
|
||||
// $attr['size'] = new \phpseclib\Math\BigInteger($this->_string_shift($response, 8), 256);
|
||||
// of course, you shouldn't be using Net_SFTP to transfer files that are in excess of 4GB
|
||||
// (0xFFFFFFFF bytes), anyway. as such, we'll just represent all file sizes that are bigger than
|
||||
// 4GB as being 4GB.
|
||||
|
@ -64,6 +64,8 @@
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
use \phpseclib\Math\BigInteger;
|
||||
|
||||
/**#@+
|
||||
* Encryption Methods
|
||||
*
|
||||
@ -517,10 +519,6 @@ class Net_SSH1
|
||||
*/
|
||||
function Net_SSH1($host, $port = 22, $timeout = 10, $cipher = NET_SSH1_CIPHER_3DES)
|
||||
{
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
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
|
||||
@ -600,21 +598,21 @@ class Net_SSH1
|
||||
$this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4);
|
||||
|
||||
$temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
|
||||
$server_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$server_key_public_exponent = new BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$this->server_key_public_exponent = $server_key_public_exponent;
|
||||
|
||||
$temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
|
||||
$server_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$server_key_public_modulus = new BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$this->server_key_public_modulus = $server_key_public_modulus;
|
||||
|
||||
$this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4);
|
||||
|
||||
$temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
|
||||
$host_key_public_exponent = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$host_key_public_exponent = new BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$this->host_key_public_exponent = $host_key_public_exponent;
|
||||
|
||||
$temp = unpack('nlen', $this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 2));
|
||||
$host_key_public_modulus = new Math_BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$host_key_public_modulus = new BigInteger($this->_string_shift($response[NET_SSH1_RESPONSE_DATA], ceil($temp['len'] / 8)), 256);
|
||||
$this->host_key_public_modulus = $host_key_public_modulus;
|
||||
|
||||
$this->_string_shift($response[NET_SSH1_RESPONSE_DATA], 4);
|
||||
@ -1377,7 +1375,7 @@ class Net_SSH1
|
||||
}
|
||||
$temp = chr(0) . chr(2) . $random . chr(0) . $m;
|
||||
|
||||
$m = new Math_BigInteger($temp, 256);
|
||||
$m = new BigInteger($temp, 256);
|
||||
$m = $m->modPow($key[0], $key[1]);
|
||||
|
||||
return $m->toBytes();
|
||||
|
@ -66,6 +66,9 @@
|
||||
* @link http://phpseclib.sourceforge.net
|
||||
*/
|
||||
|
||||
// Used to do Diffie-Hellman key exchange and DSA/RSA signature verification.
|
||||
use \phpseclib\Math\BigInteger;
|
||||
|
||||
/**#@+
|
||||
* Execution Bitmap Masks
|
||||
*
|
||||
@ -830,12 +833,6 @@ class Net_SSH2
|
||||
*/
|
||||
function Net_SSH2($host, $port = 22, $timeout = 10)
|
||||
{
|
||||
// Include Math_BigInteger
|
||||
// Used to do Diffie-Hellman key exchange and DSA/RSA signature verification.
|
||||
if (!class_exists('Math_BigInteger')) {
|
||||
include_once 'Math/BigInteger.php';
|
||||
}
|
||||
|
||||
if (!function_exists('crypt_random_string')) {
|
||||
include_once 'Crypt/Random.php';
|
||||
}
|
||||
@ -1353,8 +1350,8 @@ class Net_SSH2
|
||||
|
||||
// For both diffie-hellman-group1-sha1 and diffie-hellman-group14-sha1
|
||||
// the generator field element is 2 (decimal) and the hash function is sha1.
|
||||
$g = new Math_BigInteger(2);
|
||||
$prime = new Math_BigInteger($prime, 16);
|
||||
$g = new BigInteger(2);
|
||||
$prime = new BigInteger($prime, 16);
|
||||
$kexHash = new Crypt_Hash('sha1');
|
||||
//$q = $p->bitwise_rightShift(1);
|
||||
|
||||
@ -1365,7 +1362,7 @@ class Net_SSH2
|
||||
[VAN-OORSCHOT].
|
||||
|
||||
-- http://tools.ietf.org/html/rfc4419#section-6.2 */
|
||||
$one = new Math_BigInteger(1);
|
||||
$one = new BigInteger(1);
|
||||
$keyLength = min($keyLength, $kexHash->getLength());
|
||||
$max = $one->bitwise_leftShift(16 * $keyLength); // 2 * 8 * $keyLength
|
||||
$max = $max->subtract($one);
|
||||
@ -1401,7 +1398,7 @@ class Net_SSH2
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($response, 4));
|
||||
$fBytes = $this->_string_shift($response, $temp['length']);
|
||||
$f = new Math_BigInteger($fBytes, -256);
|
||||
$f = new BigInteger($fBytes, -256);
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($response, 4));
|
||||
$this->signature = $this->_string_shift($response, $temp['length']);
|
||||
@ -3641,19 +3638,19 @@ class Net_SSH2
|
||||
|
||||
switch ($this->signature_format) {
|
||||
case 'ssh-dss':
|
||||
$zero = new Math_BigInteger();
|
||||
$zero = new BigInteger();
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
|
||||
$p = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$p = new BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
|
||||
$q = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$q = new BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
|
||||
$g = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$g = new BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
|
||||
$y = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$y = new BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
|
||||
/* The value for 'dss_signature_blob' is encoded as a string containing
|
||||
r, followed by s (which are 160-bit integers, without lengths or
|
||||
@ -3664,8 +3661,8 @@ class Net_SSH2
|
||||
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
|
||||
}
|
||||
|
||||
$r = new Math_BigInteger($this->_string_shift($signature, 20), 256);
|
||||
$s = new Math_BigInteger($this->_string_shift($signature, 20), 256);
|
||||
$r = new BigInteger($this->_string_shift($signature, 20), 256);
|
||||
$s = new BigInteger($this->_string_shift($signature, 20), 256);
|
||||
|
||||
switch (true) {
|
||||
case $r->equals($zero):
|
||||
@ -3678,7 +3675,7 @@ class Net_SSH2
|
||||
|
||||
$w = $s->modInverse($q);
|
||||
|
||||
$u1 = $w->multiply(new Math_BigInteger(sha1($this->exchange_hash), 16));
|
||||
$u1 = $w->multiply(new BigInteger(sha1($this->exchange_hash), 16));
|
||||
list(, $u1) = $u1->divide($q);
|
||||
|
||||
$u2 = $w->multiply($r);
|
||||
@ -3699,10 +3696,10 @@ class Net_SSH2
|
||||
break;
|
||||
case 'ssh-rsa':
|
||||
$temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
|
||||
$e = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$e = new BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($server_public_host_key, 4));
|
||||
$n = new Math_BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$n = new BigInteger($this->_string_shift($server_public_host_key, $temp['length']), -256);
|
||||
$nLength = $temp['length'];
|
||||
|
||||
/*
|
||||
@ -3723,7 +3720,7 @@ class Net_SSH2
|
||||
*/
|
||||
|
||||
$temp = unpack('Nlength', $this->_string_shift($signature, 4));
|
||||
$s = new Math_BigInteger($this->_string_shift($signature, $temp['length']), 256);
|
||||
$s = new BigInteger($this->_string_shift($signature, $temp['length']), 256);
|
||||
|
||||
// validate an RSA signature per "8.2 RSASSA-PKCS1-v1_5", "5.2.2 RSAVP1", and "9.1 EMSA-PSS" in the
|
||||
// following URL:
|
||||
@ -3731,7 +3728,7 @@ class Net_SSH2
|
||||
|
||||
// also, see SSHRSA.c (rsa2_verifysig) in PuTTy's source.
|
||||
|
||||
if ($s->compare(new Math_BigInteger()) < 0 || $s->compare($n->subtract(new Math_BigInteger(1))) > 0) {
|
||||
if ($s->compare(new BigInteger()) < 0 || $s->compare($n->subtract(new BigInteger(1))) > 0) {
|
||||
user_error('Invalid signature');
|
||||
return $this->_disconnect(NET_SSH2_DISCONNECT_KEY_EXCHANGE_FAILED);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user