Skip to content

Commit

Permalink
Merge branch '1.0' into 2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
terrafrost committed Nov 15, 2024
2 parents 97a5d4f + 2b3d219 commit 5745059
Showing 1 changed file with 35 additions and 11 deletions.
46 changes: 35 additions & 11 deletions phpseclib/Net/SSH2.php
Original file line number Diff line number Diff line change
Expand Up @@ -5128,42 +5128,66 @@ function getAlgorithmsNegotiated()
*/
function setPreferredAlgorithms($methods)
{
$keys = array('client_to_server', 'server_to_client');

if (isset($methods['kex']) && is_string($methods['kex'])) {
$methods['kex'] = explode(',', $methods['kex']);
}

if (isset($methods['hostkey']) && is_string($methods['hostkey'])) {
$methods['hostkey'] = explode(',', $methods['hostkey']);
}

foreach ($keys as $key) {
if (isset($methods[$key])) {
$a = &$methods[$key];
if (isset($a['crypt']) && is_string($a['crypt'])) {
$a['crypt'] = explode(',', $a['crypt']);
}
if (isset($a['comp']) && is_string($a['comp'])) {
$a['comp'] = explode(',', $a['comp']);
}
if (isset($a['mac']) && is_string($a['mac'])) {
$a['mac'] = explode(',', $a['mac']);
}
}
}

$preferred = $methods;

if (isset($preferred['kex'])) {
$preferred['kex'] = array_intersect(
is_string($preferred['kex']) ? array($preferred['kex']) : $preferred['kex'],
$this->getSupportedKEXAlgorithms()
$preferred['kex'],
static::getSupportedKEXAlgorithms()
);
}

if (isset($preferred['hostkey'])) {
$preferred['hostkey'] = array_intersect(
is_string($preferred['hostkey']) ? array($preferred['hostkey']) : $preferred['hostkey'],
$this->getSupportedHostKeyAlgorithms()
$preferred['hostkey'],
static::getSupportedHostKeyAlgorithms()
);
}

$keys = array('client_to_server', 'server_to_client');
foreach ($keys as $key) {
if (isset($preferred[$key])) {
$a = &$preferred[$key];
if (isset($a['crypt'])) {
$a['crypt'] = array_intersect(
is_string($a['crypt']) ? array($a['crypt']) : $a['crypt'],
$this->getSupportedEncryptionAlgorithms()
$a['crypt'],
static::getSupportedEncryptionAlgorithms()
);
}
if (isset($a['comp'])) {
$a['comp'] = array_intersect(
is_string($a['comp']) ? array($a['comp']) : $a['comp'],
$this->getSupportedCompressionAlgorithms()
$a['comp'],
static::getSupportedCompressionAlgorithms()
);
}
if (isset($a['mac'])) {
$a['mac'] = array_intersect(
is_string($a['mac']) ? array($a['mac']) : $a['mac'],
$this->getSupportedMACAlgorithms()
$a['mac'],
static::getSupportedMACAlgorithms()
);
}
}
Expand Down

0 comments on commit 5745059

Please sign in to comment.