Compare commits

...

3 Commits

Author SHA1 Message Date
terrafrost 630b589f80 Merge branch 'master' of https://github.com/phpseclib/phpseclib 2024-04-10 08:44:40 -05:00
terrafrost 1d9a6bf8b0 Merge branch '3.0' 2024-04-10 04:46:02 -05:00
terrafrost 901a79f0ec Keys/OpenSSH: clean up exception messages 2024-04-10 04:43:30 -05:00
1 changed files with 6 additions and 2 deletions

View File

@ -20,6 +20,7 @@ namespace phpseclib3\Crypt\Common\Formats\Keys;
use phpseclib3\Common\Functions\Strings; use phpseclib3\Common\Functions\Strings;
use phpseclib3\Crypt\AES; use phpseclib3\Crypt\AES;
use phpseclib3\Crypt\Random; use phpseclib3\Crypt\Random;
use phpseclib3\Exception\BadDecryptionException;
use phpseclib3\Exception\RuntimeException; use phpseclib3\Exception\RuntimeException;
use phpseclib3\Exception\UnexpectedValueException; use phpseclib3\Exception\UnexpectedValueException;
@ -97,7 +98,7 @@ abstract class OpenSSH
$crypto->setPassword($password, 'bcrypt', $salt, $rounds, 32); $crypto->setPassword($password, 'bcrypt', $salt, $rounds, 32);
break; break;
default: default:
throw new RuntimeException('The only supported cipherse are: none, aes256-ctr (' . $ciphername . ' is being used)'); throw new RuntimeException('The only supported ciphers are: none, aes256-ctr (' . $ciphername . ' is being used)');
} }
[$publicKey, $paddedKey] = Strings::unpackSSH2('ss', $key); [$publicKey, $paddedKey] = Strings::unpackSSH2('ss', $key);
@ -108,7 +109,10 @@ abstract class OpenSSH
[$checkint1, $checkint2] = Strings::unpackSSH2('NN', $paddedKey); [$checkint1, $checkint2] = Strings::unpackSSH2('NN', $paddedKey);
// any leftover bytes in $paddedKey are for padding? but they should be sequential bytes. eg. 1, 2, 3, etc. // any leftover bytes in $paddedKey are for padding? but they should be sequential bytes. eg. 1, 2, 3, etc.
if ($checkint1 != $checkint2) { if ($checkint1 != $checkint2) {
throw new RuntimeException('The two checkints do not match'); if (isset($crypto)) {
throw new BadDecryptionException('Unable to decrypt key - please verify the password you are using');
}
throw new RuntimeException("The two checkints do not match ($checkint1 vs. $checkint2)");
} }
self::checkType($type); self::checkType($type);