1
0
mirror of https://github.com/danog/tgseclib.git synced 2024-11-27 04:34:45 +01:00

Merge branch 'master' of https://github.com/phpseclib/phpseclib into spkac

This commit is contained in:
terrafrost 2014-06-05 08:40:49 -05:00
commit daa466db94
38 changed files with 224 additions and 84 deletions

6
.scrutinizer.yml Normal file
View File

@ -0,0 +1,6 @@
imports:
- php
tools:
external_code_coverage:
runs: 5 # No Code Coverage on PHP 5.2 and HHVM

View File

@ -1,5 +1,7 @@
language: php language: php
# When adding environments here, the number of runs specified in .scrutinizer.yml
# may have to be adjusted.
php: php:
- 5.2 - 5.2
- 5.3.3 - 5.3.3
@ -25,4 +27,5 @@ script:
- travis/run-phpunit.sh - travis/run-phpunit.sh
after_success: after_success:
- sh -c "if $TRAVIS_SECURE_ENV_VARS; then travis/upload-code-coverage.sh; fi" - sh -c "if $TRAVIS_SECURE_ENV_VARS; then travis/upload-code-coverage-html.sh; fi"
- sh -c "if [ '$TRAVIS_PHP_VERSION' != '5.2' -a '$TRAVIS_PHP_VERSION' != 'hhvm' ]; then travis/upload-code-coverage-scrutinizer.sh; fi"

View File

@ -19,7 +19,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/AES.php'); * include 'Crypt/AES.php';
* *
* $aes = new Crypt_AES(); * $aes = new Crypt_AES();
* *

View File

@ -14,7 +14,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/Blowfish.php'); * include 'Crypt/Blowfish.php';
* *
* $blowfish = new Crypt_Blowfish(); * $blowfish = new Crypt_Blowfish();
* *

View File

@ -16,7 +16,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/DES.php'); * include 'Crypt/DES.php';
* *
* $des = new Crypt_DES(); * $des = new Crypt_DES();
* *

View File

@ -18,7 +18,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/Hash.php'); * include 'Crypt/Hash.php';
* *
* $hash = new Crypt_Hash('sha1'); * $hash = new Crypt_Hash('sha1');
* *

View File

@ -14,7 +14,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/RC2.php'); * include 'Crypt/RC2.php';
* *
* $rc2 = new Crypt_RC2(); * $rc2 = new Crypt_RC2();
* *

View File

@ -18,7 +18,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/RC4.php'); * include 'Crypt/RC4.php';
* *
* $rc4 = new Crypt_RC4(); * $rc4 = new Crypt_RC4();
* *

View File

@ -8,7 +8,7 @@
* Here's an example of how to encrypt and decrypt text with this library: * Here's an example of how to encrypt and decrypt text with this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/RSA.php'); * include 'Crypt/RSA.php';
* *
* $rsa = new Crypt_RSA(); * $rsa = new Crypt_RSA();
* extract($rsa->createKey()); * extract($rsa->createKey());
@ -26,7 +26,7 @@
* Here's an example of how to create signatures and verify signatures with this library: * Here's an example of how to create signatures and verify signatures with this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/RSA.php'); * include 'Crypt/RSA.php';
* *
* $rsa = new Crypt_RSA(); * $rsa = new Crypt_RSA();
* extract($rsa->createKey()); * extract($rsa->createKey());
@ -1482,6 +1482,19 @@ class Crypt_RSA
$this->publicExponent = false; $this->publicExponent = false;
} }
switch ($type) {
case CRYPT_RSA_PUBLIC_FORMAT_OPENSSH:
case CRYPT_RSA_PUBLIC_FORMAT_RAW:
$this->setPublicKey();
break;
case CRYPT_RSA_PRIVATE_FORMAT_PKCS1:
switch (true) {
case strpos($key, '-BEGIN PUBLIC KEY-') !== false:
case strpos($key, '-BEGIN RSA PUBLIC KEY-') !== false:
$this->setPublicKey();
}
}
return true; return true;
} }
@ -1508,7 +1521,9 @@ class Crypt_RSA
* used in certain contexts. For example, in SSH-2, RSA authentication works by sending the public key along with a * used in certain contexts. For example, in SSH-2, RSA authentication works by sending the public key along with a
* message signed by the private key to the server. The SSH-2 server looks the public key up in an index of public keys * message signed by the private key to the server. The SSH-2 server looks the public key up in an index of public keys
* and if it's present then proceeds to verify the signature. Problem is, if your private key doesn't include the public * and if it's present then proceeds to verify the signature. Problem is, if your private key doesn't include the public
* exponent this won't work unless you manually add the public exponent. * exponent this won't work unless you manually add the public exponent. phpseclib tries to guess if the key being used
* is the public key but in the event that it guesses incorrectly you might still want to explicitly set the key as being
* public.
* *
* Do note that when a new key is loaded the index will be cleared. * Do note that when a new key is loaded the index will be cleared.
* *
@ -1564,6 +1579,40 @@ class Crypt_RSA
return true; return true;
} }
/**
* Defines the private key
*
* If phpseclib guessed a private key was a public key and loaded it as such it might be desirable to force
* phpseclib to treat the key as a private key. This function will do that.
*
* Do note that when a new key is loaded the index will be cleared.
*
* Returns true on success, false on failure
*
* @see getPublicKey()
* @access public
* @param String $key optional
* @param Integer $type optional
* @return Boolean
*/
function setPrivateKey($key = false, $type = false)
{
if ($key === false && !empty($this->publicExponent)) {
unset($this->publicExponent);
return true;
}
$rsa = new Crypt_RSA();
if (!$rsa->loadKey($key, $type)) {
return false;
}
unset($rsa->publicExponent);
// don't overwrite the old key if the new key is invalid
$this->loadKey($rsa);
return true;
}
/** /**
* Returns the public key * Returns the public key
* *

View File

@ -8,7 +8,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/Random.php'); * include 'Crypt/Random.php';
* *
* echo bin2hex(crypt_random_string(8)); * echo bin2hex(crypt_random_string(8));
* ?> * ?>

View File

@ -28,7 +28,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/Rijndael.php'); * include 'Crypt/Rijndael.php';
* *
* $rijndael = new Crypt_Rijndael(); * $rijndael = new Crypt_Rijndael();
* *

View File

@ -10,7 +10,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/TripleDES.php'); * include 'Crypt/TripleDES.php';
* *
* $des = new Crypt_TripleDES(); * $des = new Crypt_TripleDES();
* *

View File

@ -14,7 +14,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Crypt/Twofish.php'); * include 'Crypt/Twofish.php';
* *
* $twofish = new Crypt_Twofish(); * $twofish = new Crypt_Twofish();
* *

View File

@ -31,7 +31,7 @@
* Here's an example of how to use this library: * Here's an example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger(2); * $a = new Math_BigInteger(2);
* $b = new Math_BigInteger(3); * $b = new Math_BigInteger(3);
@ -238,7 +238,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('0x32', 16); // 50 in base-16 * $a = new Math_BigInteger('0x32', 16); // 50 in base-16
* *
@ -506,7 +506,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('65'); * $a = new Math_BigInteger('65');
* *
@ -603,7 +603,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('65'); * $a = new Math_BigInteger('65');
* *
@ -630,7 +630,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('65'); * $a = new Math_BigInteger('65');
* *
@ -668,7 +668,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('50'); * $a = new Math_BigInteger('50');
* *
@ -821,7 +821,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('10'); * $a = new Math_BigInteger('10');
* $b = new Math_BigInteger('20'); * $b = new Math_BigInteger('20');
@ -952,7 +952,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('10'); * $a = new Math_BigInteger('10');
* $b = new Math_BigInteger('20'); * $b = new Math_BigInteger('20');
@ -1088,7 +1088,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('10'); * $a = new Math_BigInteger('10');
* $b = new Math_BigInteger('20'); * $b = new Math_BigInteger('20');
@ -1372,7 +1372,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('10'); * $a = new Math_BigInteger('10');
* $b = new Math_BigInteger('20'); * $b = new Math_BigInteger('20');
@ -1591,7 +1591,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger('10'); * $a = new Math_BigInteger('10');
* $b = new Math_BigInteger('20'); * $b = new Math_BigInteger('20');
@ -2396,7 +2396,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger(30); * $a = new Math_BigInteger(30);
* $b = new Math_BigInteger(17); * $b = new Math_BigInteger(17);
@ -2464,7 +2464,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger(693); * $a = new Math_BigInteger(693);
* $b = new Math_BigInteger(609); * $b = new Math_BigInteger(609);
@ -2599,7 +2599,7 @@ class Math_BigInteger
* Here's an example: * Here's an example:
* <code> * <code>
* <?php * <?php
* include('Math/BigInteger.php'); * include 'Math/BigInteger.php';
* *
* $a = new Math_BigInteger(693); * $a = new Math_BigInteger(693);
* $b = new Math_BigInteger(609); * $b = new Math_BigInteger(609);

View File

@ -10,8 +10,8 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Net/SCP.php'); * include 'Net/SCP.php';
* include('Net/SSH2.php'); * include 'Net/SSH2.php';
* *
* $ssh = new Net_SSH2('www.domain.tld'); * $ssh = new Net_SSH2('www.domain.tld');
* if (!$ssh->login('username', 'password')) { * if (!$ssh->login('username', 'password')) {

View File

@ -14,7 +14,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Net/SFTP.php'); * include 'Net/SFTP.php';
* *
* $sftp = new Net_SFTP('www.domain.tld'); * $sftp = new Net_SFTP('www.domain.tld');
* if (!$sftp->login('username', 'password')) { * if (!$sftp->login('username', 'password')) {

View File

@ -8,7 +8,7 @@
* Here's a short example of how to use this library: * Here's a short example of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Net/SSH1.php'); * include 'Net/SSH1.php';
* *
* $ssh = new Net_SSH1('www.domain.tld'); * $ssh = new Net_SSH1('www.domain.tld');
* if (!$ssh->login('username', 'password')) { * if (!$ssh->login('username', 'password')) {
@ -22,7 +22,7 @@
* Here's another short example: * Here's another short example:
* <code> * <code>
* <?php * <?php
* include('Net/SSH1.php'); * include 'Net/SSH1.php';
* *
* $ssh = new Net_SSH1('www.domain.tld'); * $ssh = new Net_SSH1('www.domain.tld');
* if (!$ssh->login('username', 'password')) { * if (!$ssh->login('username', 'password')) {
@ -704,7 +704,7 @@ class Net_SSH1
break; break;
//case NET_SSH1_CIPHER_RC4: //case NET_SSH1_CIPHER_RC4:
// if (!class_exists('Crypt_RC4')) { // if (!class_exists('Crypt_RC4')) {
// include_once('Crypt/RC4.php'); // include_once 'Crypt/RC4.php';
// } // }
// $this->crypto = new Crypt_RC4(); // $this->crypto = new Crypt_RC4();
// $this->crypto->enableContinuousBuffer(); // $this->crypto->enableContinuousBuffer();

View File

@ -8,7 +8,7 @@
* Here are some examples of how to use this library: * Here are some examples of how to use this library:
* <code> * <code>
* <?php * <?php
* include('Net/SSH2.php'); * include 'Net/SSH2.php';
* *
* $ssh = new Net_SSH2('www.domain.tld'); * $ssh = new Net_SSH2('www.domain.tld');
* if (!$ssh->login('username', 'password')) { * if (!$ssh->login('username', 'password')) {
@ -22,8 +22,8 @@
* *
* <code> * <code>
* <?php * <?php
* include('Crypt/RSA.php'); * include 'Crypt/RSA.php';
* include('Net/SSH2.php'); * include 'Net/SSH2.php';
* *
* $key = new Crypt_RSA(); * $key = new Crypt_RSA();
* //$key->setPassword('whatever'); * //$key->setPassword('whatever');

View File

@ -7,8 +7,8 @@
* Here are some examples of how to use this library: * Here are some examples of how to use this library:
* <code> * <code>
* <?php * <?php
* include('System/SSH/Agent.php'); * include 'System/SSH/Agent.php';
* include('Net/SSH2.php'); * include 'Net/SSH2.php';
* *
* $agent = new System_SSH_Agent(); * $agent = new System_SSH_Agent();
* *

View File

@ -4,8 +4,11 @@
colors="true" colors="true"
> >
<testsuites> <testsuites>
<testsuite name="phpseclib Test Suite"> <testsuite name="phpseclib Unit Test Suite">
<directory>./tests/</directory> <directory>./tests/Unit/</directory>
</testsuite>
<testsuite name="phpseclib Functional Test Suite">
<directory>./tests/Functional/</directory>
</testsuite> </testsuite>
</testsuites> </testsuites>

View File

@ -6,7 +6,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Net_SFTPFunctionalTest extends PhpseclibFunctionalTestCase class Functional_Net_SFTPUserStoryTest extends PhpseclibFunctionalTestCase
{ {
static protected $scratchDir; static protected $scratchDir;
static protected $exampleData; static protected $exampleData;

View File

@ -6,7 +6,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Net_SSH2FunctionalTest extends PhpseclibFunctionalTestCase class Functional_Net_SSH2Test extends PhpseclibFunctionalTestCase
{ {
public function setUp() public function setUp()
{ {

View File

@ -5,7 +5,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Crypt_AES_ContinuousBufferTest extends Crypt_AES_TestCase class Unit_Crypt_AES_ContinuousBufferTest extends Unit_Crypt_AES_TestCase
{ {
// String intented // String intented
protected $modes = array( protected $modes = array(

View File

@ -7,7 +7,7 @@
require_once 'Crypt/AES.php'; require_once 'Crypt/AES.php';
abstract class Crypt_AES_TestCase extends PhpseclibTestCase abstract class Unit_Crypt_AES_TestCase extends PhpseclibTestCase
{ {
static public function setUpBeforeClass() static public function setUpBeforeClass()
{ {

View File

@ -5,7 +5,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Crypt_Hash_MD5Test extends Crypt_Hash_TestCase class Unit_Crypt_Hash_MD5Test extends Unit_Crypt_Hash_TestCase
{ {
public function getInstance() public function getInstance()
{ {

View File

@ -7,7 +7,7 @@
require_once 'Crypt/Hash.php'; require_once 'Crypt/Hash.php';
abstract class Crypt_Hash_TestCase extends PhpseclibTestCase abstract class Unit_Crypt_Hash_TestCase extends PhpseclibTestCase
{ {
static public function setUpBeforeClass() static public function setUpBeforeClass()
{ {

View File

@ -7,7 +7,7 @@
require_once 'Crypt/RSA.php' ; require_once 'Crypt/RSA.php' ;
class Crypt_RSA_LoadKeyTest extends PhpseclibTestCase class Unit_Crypt_RSA_LoadKeyTest extends PhpseclibTestCase
{ {
public function testBadKey() public function testBadKey()
{ {
@ -37,6 +37,7 @@ U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
-----END RSA PRIVATE KEY-----'; -----END RSA PRIVATE KEY-----';
$this->assertTrue($rsa->loadKey($key)); $this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPrivateKey());
} }
public function testPKCS1SpacesKey() public function testPKCS1SpacesKey()
@ -59,6 +60,7 @@ U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
$key = str_replace(array("\r", "\n", "\r\n"), ' ', $key); $key = str_replace(array("\r", "\n", "\r\n"), ' ', $key);
$this->assertTrue($rsa->loadKey($key)); $this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPrivateKey());
} }
public function testPKCS1NoHeaderKey() public function testPKCS1NoHeaderKey()
@ -78,6 +80,7 @@ U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0='; 37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
$this->assertTrue($rsa->loadKey($key)); $this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPrivateKey());
} }
public function testPKCS1NoWhitespaceNoHeaderKey() public function testPKCS1NoWhitespaceNoHeaderKey()
@ -95,7 +98,9 @@ U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
'X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl' . 'X6zk7S0ljKtt2jny2+00VsBerQJBAJGC1Mg5Oydo5NwD6BiROrPxGo2bpTbu/fhrT8ebHkTz2epl' .
'U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ' . 'U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ' .
'37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0='; '37sJ5QsW+sJyoNde3xH8vdXhzU7eT82D6X/scw9RZz+/6rCJ4p0=';
$this->assertTrue($rsa->loadKey($key)); $this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPrivateKey());
} }
public function testRawPKCS1Key() public function testRawPKCS1Key()
@ -116,5 +121,76 @@ U9VQQSQzY1oZMVX8i1m5WUTLPz2yLJIBQVdXqhMCQBGoiuSoSjafUhV7i1cEGpb88h5NBYZzWXGZ
$key = base64_decode($key); $key = base64_decode($key);
$this->assertTrue($rsa->loadKey($key)); $this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPrivateKey());
}
public function testPubKey1()
{
$rsa = new Crypt_RSA();
$key = '-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA61BjmfXGEvWmegnBGSuS+rU9soUg2FnODva32D1AqhwdziwHINFa
D1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBSEVCgJjtHAGZIm5GL/KA86KDp/CwDFMSw
luowcXwDwoyinmeOY9eKyh6aY72xJh7noLBBq1N0bWi1e2i+83txOCg4yV2oVXhB
o8pYEJ8LT3el6Smxol3C1oFMVdwPgc0vTl25XucMcG/ALE/KNY6pqC2AQ6R2ERlV
gPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeulmCpGSynXNcpZ/06+vofGi/2MlpQZNhH
Ao8eayMp6FcvNucIpUndo1X8dKMv3Y26ZQIDAQAB
-----END RSA PUBLIC KEY-----';
$this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPublicKey());
$this->assertFalse($rsa->getPrivateKey());
}
public function testPubKey2()
{
$rsa = new Crypt_RSA();
$key = '-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA61BjmfXGEvWmegnBGSuS
+rU9soUg2FnODva32D1AqhwdziwHINFaD1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBS
EVCgJjtHAGZIm5GL/KA86KDp/CwDFMSwluowcXwDwoyinmeOY9eKyh6aY72xJh7n
oLBBq1N0bWi1e2i+83txOCg4yV2oVXhBo8pYEJ8LT3el6Smxol3C1oFMVdwPgc0v
Tl25XucMcG/ALE/KNY6pqC2AQ6R2ERlVgPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeu
lmCpGSynXNcpZ/06+vofGi/2MlpQZNhHAo8eayMp6FcvNucIpUndo1X8dKMv3Y26
ZQIDAQAB
-----END PUBLIC KEY-----';
$this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPublicKey());
$this->assertFalse($rsa->getPrivateKey());
}
public function testSSHPubKey()
{
$rsa = new Crypt_RSA();
$key = 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAgQCqGKukO1De7zhZj6+H0qtjTkVxwTCpvKe4e' .
'CZ0FPqri0cb2JZfXJ/DgYSF6vUpwmJG8wVQZKjeGcjDOL5UlsuusFncCzWBQ7RKNUSesmQRMS' .
'GkVb1/3j+skZ6UtW+5u09lHNsj6tQ51s1SPrCBkedbNf0Tp0GbMJDyR4e9T04ZZw== ' .
'phpseclib-generated-key';
$this->assertTrue($rsa->loadKey($key));
$this->assertInternalType('string', $rsa->getPublicKey());
$this->assertFalse($rsa->getPrivateKey());
}
public function testSetPrivate()
{
$rsa = new Crypt_RSA();
$key = '-----BEGIN RSA PUBLIC KEY-----
MIIBCgKCAQEA61BjmfXGEvWmegnBGSuS+rU9soUg2FnODva32D1AqhwdziwHINFa
D1MVlcrYG6XRKfkcxnaXGfFDWHLEvNBSEVCgJjtHAGZIm5GL/KA86KDp/CwDFMSw
luowcXwDwoyinmeOY9eKyh6aY72xJh7noLBBq1N0bWi1e2i+83txOCg4yV2oVXhB
o8pYEJ8LT3el6Smxol3C1oFMVdwPgc0vTl25XucMcG/ALE/KNY6pqC2AQ6R2ERlV
gPiUWOPatVkt7+Bs3h5Ramxh7XjBOXeulmCpGSynXNcpZ/06+vofGi/2MlpQZNhH
Ao8eayMp6FcvNucIpUndo1X8dKMv3Y26ZQIDAQAB
-----END RSA PUBLIC KEY-----';
$this->assertTrue($rsa->loadKey($key));
$this->assertTrue($rsa->setPrivateKey());
$this->assertGreaterThanOrEqual(1, strlen("$rsa"));
$this->assertFalse($rsa->getPublicKey());
} }
} }

View File

@ -7,7 +7,7 @@
require_once 'File/ASN1.php'; require_once 'File/ASN1.php';
class File_ASN1_DevTest extends PhpseclibTestCase class Unit_File_ASN1_DevTest extends PhpseclibTestCase
{ {
/** /**
* on older versions of File_ASN1 this would yield a PHP Warning * on older versions of File_ASN1 this would yield a PHP Warning

View File

@ -5,7 +5,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Math_BigInteger_BCMathTest extends Math_BigInteger_TestCase class Unit_Math_BigInteger_BCMathTest extends Unit_Math_BigInteger_TestCase
{ {
static public function setUpBeforeClass() static public function setUpBeforeClass()
{ {

View File

@ -5,7 +5,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Math_BigInteger_GMPTest extends Math_BigInteger_TestCase class Unit_Math_BigInteger_GMPTest extends Unit_Math_BigInteger_TestCase
{ {
static public function setUpBeforeClass() static public function setUpBeforeClass()
{ {

View File

@ -5,7 +5,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Math_BigInteger_InternalOpenSSLTest extends Math_BigInteger_TestCase class Unit_Math_BigInteger_InternalOpenSSLTest extends Unit_Math_BigInteger_TestCase
{ {
static public function setUpBeforeClass() static public function setUpBeforeClass()
{ {

View File

@ -5,7 +5,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Math_BigInteger_InternalTest extends Math_BigInteger_TestCase class Math_BigInteger_InternalTest extends Unit_Math_BigInteger_TestCase
{ {
static public function setUpBeforeClass() static public function setUpBeforeClass()
{ {

View File

@ -7,7 +7,7 @@
require_once 'Math/BigInteger.php'; require_once 'Math/BigInteger.php';
abstract class Math_BigInteger_TestCase extends PhpseclibTestCase abstract class Unit_Math_BigInteger_TestCase extends PhpseclibTestCase
{ {
static public function setUpBeforeClass() static public function setUpBeforeClass()
{ {

View File

@ -5,7 +5,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Net_SSH1Test extends PhpseclibTestCase class Unit_Net_SSH1Test extends PhpseclibTestCase
{ {
public function formatLogDataProvider() public function formatLogDataProvider()
{ {

View File

@ -6,7 +6,7 @@
* @license http://www.opensource.org/licenses/mit-license.html MIT License * @license http://www.opensource.org/licenses/mit-license.html MIT License
*/ */
class Net_SSH2Test extends PhpseclibTestCase class Unit_Net_SSH2Test extends PhpseclibTestCase
{ {
public function formatLogDataProvider() public function formatLogDataProvider()
{ {
@ -36,38 +36,27 @@ class Net_SSH2Test extends PhpseclibTestCase
$this->assertEquals($expected, $result); $this->assertEquals($expected, $result);
} }
public function generateIdentifierProvider() public function testGenerateIdentifier()
{ {
return array( $identifier = $this->createSSHMock()->_generate_identifier();
array('SSH-2.0-phpseclib_0.3', array()), $this->assertStringStartsWith('SSH-2.0-phpseclib_0.3', $identifier);
array('SSH-2.0-phpseclib_0.3 (gmp)', array('gmp')),
array('SSH-2.0-phpseclib_0.3 (bcmath)', array('bcmath')),
array('SSH-2.0-phpseclib_0.3 (mcrypt)', array('mcrypt')),
array('SSH-2.0-phpseclib_0.3 (mcrypt, gmp)', array('mcrypt', 'gmp')),
array('SSH-2.0-phpseclib_0.3 (mcrypt, bcmath)', array('mcrypt', 'bcmath')),
);
}
/** if (extension_loaded('mcrypt')) {
* @dataProvider generateIdentifierProvider $this->assertContains('mcrypt', $identifier);
*/ } else {
public function testGenerateIdentifier($expected, array $requiredExtensions) $this->assertNotContains('mcrypt', $identifier);
{
$notAllowed = array('gmp', 'bcmath', 'mcrypt', 'gmp');
foreach ($notAllowed as $notAllowedExtension) {
if (in_array($notAllowedExtension, $requiredExtensions)) {
continue;
}
if (extension_loaded($notAllowedExtension)) {
$this->markTestSkipped('Extension ' . $notAllowedExtension . ' is not allowed for this data-set');
}
} }
$ssh = $this->createSSHMock(); if (extension_loaded('gmp')) {
$identifier = $ssh->_generate_identifier(); $this->assertContains('gmp', $identifier);
$this->assertNotContains('bcmath', $identifier);
$this->assertEquals($expected, $identifier); } else if (extension_loaded('bcmath')) {
$this->assertNotContains('gmp', $identifier);
$this->assertContains('bcmath', $identifier);
} else {
$this->assertNotContains('gmp', $identifier);
$this->assertNotContains('bcmath', $identifier);
}
} }
public function testGetExitStatusIfNotConnected() public function testGetExitStatusIfNotConnected()

View File

@ -24,4 +24,5 @@ fi
$PHPUNIT_EXTRA_ARGS \ $PHPUNIT_EXTRA_ARGS \
--verbose \ --verbose \
--coverage-text \ --coverage-text \
--coverage-clover code_coverage/clover.xml \
--coverage-html code_coverage/ --coverage-html code_coverage/

View File

@ -0,0 +1,13 @@
#!/bin/sh
#
# This file is part of the phpseclib project.
#
# (c) Andreas Fischer <bantu@phpbb.com>
#
# For the full copyright and license information, please view the LICENSE
# file that was distributed with this source code.
#
set -e
wget https://scrutinizer-ci.com/ocular.phar
php ocular.phar code-coverage:upload --format=php-clover code_coverage/clover.xml