From decbde4f5d26dc688dd6dc7066e9923e2a9bff23 Mon Sep 17 00:00:00 2001 From: terrafrost Date: Thu, 27 Jan 2022 05:51:06 -0600 Subject: [PATCH] SSH2: rsa-sha2-256 and rsa-sha2-512 sigs weren't verifying --- phpseclib/Net/SSH2.php | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/phpseclib/Net/SSH2.php b/phpseclib/Net/SSH2.php index da4726a1..e7ca4c5d 100644 --- a/phpseclib/Net/SSH2.php +++ b/phpseclib/Net/SSH2.php @@ -4968,12 +4968,10 @@ class SSH2 case 'ssh-rsa': case 'rsa-sha2-256': case 'rsa-sha2-512': - if (strlen($signature) < 15) { - return false; - } - Strings::shift($signature, 11); - $temp = unpack('Nlength', Strings::shift($signature, 4)); - $signature = Strings::shift($signature, $temp['length']); + // could be ssh-rsa, rsa-sha2-256, rsa-sha2-512 + // we don't check here because we already checked in key_exchange + // some signatures have the type embedded within the message and some don't + Strings::unpackSSH2('s', $signature); $key = RSA::loadFormat('OpenSSH', $server_public_host_key) ->withPadding(RSA::SIGNATURE_PKCS1);