RSA: use public / private / protected

This commit is contained in:
terrafrost 2016-12-09 16:46:34 -06:00
parent 813b85b5b2
commit 1dfd315725
10 changed files with 197 additions and 200 deletions

View File

@ -61,7 +61,7 @@ abstract class PKCS1 extends PKCS
* @return int * @return int
* @throws \UnexpectedValueException if the block cipher mode is unsupported * @throws \UnexpectedValueException if the block cipher mode is unsupported
*/ */
public static function getEncryptionMode($mode) private static function getEncryptionMode($mode)
{ {
switch ($mode) { switch ($mode) {
case 'CBC': case 'CBC':
@ -86,7 +86,7 @@ abstract class PKCS1 extends PKCS
* @return string * @return string
* @throws \UnexpectedValueException if the encryption algorithm is unsupported * @throws \UnexpectedValueException if the encryption algorithm is unsupported
*/ */
public static function getEncryptionObject($algo) private static function getEncryptionObject($algo)
{ {
$modes = '(CBC|ECB|CFB|OFB|CTR)'; $modes = '(CBC|ECB|CFB|OFB|CTR)';
switch (true) { switch (true) {
@ -112,7 +112,7 @@ abstract class PKCS1 extends PKCS
* @param int $length * @param int $length
* @return string * @return string
*/ */
public static function generateSymmetricKey($password, $iv, $length) private static function generateSymmetricKey($password, $iv, $length)
{ {
$symkey = ''; $symkey = '';
$iv = substr($iv, 0, 8); $iv = substr($iv, 0, 8);
@ -130,7 +130,7 @@ abstract class PKCS1 extends PKCS
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
public static function load($key, $password) protected static function load($key, $password)
{ {
if (!is_string($key)) { if (!is_string($key)) {
return false; return false;
@ -186,7 +186,7 @@ abstract class PKCS1 extends PKCS
* @param string $password * @param string $password
* @return string * @return string
*/ */
public static function wrapPrivateKey($key, $type, $password) protected static function wrapPrivateKey($key, $type, $password)
{ {
if (empty($password) || !is_string($password)) { if (empty($password) || !is_string($password)) {
return "-----BEGIN $type PRIVATE KEY-----\r\n" . return "-----BEGIN $type PRIVATE KEY-----\r\n" .
@ -215,7 +215,7 @@ abstract class PKCS1 extends PKCS
* @param string $type * @param string $type
* @return string * @return string
*/ */
public static function wrapPublicKey($key, $type) protected static function wrapPublicKey($key, $type)
{ {
return "-----BEGIN $type PUBLIC KEY-----\r\n" . return "-----BEGIN $type PUBLIC KEY-----\r\n" .
chunk_split(Base64::encode($key), 64) . chunk_split(Base64::encode($key), 64) .

View File

@ -47,7 +47,7 @@ use phpseclib\Exception\UnsupportedAlgorithmException;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class PKCS8 extends PKCS abstract class PKCS8 extends PKCS
{ {
/** /**
* Default encryption algorithm * Default encryption algorithm
@ -143,7 +143,7 @@ class PKCS8 extends PKCS
* @access public * @access public
* @param string $algo * @param string $algo
*/ */
public static function getPBES1EncryptionObject($algo) private static function getPBES1EncryptionObject($algo)
{ {
$algo = preg_match('#^pbeWith(?:MD2|MD5|SHA1|SHA)And(.*?)-CBC$#', $algo, $matches) ? $algo = preg_match('#^pbeWith(?:MD2|MD5|SHA1|SHA)And(.*?)-CBC$#', $algo, $matches) ?
$matches[1] : $matches[1] :
@ -192,7 +192,7 @@ class PKCS8 extends PKCS
* @access public * @access public
* @param string $algo * @param string $algo
*/ */
public static function getPBES1Hash($algo) private static function getPBES1Hash($algo)
{ {
if (preg_match('#^pbeWith(MD2|MD5|SHA1|SHA)And.*?-CBC$#', $algo, $matches)) { if (preg_match('#^pbeWith(MD2|MD5|SHA1|SHA)And.*?-CBC$#', $algo, $matches)) {
return $matches[1] == 'SHA' ? 'sha1' : $matches[1]; return $matches[1] == 'SHA' ? 'sha1' : $matches[1];
@ -207,7 +207,7 @@ class PKCS8 extends PKCS
* @access public * @access public
* @param string $algo * @param string $algo
*/ */
public static function getPBES1KDF($algo) private static function getPBES1KDF($algo)
{ {
switch ($algo) { switch ($algo) {
case 'pbeWithMD2AndDES-CBC': case 'pbeWithMD2AndDES-CBC':
@ -228,7 +228,7 @@ class PKCS8 extends PKCS
* @access public * @access public
* @param string $algo * @param string $algo
*/ */
public static function getPBES2EncryptionObject($algo) private static function getPBES2EncryptionObject($algo)
{ {
switch ($algo) { switch ($algo) {
case 'desCBC': case 'desCBC':
@ -262,7 +262,7 @@ class PKCS8 extends PKCS
* *
* @access private * @access private
*/ */
public static function _initialize_static_variables() private static function initialize_static_variables()
{ {
if (!self::$oidsLoaded) { if (!self::$oidsLoaded) {
// from https://tools.ietf.org/html/rfc2898 // from https://tools.ietf.org/html/rfc2898
@ -318,9 +318,9 @@ class PKCS8 extends PKCS
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
public static function load($key, $password = '') protected static function load($key, $password = '')
{ {
self::_initialize_static_variables(); self::initialize_static_variables();
if (!is_string($key)) { if (!is_string($key)) {
return false; return false;
@ -482,9 +482,9 @@ class PKCS8 extends PKCS
* @param string $password * @param string $password
* @return string * @return string
*/ */
public static function wrapPrivateKey($key, $algorithm, $attr, $password) protected static function wrapPrivateKey($key, $algorithm, $attr, $password)
{ {
self::_initialize_static_variables(); self::initialize_static_variables();
$key = [ $key = [
'version' => 'v1', 'version' => 'v1',
@ -577,9 +577,9 @@ class PKCS8 extends PKCS
* @param string $key * @param string $key
* @return string * @return string
*/ */
public static function wrapPublicKey($key, $algorithm) protected static function wrapPublicKey($key, $algorithm)
{ {
self::_initialize_static_variables(); self::initialize_static_variables();
$key = [ $key = [
'publicKeyAlgorithm' => [ 'publicKeyAlgorithm' => [

View File

@ -141,7 +141,7 @@ class RSA
* @var \phpseclib\Math\BigInteger * @var \phpseclib\Math\BigInteger
* @access private * @access private
*/ */
static $zero; private static $zero;
/** /**
* Precomputed One * Precomputed One
@ -149,7 +149,7 @@ class RSA
* @var \phpseclib\Math\BigInteger * @var \phpseclib\Math\BigInteger
* @access private * @access private
*/ */
static $one; private static $one;
/** /**
* Private Key Format * Private Key Format
@ -157,7 +157,7 @@ class RSA
* @var string * @var string
* @access private * @access private
*/ */
var $privateKeyFormat = 'PKCS8'; private $privateKeyFormat = 'PKCS8';
/** /**
* Public Key Format * Public Key Format
@ -165,7 +165,7 @@ class RSA
* @var string * @var string
* @access private * @access private
*/ */
var $publicKeyFormat = 'PKCS8'; private $publicKeyFormat = 'PKCS8';
/** /**
* Modulus (ie. n) * Modulus (ie. n)
@ -173,7 +173,7 @@ class RSA
* @var \phpseclib\Math\BigInteger * @var \phpseclib\Math\BigInteger
* @access private * @access private
*/ */
var $modulus; private $modulus;
/** /**
* Modulus length * Modulus length
@ -181,7 +181,7 @@ class RSA
* @var \phpseclib\Math\BigInteger * @var \phpseclib\Math\BigInteger
* @access private * @access private
*/ */
var $k; private $k;
/** /**
* Exponent (ie. e or d) * Exponent (ie. e or d)
@ -189,7 +189,7 @@ class RSA
* @var \phpseclib\Math\BigInteger * @var \phpseclib\Math\BigInteger
* @access private * @access private
*/ */
var $exponent; private $exponent;
/** /**
* Primes for Chinese Remainder Theorem (ie. p and q) * Primes for Chinese Remainder Theorem (ie. p and q)
@ -197,7 +197,7 @@ class RSA
* @var array * @var array
* @access private * @access private
*/ */
var $primes; private $primes;
/** /**
* Exponents for Chinese Remainder Theorem (ie. dP and dQ) * Exponents for Chinese Remainder Theorem (ie. dP and dQ)
@ -205,7 +205,7 @@ class RSA
* @var array * @var array
* @access private * @access private
*/ */
var $exponents; private $exponents;
/** /**
* Coefficients for Chinese Remainder Theorem (ie. qInv) * Coefficients for Chinese Remainder Theorem (ie. qInv)
@ -213,7 +213,7 @@ class RSA
* @var array * @var array
* @access private * @access private
*/ */
var $coefficients; private $coefficients;
/** /**
* Hash name * Hash name
@ -221,7 +221,7 @@ class RSA
* @var string * @var string
* @access private * @access private
*/ */
var $hashName; private $hashName;
/** /**
* Hash function * Hash function
@ -229,7 +229,7 @@ class RSA
* @var \phpseclib\Crypt\Hash * @var \phpseclib\Crypt\Hash
* @access private * @access private
*/ */
var $hash; private $hash;
/** /**
* Length of hash function output * Length of hash function output
@ -237,7 +237,7 @@ class RSA
* @var int * @var int
* @access private * @access private
*/ */
var $hLen; private $hLen;
/** /**
* Length of salt * Length of salt
@ -245,7 +245,7 @@ class RSA
* @var int * @var int
* @access private * @access private
*/ */
var $sLen; private $sLen;
/** /**
* Hash function for the Mask Generation Function * Hash function for the Mask Generation Function
@ -253,7 +253,7 @@ class RSA
* @var \phpseclib\Crypt\Hash * @var \phpseclib\Crypt\Hash
* @access private * @access private
*/ */
var $mgfHash; private $mgfHash;
/** /**
* Length of MGF hash function output * Length of MGF hash function output
@ -261,7 +261,7 @@ class RSA
* @var int * @var int
* @access private * @access private
*/ */
var $mgfHLen; private $mgfHLen;
/** /**
* Public Exponent * Public Exponent
@ -269,7 +269,7 @@ class RSA
* @var mixed * @var mixed
* @access private * @access private
*/ */
var $publicExponent = false; private $publicExponent = false;
/** /**
* Password * Password
@ -277,7 +277,7 @@ class RSA
* @var string * @var string
* @access private * @access private
*/ */
var $password = false; private $password = false;
/** /**
* Loaded File Format * Loaded File Format
@ -285,7 +285,7 @@ class RSA
* @var string * @var string
* @access private * @access private
*/ */
var $format = false; private $format = false;
/** /**
* OpenSSL configuration file name. * OpenSSL configuration file name.
@ -296,25 +296,25 @@ class RSA
* @var mixed * @var mixed
* @access public * @access public
*/ */
static $configFile; private static $configFile;
/** /**
* Supported file formats (lower case) * Supported file formats (lower case)
* *
* @see self::_initialize_static_variables() * @see self::initialize_static_variables()
* @var array * @var array
* @access private * @access private
*/ */
static $fileFormats = false; private static $fileFormats = false;
/** /**
* Supported file formats (original case) * Supported file formats (original case)
* *
* @see self::_initialize_static_variables() * @see self::initialize_static_variables()
* @var array * @var array
* @access private * @access private
*/ */
static $origFileFormats = false; private static $origFileFormats = false;
/** /**
* Public exponent * Public exponent
@ -323,7 +323,7 @@ class RSA
* @link http://en.wikipedia.org/wiki/65537_%28number%29 * @link http://en.wikipedia.org/wiki/65537_%28number%29
* @access private * @access private
*/ */
static $defaultExponent = 65537; private static $defaultExponent = 65537;
/** /**
* Smallest Prime * Smallest Prime
@ -338,7 +338,7 @@ class RSA
* @var int * @var int
* @access private * @access private
*/ */
static $smallestPrime = 4096; private static $smallestPrime = 4096;
/** /**
* Engine * Engine
@ -348,14 +348,14 @@ class RSA
* @var int * @var int
* @access private * @access private
*/ */
static $engine = NULL; private static $engine = NULL;
/** /**
* Initialize static variables * Initialize static variables
* *
* @access private * @access private
*/ */
static function _initialize_static_variables() private static function initialize_static_variables()
{ {
if (!isset(self::$zero)) { if (!isset(self::$zero)) {
self::$zero= new BigInteger(0); self::$zero= new BigInteger(0);
@ -367,15 +367,12 @@ class RSA
foreach (glob(__DIR__ . '/RSA/*.php') as $file) { foreach (glob(__DIR__ . '/RSA/*.php') as $file) {
$name = pathinfo($file, PATHINFO_FILENAME); $name = pathinfo($file, PATHINFO_FILENAME);
$type = 'phpseclib\Crypt\RSA\\' . $name; $type = 'phpseclib\Crypt\RSA\\' . $name;
$meta = new \ReflectionClass($type);
if (!$meta->isAbstract()) {
self::$fileFormats[strtolower($name)] = $type; self::$fileFormats[strtolower($name)] = $type;
self::$origFileFormats[] = $name; self::$origFileFormats[] = $name;
} }
} }
} }
} }
}
/** /**
* The constructor * The constructor
@ -387,9 +384,9 @@ class RSA
* @return \phpseclib\Crypt\RSA * @return \phpseclib\Crypt\RSA
* @access public * @access public
*/ */
function __construct() public function __construct()
{ {
self::_initialize_static_variables(); self::initialize_static_variables();
$this->hash = new Hash('sha256'); $this->hash = new Hash('sha256');
$this->hLen = $this->hash->getLengthInBytes(); $this->hLen = $this->hash->getLengthInBytes();
@ -406,7 +403,7 @@ class RSA
* @access public * @access public
* @param int $val * @param int $val
*/ */
static function setExponent($val) public static function setExponent($val)
{ {
self::$defaultExponent = $val; self::$defaultExponent = $val;
} }
@ -419,7 +416,7 @@ class RSA
* @access public * @access public
* @param int $val * @param int $val
*/ */
static function setSmallestPrime($val) public static function setSmallestPrime($val)
{ {
self::$smallestPrime = $val; self::$smallestPrime = $val;
} }
@ -432,7 +429,7 @@ class RSA
* @access public * @access public
* @param int $val * @param int $val
*/ */
static function setEngine($val) public static function setEngine($val)
{ {
self::$engine = $val; self::$engine = $val;
} }
@ -451,9 +448,9 @@ class RSA
* @param int $timeout * @param int $timeout
* @param array $p * @param array $p
*/ */
static function createKey($bits = 2048) public static function createKey($bits = 2048)
{ {
self::_initialize_static_variables(); self::initialize_static_variables();
if (!isset(self::$engine)) { if (!isset(self::$engine)) {
switch (true) { switch (true) {
@ -605,9 +602,9 @@ class RSA
* @access public * @access public
* @return bool * @return bool
*/ */
static function addFileFormat($fullname) public static function addFileFormat($fullname)
{ {
self::_initialize_static_variables(); self::initialize_static_variables();
if (class_exists($fullname)) { if (class_exists($fullname)) {
$meta = new \ReflectionClass($path); $meta = new \ReflectionClass($path);
@ -623,9 +620,9 @@ class RSA
* @access public * @access public
* @return array * @return array
*/ */
static function getSupportedFormats() public static function getSupportedFormats()
{ {
self::_initialize_static_variables(); self::initialize_static_variables();
return self::$origFileFormats; return self::$origFileFormats;
} }
@ -639,7 +636,7 @@ class RSA
* @param string $key * @param string $key
* @param int $type optional * @param int $type optional
*/ */
function load($key, $type = false) public function load($key, $type = false)
{ {
if ($key instanceof RSA) { if ($key instanceof RSA) {
$this->privateKeyFormat = $key->privateKeyFormat; $this->privateKeyFormat = $key->privateKeyFormat;
@ -743,7 +740,7 @@ class RSA
* @access public * @access public
* @return mixed * @return mixed
*/ */
function getLoadedFormat() public function getLoadedFormat()
{ {
if ($this->format === false) { if ($this->format === false) {
return false; return false;
@ -763,7 +760,7 @@ class RSA
* @param string $type optional * @param string $type optional
* @return mixed * @return mixed
*/ */
function getPrivateKey($type = 'PKCS1') public function getPrivateKey($type = 'PKCS1')
{ {
$type = strtolower($type); $type = strtolower($type);
if (!isset(self::$fileFormats[$type])) { if (!isset(self::$fileFormats[$type])) {
@ -817,7 +814,7 @@ class RSA
* @access public * @access public
* @return int * @return int
*/ */
function getLength() public function getLength()
{ {
return !isset($this->modulus) ? 0 : $this->modulus->getLength(); return !isset($this->modulus) ? 0 : $this->modulus->getLength();
} }
@ -833,7 +830,7 @@ class RSA
* @access public * @access public
* @param string $password * @param string $password
*/ */
function setPassword($password = false) public function setPassword($password = false)
{ {
$this->password = $password; $this->password = $password;
} }
@ -859,7 +856,7 @@ class RSA
* @param int $type optional * @param int $type optional
* @return bool * @return bool
*/ */
function setPublicKey($key = false, $type = false) public function setPublicKey($key = false, $type = false)
{ {
// if a public key has already been loaded return false // if a public key has already been loaded return false
if (!empty($this->publicExponent)) { if (!empty($this->publicExponent)) {
@ -932,7 +929,7 @@ class RSA
* @param int $type optional * @param int $type optional
* @return bool * @return bool
*/ */
function setPrivateKey($key = false, $type = false) public function setPrivateKey($key = false, $type = false)
{ {
if ($key === false && !empty($this->publicExponent)) { if ($key === false && !empty($this->publicExponent)) {
$this->publicExponent = false; $this->publicExponent = false;
@ -962,7 +959,7 @@ class RSA
* @param string $type optional * @param string $type optional
* @return mixed * @return mixed
*/ */
function getPublicKey($type = 'PKCS8') public function getPublicKey($type = 'PKCS8')
{ {
$type = strtolower($type); $type = strtolower($type);
if (!isset(self::$fileFormats[$type])) { if (!isset(self::$fileFormats[$type])) {
@ -992,7 +989,7 @@ class RSA
* for invalid values. * for invalid values.
* @return mixed * @return mixed
*/ */
function getPublicKeyFingerprint($algorithm = 'md5') public function getPublicKeyFingerprint($algorithm = 'md5')
{ {
if (empty($this->modulus) || empty($this->publicExponent)) { if (empty($this->modulus) || empty($this->publicExponent)) {
return false; return false;
@ -1026,7 +1023,7 @@ class RSA
* @param string $type optional * @param string $type optional
* @return mixed * @return mixed
*/ */
function _getPrivatePublicKey($type = 'PKCS8') private function getPrivatePublicKey($type = 'PKCS8')
{ {
$type = strtolower($type); $type = strtolower($type);
if (!isset(self::$fileFormats[$type])) { if (!isset(self::$fileFormats[$type])) {
@ -1055,14 +1052,14 @@ class RSA
* @access public * @access public
* @return string * @return string
*/ */
function __toString() public function __toString()
{ {
try { try {
$key = $this->getPrivateKey($this->privateKeyFormat); $key = $this->getPrivateKey($this->privateKeyFormat);
if (is_string($key)) { if (is_string($key)) {
return $key; return $key;
} }
$key = $this->_getPrivatePublicKey($this->publicKeyFormat); $key = $this->getPrivatePublicKey($this->publicKeyFormat);
return is_string($key) ? $key : ''; return is_string($key) ? $key : '';
} catch (\Exception $e) { } catch (\Exception $e) {
return ''; return '';
@ -1075,7 +1072,7 @@ class RSA
* @access public * @access public
* @return \phpseclib\Crypt\RSA * @return \phpseclib\Crypt\RSA
*/ */
function __clone() public function __clone()
{ {
$key = new RSA(); $key = new RSA();
$key->load($this); $key->load($this);
@ -1089,7 +1086,7 @@ class RSA
* @access public * @access public
* @param string $format * @param string $format
*/ */
function setPrivateKeyFormat($format) public function setPrivateKeyFormat($format)
{ {
$this->privateKeyFormat = $format; $this->privateKeyFormat = $format;
} }
@ -1101,7 +1098,7 @@ class RSA
* @access public * @access public
* @param string $format * @param string $format
*/ */
function setPublicKeyFormat($format) public function setPublicKeyFormat($format)
{ {
$this->publicKeyFormat = $format; $this->publicKeyFormat = $format;
} }
@ -1115,7 +1112,7 @@ class RSA
* @access public * @access public
* @param string $hash * @param string $hash
*/ */
function setHash($hash) public function setHash($hash)
{ {
// \phpseclib\Crypt\Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. // \phpseclib\Crypt\Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example.
switch ($hash) { switch ($hash) {
@ -1147,7 +1144,7 @@ class RSA
* @access public * @access public
* @param string $hash * @param string $hash
*/ */
function setMGFHash($hash) public function setMGFHash($hash)
{ {
// \phpseclib\Crypt\Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example. // \phpseclib\Crypt\Hash supports algorithms that PKCS#1 doesn't support. md5-96 and sha1-96, for example.
switch ($hash) { switch ($hash) {
@ -1179,7 +1176,7 @@ class RSA
* @access public * @access public
* @param int $format * @param int $format
*/ */
function setSaltLength($sLen) public function setSaltLength($sLen)
{ {
$this->sLen = $sLen; $this->sLen = $sLen;
} }
@ -1194,7 +1191,7 @@ class RSA
* @param int $xLen * @param int $xLen
* @return bool|string * @return bool|string
*/ */
function _i2osp($x, $xLen) private function i2osp($x, $xLen)
{ {
if ($x === false) { if ($x === false) {
return false; return false;
@ -1215,7 +1212,7 @@ class RSA
* @param string $x * @param string $x
* @return \phpseclib\Math\BigInteger * @return \phpseclib\Math\BigInteger
*/ */
function _os2ip($x) private function os2ip($x)
{ {
return new BigInteger($x, 256); return new BigInteger($x, 256);
} }
@ -1229,7 +1226,7 @@ class RSA
* @param \phpseclib\Math\BigInteger $x * @param \phpseclib\Math\BigInteger $x
* @return \phpseclib\Math\BigInteger * @return \phpseclib\Math\BigInteger
*/ */
function _exponentiate($x) private function exponentiate($x)
{ {
switch (true) { switch (true) {
case empty($this->primes): case empty($this->primes):
@ -1276,8 +1273,8 @@ class RSA
$r = BigInteger::randomRange(self::$one, $smallest->subtract(self::$one)); $r = BigInteger::randomRange(self::$one, $smallest->subtract(self::$one));
$m_i = [ $m_i = [
1 => $this->_blind($x, $r, 1), 1 => $this->blind($x, $r, 1),
2 => $this->_blind($x, $r, 2) 2 => $this->blind($x, $r, 2)
]; ];
$h = $m_i[1]->subtract($m_i[2]); $h = $m_i[1]->subtract($m_i[2]);
$h = $h->multiply($this->coefficients[2]); $h = $h->multiply($this->coefficients[2]);
@ -1286,7 +1283,7 @@ class RSA
$r = $this->primes[1]; $r = $this->primes[1];
for ($i = 3; $i <= $num_primes; $i++) { for ($i = 3; $i <= $num_primes; $i++) {
$m_i = $this->_blind($x, $r, $i); $m_i = $this->blind($x, $r, $i);
$r = $r->multiply($this->primes[$i - 1]); $r = $r->multiply($this->primes[$i - 1]);
@ -1313,7 +1310,7 @@ class RSA
* @param int $i * @param int $i
* @return \phpseclib\Math\BigInteger * @return \phpseclib\Math\BigInteger
*/ */
function _blind($x, $r, $i) private function blind($x, $r, $i)
{ {
$x = $x->multiply($r->modPow($this->publicExponent, $this->primes[$i])); $x = $x->multiply($r->modPow($this->publicExponent, $this->primes[$i]));
$x = $x->modPow($this->exponents[$i], $this->primes[$i]); $x = $x->modPow($this->exponents[$i], $this->primes[$i]);
@ -1339,7 +1336,7 @@ class RSA
* @param string $y * @param string $y
* @return bool * @return bool
*/ */
static function _equals($x, $y) private static function equals($x, $y)
{ {
if (strlen($x) != strlen($y)) { if (strlen($x) != strlen($y)) {
return false; return false;
@ -1362,12 +1359,12 @@ class RSA
* @param \phpseclib\Math\BigInteger $m * @param \phpseclib\Math\BigInteger $m
* @return bool|\phpseclib\Math\BigInteger * @return bool|\phpseclib\Math\BigInteger
*/ */
function _rsaep($m) private function rsaep($m)
{ {
if ($m->compare(self::$zero) < 0 || $m->compare($this->modulus) > 0) { if ($m->compare(self::$zero) < 0 || $m->compare($this->modulus) > 0) {
return false; return false;
} }
return $this->_exponentiate($m); return $this->exponentiate($m);
} }
/** /**
@ -1379,12 +1376,12 @@ class RSA
* @param \phpseclib\Math\BigInteger $c * @param \phpseclib\Math\BigInteger $c
* @return bool|\phpseclib\Math\BigInteger * @return bool|\phpseclib\Math\BigInteger
*/ */
function _rsadp($c) private function rsadp($c)
{ {
if ($c->compare(self::$zero) < 0 || $c->compare($this->modulus) > 0) { if ($c->compare(self::$zero) < 0 || $c->compare($this->modulus) > 0) {
return false; return false;
} }
return $this->_exponentiate($c); return $this->exponentiate($c);
} }
/** /**
@ -1396,12 +1393,12 @@ class RSA
* @param \phpseclib\Math\BigInteger $m * @param \phpseclib\Math\BigInteger $m
* @return bool|\phpseclib\Math\BigInteger * @return bool|\phpseclib\Math\BigInteger
*/ */
function _rsasp1($m) private function rsasp1($m)
{ {
if ($m->compare(self::$zero) < 0 || $m->compare($this->modulus) > 0) { if ($m->compare(self::$zero) < 0 || $m->compare($this->modulus) > 0) {
return false; return false;
} }
return $this->_exponentiate($m); return $this->exponentiate($m);
} }
/** /**
@ -1413,12 +1410,12 @@ class RSA
* @param \phpseclib\Math\BigInteger $s * @param \phpseclib\Math\BigInteger $s
* @return bool|\phpseclib\Math\BigInteger * @return bool|\phpseclib\Math\BigInteger
*/ */
function _rsavp1($s) private function rsavp1($s)
{ {
if ($s->compare(self::$zero) < 0 || $s->compare($this->modulus) > 0) { if ($s->compare(self::$zero) < 0 || $s->compare($this->modulus) > 0) {
return false; return false;
} }
return $this->_exponentiate($s); return $this->exponentiate($s);
} }
/** /**
@ -1431,7 +1428,7 @@ class RSA
* @param int $mgfLen * @param int $mgfLen
* @return string * @return string
*/ */
function _mgf1($mgfSeed, $maskLen) private function mgf1($mgfSeed, $maskLen)
{ {
// if $maskLen would yield strings larger than 4GB, PKCS#1 suggests a "Mask too long" error be output. // if $maskLen would yield strings larger than 4GB, PKCS#1 suggests a "Mask too long" error be output.
@ -1457,7 +1454,7 @@ class RSA
* @throws \OutOfBoundsException if strlen($m) > $this->k - 2 * $this->hLen - 2 * @throws \OutOfBoundsException if strlen($m) > $this->k - 2 * $this->hLen - 2
* @return string * @return string
*/ */
function _rsaes_oaep_encrypt($m, $l = '') private function rsaes_oaep_encrypt($m, $l = '')
{ {
$mLen = strlen($m); $mLen = strlen($m);
@ -1476,17 +1473,17 @@ class RSA
$ps = str_repeat(chr(0), $this->k - $mLen - 2 * $this->hLen - 2); $ps = str_repeat(chr(0), $this->k - $mLen - 2 * $this->hLen - 2);
$db = $lHash . $ps . chr(1) . $m; $db = $lHash . $ps . chr(1) . $m;
$seed = Random::string($this->hLen); $seed = Random::string($this->hLen);
$dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); $dbMask = $this->mgf1($seed, $this->k - $this->hLen - 1);
$maskedDB = $db ^ $dbMask; $maskedDB = $db ^ $dbMask;
$seedMask = $this->_mgf1($maskedDB, $this->hLen); $seedMask = $this->mgf1($maskedDB, $this->hLen);
$maskedSeed = $seed ^ $seedMask; $maskedSeed = $seed ^ $seedMask;
$em = chr(0) . $maskedSeed . $maskedDB; $em = chr(0) . $maskedSeed . $maskedDB;
// RSA encryption // RSA encryption
$m = $this->_os2ip($em); $m = $this->os2ip($em);
$c = $this->_rsaep($m); $c = $this->rsaep($m);
$c = $this->_i2osp($c, $this->k); $c = $this->i2osp($c, $this->k);
// Output the ciphertext C // Output the ciphertext C
@ -1519,7 +1516,7 @@ class RSA
* @param string $l * @param string $l
* @return bool|string * @return bool|string
*/ */
function _rsaes_oaep_decrypt($c, $l = '') private function rsaes_oaep_decrypt($c, $l = '')
{ {
// Length checking // Length checking
@ -1532,9 +1529,9 @@ class RSA
// RSA decryption // RSA decryption
$c = $this->_os2ip($c); $c = $this->os2ip($c);
$m = $this->_rsadp($c); $m = $this->rsadp($c);
$em = $this->_i2osp($m, $this->k); $em = $this->i2osp($m, $this->k);
if ($em === false) { if ($em === false) {
return false; return false;
} }
@ -1545,13 +1542,13 @@ class RSA
$y = ord($em[0]); $y = ord($em[0]);
$maskedSeed = substr($em, 1, $this->hLen); $maskedSeed = substr($em, 1, $this->hLen);
$maskedDB = substr($em, $this->hLen + 1); $maskedDB = substr($em, $this->hLen + 1);
$seedMask = $this->_mgf1($maskedDB, $this->hLen); $seedMask = $this->mgf1($maskedDB, $this->hLen);
$seed = $maskedSeed ^ $seedMask; $seed = $maskedSeed ^ $seedMask;
$dbMask = $this->_mgf1($seed, $this->k - $this->hLen - 1); $dbMask = $this->mgf1($seed, $this->k - $this->hLen - 1);
$db = $maskedDB ^ $dbMask; $db = $maskedDB ^ $dbMask;
$lHash2 = substr($db, 0, $this->hLen); $lHash2 = substr($db, 0, $this->hLen);
$m = substr($db, $this->hLen); $m = substr($db, $this->hLen);
if (!self::_equals($lHash, $lHash2)) { if (!self::equals($lHash, $lHash2)) {
return false; return false;
} }
$m = ltrim($m, chr(0)); $m = ltrim($m, chr(0));
@ -1574,15 +1571,15 @@ class RSA
* @return bool|string * @return bool|string
* @throws \OutOfBoundsException if strlen($m) > $this->k * @throws \OutOfBoundsException if strlen($m) > $this->k
*/ */
function _raw_encrypt($m) private function raw_encrypt($m)
{ {
if (strlen($m) > $this->k) { if (strlen($m) > $this->k) {
throw new \OutOfBoundsException('Message too long'); throw new \OutOfBoundsException('Message too long');
} }
$temp = $this->_os2ip($m); $temp = $this->os2ip($m);
$temp = $this->_rsaep($temp); $temp = $this->rsaep($temp);
return $this->_i2osp($temp, $this->k); return $this->i2osp($temp, $this->k);
} }
/** /**
@ -1596,7 +1593,7 @@ class RSA
* @throws \OutOfBoundsException if strlen($m) > $this->k - 11 * @throws \OutOfBoundsException if strlen($m) > $this->k - 11
* @return bool|string * @return bool|string
*/ */
function _rsaes_pkcs1_v1_5_encrypt($m, $pkcs15_compat = false) private function rsaes_pkcs1_v1_5_encrypt($m, $pkcs15_compat = false)
{ {
$mLen = strlen($m); $mLen = strlen($m);
@ -1625,9 +1622,9 @@ class RSA
$em = chr(0) . chr($type) . $ps . chr(0) . $m; $em = chr(0) . chr($type) . $ps . chr(0) . $m;
// RSA encryption // RSA encryption
$m = $this->_os2ip($em); $m = $this->os2ip($em);
$c = $this->_rsaep($m); $c = $this->rsaep($m);
$c = $this->_i2osp($c, $this->k); $c = $this->i2osp($c, $this->k);
// Output the ciphertext C // Output the ciphertext C
@ -1654,7 +1651,7 @@ class RSA
* @param string $c * @param string $c
* @return bool|string * @return bool|string
*/ */
function _rsaes_pkcs1_v1_5_decrypt($c) private function rsaes_pkcs1_v1_5_decrypt($c)
{ {
// Length checking // Length checking
@ -1664,9 +1661,9 @@ class RSA
// RSA decryption // RSA decryption
$c = $this->_os2ip($c); $c = $this->os2ip($c);
$m = $this->_rsadp($c); $m = $this->rsadp($c);
$em = $this->_i2osp($m, $this->k); $em = $this->i2osp($m, $this->k);
if ($em === false) { if ($em === false) {
return false; return false;
} }
@ -1699,7 +1696,7 @@ class RSA
* @throws \RuntimeException on encoding error * @throws \RuntimeException on encoding error
* @param int $emBits * @param int $emBits
*/ */
function _emsa_pss_encode($m, $emBits) private function emsa_pss_encode($m, $emBits)
{ {
// if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error
// be output. // be output.
@ -1717,7 +1714,7 @@ class RSA
$h = $this->hash->hash($m2); $h = $this->hash->hash($m2);
$ps = str_repeat(chr(0), $emLen - $sLen - $this->hLen - 2); $ps = str_repeat(chr(0), $emLen - $sLen - $this->hLen - 2);
$db = $ps . chr(1) . $salt; $db = $ps . chr(1) . $salt;
$dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); $dbMask = $this->mgf1($h, $emLen - $this->hLen - 1);
$maskedDB = $db ^ $dbMask; $maskedDB = $db ^ $dbMask;
$maskedDB[0] = ~chr(0xFF << ($emBits & 7)) & $maskedDB[0]; $maskedDB[0] = ~chr(0xFF << ($emBits & 7)) & $maskedDB[0];
$em = $maskedDB . $h . chr(0xBC); $em = $maskedDB . $h . chr(0xBC);
@ -1736,7 +1733,7 @@ class RSA
* @param int $emBits * @param int $emBits
* @return string * @return string
*/ */
function _emsa_pss_verify($m, $em, $emBits) private function emsa_pss_verify($m, $em, $emBits)
{ {
// if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error // if $m is larger than two million terrabytes and you're using sha1, PKCS#1 suggests a "Label too long" error
// be output. // be output.
@ -1759,7 +1756,7 @@ class RSA
if ((~$maskedDB[0] & $temp) != $temp) { if ((~$maskedDB[0] & $temp) != $temp) {
return false; return false;
} }
$dbMask = $this->_mgf1($h, $emLen - $this->hLen - 1); $dbMask = $this->mgf1($h, $emLen - $this->hLen - 1);
$db = $maskedDB ^ $dbMask; $db = $maskedDB ^ $dbMask;
$db[0] = ~chr(0xFF << ($emBits & 7)) & $db[0]; $db[0] = ~chr(0xFF << ($emBits & 7)) & $db[0];
$temp = $emLen - $this->hLen - $sLen - 2; $temp = $emLen - $this->hLen - $sLen - 2;
@ -1769,7 +1766,7 @@ class RSA
$salt = substr($db, $temp + 1); // should be $sLen long $salt = substr($db, $temp + 1); // should be $sLen long
$m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt; $m2 = "\0\0\0\0\0\0\0\0" . $mHash . $salt;
$h2 = $this->hash->hash($m2); $h2 = $this->hash->hash($m2);
return self::_equals($h, $h2); return self::equals($h, $h2);
} }
/** /**
@ -1781,17 +1778,17 @@ class RSA
* @param string $m * @param string $m
* @return bool|string * @return bool|string
*/ */
function _rsassa_pss_sign($m) private function rsassa_pss_sign($m)
{ {
// EMSA-PSS encoding // EMSA-PSS encoding
$em = $this->_emsa_pss_encode($m, 8 * $this->k - 1); $em = $this->emsa_pss_encode($m, 8 * $this->k - 1);
// RSA signature // RSA signature
$m = $this->_os2ip($em); $m = $this->os2ip($em);
$s = $this->_rsasp1($m); $s = $this->rsasp1($m);
$s = $this->_i2osp($s, $this->k); $s = $this->i2osp($s, $this->k);
// Output the signature S // Output the signature S
@ -1808,7 +1805,7 @@ class RSA
* @param string $s * @param string $s
* @return bool|string * @return bool|string
*/ */
function _rsassa_pss_verify($m, $s) private function rsassa_pss_verify($m, $s)
{ {
// Length checking // Length checking
@ -1820,16 +1817,16 @@ class RSA
$modBits = 8 * $this->k; $modBits = 8 * $this->k;
$s2 = $this->_os2ip($s); $s2 = $this->os2ip($s);
$m2 = $this->_rsavp1($s2); $m2 = $this->rsavp1($s2);
$em = $this->_i2osp($m2, $modBits >> 3); $em = $this->i2osp($m2, $modBits >> 3);
if ($em === false) { if ($em === false) {
return false; return false;
} }
// EMSA-PSS verification // EMSA-PSS verification
return $this->_emsa_pss_verify($m, $em, $modBits - 1); return $this->emsa_pss_verify($m, $em, $modBits - 1);
} }
/** /**
@ -1843,7 +1840,7 @@ class RSA
* @throws \LengthException if the intended encoded message length is too short * @throws \LengthException if the intended encoded message length is too short
* @return string * @return string
*/ */
function _emsa_pkcs1_v1_5_encode($m, $emLen) private function emsa_pkcs1_v1_5_encode($m, $emLen)
{ {
$h = $this->hash->hash($m); $h = $this->hash->hash($m);
@ -1901,23 +1898,23 @@ class RSA
* @throws \LengthException if the RSA modulus is too short * @throws \LengthException if the RSA modulus is too short
* @return bool|string * @return bool|string
*/ */
function _rsassa_pkcs1_v1_5_sign($m) private function rsassa_pkcs1_v1_5_sign($m)
{ {
// EMSA-PKCS1-v1_5 encoding // EMSA-PKCS1-v1_5 encoding
// If the encoding operation outputs "intended encoded message length too short," output "RSA modulus // If the encoding operation outputs "intended encoded message length too short," output "RSA modulus
// too short" and stop. // too short" and stop.
try { try {
$em = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); $em = $this->emsa_pkcs1_v1_5_encode($m, $this->k);
} catch (\LengthException $e) { } catch (\LengthException $e) {
throw new \LengthException('RSA modulus too short'); throw new \LengthException('RSA modulus too short');
} }
// RSA signature // RSA signature
$m = $this->_os2ip($em); $m = $this->os2ip($em);
$s = $this->_rsasp1($m); $s = $this->rsasp1($m);
$s = $this->_i2osp($s, $this->k); $s = $this->i2osp($s, $this->k);
// Output the signature S // Output the signature S
@ -1935,7 +1932,7 @@ class RSA
* @throws \LengthException if the RSA modulus is too short * @throws \LengthException if the RSA modulus is too short
* @return bool * @return bool
*/ */
function _rsassa_pkcs1_v1_5_verify($m, $s) private function rsassa_pkcs1_v1_5_verify($m, $s)
{ {
// Length checking // Length checking
@ -1945,9 +1942,9 @@ class RSA
// RSA verification // RSA verification
$s = $this->_os2ip($s); $s = $this->os2ip($s);
$m2 = $this->_rsavp1($s); $m2 = $this->rsavp1($s);
$em = $this->_i2osp($m2, $this->k); $em = $this->i2osp($m2, $this->k);
if ($em === false) { if ($em === false) {
return false; return false;
} }
@ -1957,13 +1954,13 @@ class RSA
// If the encoding operation outputs "intended encoded message length too short," output "RSA modulus // If the encoding operation outputs "intended encoded message length too short," output "RSA modulus
// too short" and stop. // too short" and stop.
try { try {
$em2 = $this->_emsa_pkcs1_v1_5_encode($m, $this->k); $em2 = $this->emsa_pkcs1_v1_5_encode($m, $this->k);
} catch (\LengthException $e) { } catch (\LengthException $e) {
throw new \LengthException('RSA modulus too short'); throw new \LengthException('RSA modulus too short');
} }
// Compare // Compare
return self::_equals($em, $em2); return self::equals($em, $em2);
} }
/** /**
@ -1984,7 +1981,7 @@ class RSA
* @param string $s * @param string $s
* @return bool * @return bool
*/ */
function _rsassa_pkcs1_v1_5_relaxed_verify($m, $s) private function rsassa_pkcs1_v1_5_relaxed_verify($m, $s)
{ {
// Length checking // Length checking
@ -1994,12 +1991,12 @@ class RSA
// RSA verification // RSA verification
$s = $this->_os2ip($s); $s = $this->os2ip($s);
$m2 = $this->_rsavp1($s); $m2 = $this->rsavp1($s);
if ($m2 === false) { if ($m2 === false) {
return false; return false;
} }
$em = $this->_i2osp($m2, $this->k); $em = $this->i2osp($m2, $this->k);
if ($em === false) { if ($em === false) {
return false; return false;
} }
@ -2053,7 +2050,7 @@ class RSA
$em = $hash->hash($m); $em = $hash->hash($m);
$em2 = $decoded['digest']; $em2 = $decoded['digest'];
return self::_equals($em, $em2); return self::equals($em, $em2);
} }
/** /**
@ -2070,17 +2067,17 @@ class RSA
* @return bool|string * @return bool|string
* @throws \LengthException if the RSA modulus is too short * @throws \LengthException if the RSA modulus is too short
*/ */
function encrypt($plaintext, $padding = self::PADDING_OAEP) public function encrypt($plaintext, $padding = self::PADDING_OAEP)
{ {
switch ($padding) { switch ($padding) {
case self::PADDING_NONE: case self::PADDING_NONE:
return $this->_raw_encrypt($plaintext); return $this->raw_encrypt($plaintext);
case self::PADDING_PKCS15_COMPAT: case self::PADDING_PKCS15_COMPAT:
case self::PADDING_PKCS1: case self::PADDING_PKCS1:
return $this->_rsaes_pkcs1_v1_5_encrypt($plaintext, $padding == self::PADDING_PKCS15_COMPAT); return $this->rsaes_pkcs1_v1_5_encrypt($plaintext, $padding == self::PADDING_PKCS15_COMPAT);
//case self::PADDING_OAEP: //case self::PADDING_OAEP:
default: default:
return $this->_rsaes_oaep_encrypt($plaintext); return $this->rsaes_oaep_encrypt($plaintext);
} }
} }
@ -2093,16 +2090,16 @@ class RSA
* @param int $padding optional * @param int $padding optional
* @return bool|string * @return bool|string
*/ */
function decrypt($ciphertext, $padding = self::PADDING_OAEP) public function decrypt($ciphertext, $padding = self::PADDING_OAEP)
{ {
switch ($padding) { switch ($padding) {
case self::PADDING_NONE: case self::PADDING_NONE:
return $this->_raw_encrypt($ciphertext); return $this->raw_encrypt($ciphertext);
case self::PADDING_PKCS1: case self::PADDING_PKCS1:
return $this->_rsaes_pkcs1_v1_5_decrypt($ciphertext); return $this->rsaes_pkcs1_v1_5_decrypt($ciphertext);
//case self::PADDING_OAEP: //case self::PADDING_OAEP:
default: default:
return $this->_rsaes_oaep_decrypt($ciphertext); return $this->rsaes_oaep_decrypt($ciphertext);
} }
} }
@ -2115,7 +2112,7 @@ class RSA
* @param int $padding optional * @param int $padding optional
* @return string * @return string
*/ */
function sign($message, $padding = self::PADDING_PSS) public function sign($message, $padding = self::PADDING_PSS)
{ {
if (empty($this->modulus) || empty($this->exponent)) { if (empty($this->modulus) || empty($this->exponent)) {
return false; return false;
@ -2124,10 +2121,10 @@ class RSA
switch ($padding) { switch ($padding) {
case self::PADDING_PKCS1: case self::PADDING_PKCS1:
case self::PADDING_RELAXED_PKCS1: case self::PADDING_RELAXED_PKCS1:
return $this->_rsassa_pkcs1_v1_5_sign($message); return $this->rsassa_pkcs1_v1_5_sign($message);
//case self::PADDING_PSS: //case self::PADDING_PSS:
default: default:
return $this->_rsassa_pss_sign($message); return $this->rsassa_pss_sign($message);
} }
} }
@ -2141,7 +2138,7 @@ class RSA
* @param int $padding optional * @param int $padding optional
* @return bool * @return bool
*/ */
function verify($message, $signature, $padding = self::PADDING_PSS) public function verify($message, $signature, $padding = self::PADDING_PSS)
{ {
if (empty($this->modulus) || empty($this->exponent)) { if (empty($this->modulus) || empty($this->exponent)) {
return false; return false;
@ -2149,12 +2146,12 @@ class RSA
switch ($padding) { switch ($padding) {
case self::PADDING_RELAXED_PKCS1: case self::PADDING_RELAXED_PKCS1:
return $this->_rsassa_pkcs1_v1_5_relaxed_verify($message, $signature); return $this->rsassa_pkcs1_v1_5_relaxed_verify($message, $signature);
case self::PADDING_PKCS1: case self::PADDING_PKCS1:
return $this->_rsassa_pkcs1_v1_5_verify($message, $signature); return $this->rsassa_pkcs1_v1_5_verify($message, $signature);
//case self::PADDING_PSS: //case self::PADDING_PSS:
default: default:
return $this->_rsassa_pss_verify($message, $signature); return $this->rsassa_pss_verify($message, $signature);
} }
} }
} }

View File

@ -30,7 +30,7 @@ use phpseclib\Common\Functions\Strings;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class MSBLOB abstract class MSBLOB
{ {
/**#@+ /**#@+
* @access private * @access private
@ -73,7 +73,7 @@ class MSBLOB
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
static function load($key, $password = '') public static function load($key, $password = '')
{ {
if (!is_string($key)) { if (!is_string($key)) {
return false; return false;
@ -171,7 +171,7 @@ class MSBLOB
* @param string $password optional * @param string $password optional
* @return string * @return string
*/ */
static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '') public static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '')
{ {
$n = strrev($n->toBytes()); $n = strrev($n->toBytes());
$e = str_pad(strrev($e->toBytes()), 4, "\0"); $e = str_pad(strrev($e->toBytes()), 4, "\0");
@ -196,7 +196,7 @@ class MSBLOB
* @param \phpseclib\Math\BigInteger $e * @param \phpseclib\Math\BigInteger $e
* @return string * @return string
*/ */
static function savePublicKey(BigInteger $n, BigInteger $e) public static function savePublicKey(BigInteger $n, BigInteger $e)
{ {
$n = strrev($n->toBytes()); $n = strrev($n->toBytes());
$e = str_pad(strrev($e->toBytes()), 4, "\0"); $e = str_pad(strrev($e->toBytes()), 4, "\0");

View File

@ -28,7 +28,7 @@ use phpseclib\Common\Functions\Strings;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class OpenSSH abstract class OpenSSH
{ {
/** /**
* Default comment * Default comment
@ -36,7 +36,7 @@ class OpenSSH
* @var string * @var string
* @access private * @access private
*/ */
static $comment = 'phpseclib-generated-key'; private static $comment = 'phpseclib-generated-key';
/** /**
* Sets the default comment * Sets the default comment
@ -44,7 +44,7 @@ class OpenSSH
* @access public * @access public
* @param string $comment * @param string $comment
*/ */
static function setComment($comment) public static function setComment($comment)
{ {
self::$comment = str_replace(["\r", "\n"], '', $comment); self::$comment = str_replace(["\r", "\n"], '', $comment);
} }
@ -57,7 +57,7 @@ class OpenSSH
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
static function load($key, $password = '') public static function load($key, $password = '')
{ {
if (!is_string($key)) { if (!is_string($key)) {
return false; return false;
@ -109,7 +109,7 @@ class OpenSSH
* @param \phpseclib\Math\BigInteger $e * @param \phpseclib\Math\BigInteger $e
* @return string * @return string
*/ */
static function savePublicKey(BigInteger $n, BigInteger $e) public static function savePublicKey(BigInteger $n, BigInteger $e)
{ {
$publicExponent = $e->toBytes(true); $publicExponent = $e->toBytes(true);
$modulus = $n->toBytes(true); $modulus = $n->toBytes(true);

View File

@ -36,7 +36,7 @@ use phpseclib\File\ASN1\Maps;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class PKCS1 extends Progenitor abstract class PKCS1 extends Progenitor
{ {
/** /**
* Break a public or private key down into its constituent components * Break a public or private key down into its constituent components
@ -46,7 +46,7 @@ class PKCS1 extends Progenitor
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
static function load($key, $password = '') public static function load($key, $password = '')
{ {
if (!is_string($key)) { if (!is_string($key)) {
return false; return false;
@ -102,7 +102,7 @@ class PKCS1 extends Progenitor
* @param string $password optional * @param string $password optional
* @return string * @return string
*/ */
static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '') public static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '')
{ {
$num_primes = count($primes); $num_primes = count($primes);
$key = [ $key = [
@ -137,7 +137,7 @@ class PKCS1 extends Progenitor
* @param \phpseclib\Math\BigInteger $e * @param \phpseclib\Math\BigInteger $e
* @return string * @return string
*/ */
static function savePublicKey(BigInteger $n, BigInteger $e) public static function savePublicKey(BigInteger $n, BigInteger $e)
{ {
$key = [ $key = [
'modulus' => $n, 'modulus' => $n,

View File

@ -38,7 +38,7 @@ use phpseclib\File\ASN1;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class PKCS8 extends Progenitor abstract class PKCS8 extends Progenitor
{ {
/** /**
* Break a public or private key down into its constituent components * Break a public or private key down into its constituent components
@ -48,7 +48,7 @@ class PKCS8 extends Progenitor
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
static function load($key, $password = '') public static function load($key, $password = '')
{ {
$components = ['isPublicKey' => strpos($key, 'PUBLIC') !== false]; $components = ['isPublicKey' => strpos($key, 'PUBLIC') !== false];
@ -85,7 +85,7 @@ class PKCS8 extends Progenitor
* @param string $password optional * @param string $password optional
* @return string * @return string
*/ */
static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '') public static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '')
{ {
$key = PKCS1::savePrivateKey($n, $e, $d, $primes, $exponents, $coefficients); $key = PKCS1::savePrivateKey($n, $e, $d, $primes, $exponents, $coefficients);
$key = ASN1::extractBER($key); $key = ASN1::extractBER($key);
@ -100,7 +100,7 @@ class PKCS8 extends Progenitor
* @param \phpseclib\Math\BigInteger $e * @param \phpseclib\Math\BigInteger $e
* @return string * @return string
*/ */
static function savePublicKey(BigInteger $n, BigInteger $e) public static function savePublicKey(BigInteger $n, BigInteger $e)
{ {
$key = PKCS1::savePublicKey($n, $e); $key = PKCS1::savePublicKey($n, $e);
$key = ASN1::extractBER($key); $key = ASN1::extractBER($key);

View File

@ -29,7 +29,7 @@ use phpseclib\Common\Functions\Strings;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class PuTTY abstract class PuTTY
{ {
/** /**
* Default comment * Default comment
@ -37,7 +37,7 @@ class PuTTY
* @var string * @var string
* @access private * @access private
*/ */
static $comment = 'phpseclib-generated-key'; private static $comment = 'phpseclib-generated-key';
/** /**
* Sets the default comment * Sets the default comment
@ -45,7 +45,7 @@ class PuTTY
* @access public * @access public
* @param string $comment * @param string $comment
*/ */
static function setComment($comment) public static function setComment($comment)
{ {
self::$comment = str_replace(["\r", "\n"], '', $comment); self::$comment = str_replace(["\r", "\n"], '', $comment);
} }
@ -59,7 +59,7 @@ class PuTTY
* @param int $length * @param int $length
* @return string * @return string
*/ */
static function generateSymmetricKey($password, $length) public static function generateSymmetricKey($password, $length)
{ {
$symkey = ''; $symkey = '';
$sequence = 0; $sequence = 0;
@ -78,7 +78,7 @@ class PuTTY
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
static function load($key, $password = '') public static function load($key, $password = '')
{ {
if (!is_string($key)) { if (!is_string($key)) {
return false; return false;
@ -183,7 +183,7 @@ class PuTTY
* @param string $password optional * @param string $password optional
* @return string * @return string
*/ */
static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '') public static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '')
{ {
if (count($primes) != 2) { if (count($primes) != 2) {
return false; return false;
@ -271,7 +271,7 @@ class PuTTY
* @param \phpseclib\Math\BigInteger $e * @param \phpseclib\Math\BigInteger $e
* @return string * @return string
*/ */
static function savePublicKey(BigInteger $n, BigInteger $e) public static function savePublicKey(BigInteger $n, BigInteger $e)
{ {
$n = $n->toBytes(true); $n = $n->toBytes(true);
$e = $e->toBytes(true); $e = $e->toBytes(true);

View File

@ -34,7 +34,7 @@ use phpseclib\Math\BigInteger;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class Raw abstract class Raw
{ {
/** /**
* Break a public or private key down into its constituent components * Break a public or private key down into its constituent components
@ -44,7 +44,7 @@ class Raw
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
static function load($key, $password = '') public static function load($key, $password = '')
{ {
if (!is_array($key)) { if (!is_array($key)) {
return false; return false;
@ -97,7 +97,7 @@ class Raw
* @param \phpseclib\Math\BigInteger $e * @param \phpseclib\Math\BigInteger $e
* @return string * @return string
*/ */
static function savePublicKey(BigInteger $n, BigInteger $e) public static function savePublicKey(BigInteger $n, BigInteger $e)
{ {
return ['e' => clone $e, 'n' => clone $n]; return ['e' => clone $e, 'n' => clone $n];
} }

View File

@ -30,7 +30,7 @@ use phpseclib\Math\BigInteger;
* @author Jim Wigginton <terrafrost@php.net> * @author Jim Wigginton <terrafrost@php.net>
* @access public * @access public
*/ */
class XML abstract class XML
{ {
/** /**
* Break a public or private key down into its constituent components * Break a public or private key down into its constituent components
@ -40,7 +40,7 @@ class XML
* @param string $password optional * @param string $password optional
* @return array * @return array
*/ */
static function load($key, $password = '') public static function load($key, $password = '')
{ {
if (!is_string($key)) { if (!is_string($key)) {
return false; return false;
@ -113,7 +113,7 @@ class XML
* @param string $password optional * @param string $password optional
* @return string * @return string
*/ */
static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '') public static function savePrivateKey(BigInteger $n, BigInteger $e, BigInteger $d, $primes, $exponents, $coefficients, $password = '')
{ {
if (count($primes) != 2) { if (count($primes) != 2) {
return false; return false;
@ -138,7 +138,7 @@ class XML
* @param \phpseclib\Math\BigInteger $e * @param \phpseclib\Math\BigInteger $e
* @return string * @return string
*/ */
static function savePublicKey(BigInteger $n, BigInteger $e) public static function savePublicKey(BigInteger $n, BigInteger $e)
{ {
return "<RSAKeyValue>\r\n" . return "<RSAKeyValue>\r\n" .
' <Modulus>' . Base64::encode($n->toBytes()) . "</Modulus>\r\n" . ' <Modulus>' . Base64::encode($n->toBytes()) . "</Modulus>\r\n" .