From 04c24f6bbc5d8451bd58221817aea3841175097f Mon Sep 17 00:00:00 2001 From: terrafrost Date: Sat, 20 Apr 2013 14:33:07 -0500 Subject: [PATCH] SSH2: More multi-factor authentication changes Previously to do multi-factor authentication you'd have to do this: $ssh->login($user, 'pass1'); $ssh->login($user, 'pass2'); Now you can do this too: $ssh->login($user, 'pass1', 'pass2'); --- phpseclib/Net/SSH2.php | 32 ++++++++++++++++++++++++++++---- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/phpseclib/Net/SSH2.php b/phpseclib/Net/SSH2.php index 87d6c7d5..1fed7fc7 100644 --- a/phpseclib/Net/SSH2.php +++ b/phpseclib/Net/SSH2.php @@ -1461,16 +1461,40 @@ class Net_SSH2 { /** * Login * - * The $password parameter can be a plaintext password or a Crypt_RSA object. + * The $password parameter can be a plaintext password, a Crypt_RSA object or an array + * + * @param String $username + * @param Mixed $password + * @param Mixed $... + * @return Boolean + * @see _login_helper + * @access public + */ + function login($username) + { + $args = array_slice(func_get_args(), 1); + if (empty($args)) { + return $this->_login_helper($username); + } + foreach ($args as $arg) { + if ($this->_login_helper($username, $arg)) { + return true; + } + } + return false; + } + + /** + * Login Helper * * @param String $username * @param optional String $password * @return Boolean - * @access public + * @access private * @internal It might be worthwhile, at some point, to protect against {@link http://tools.ietf.org/html/rfc4251#section-9.3.9 traffic analysis} * by sending dummy SSH_MSG_IGNORE messages. */ - function login($username, $password = null) + function _login_helper($username, $password = null) { if (!($this->bitmap & NET_SSH2_MASK_CONSTRUCTOR)) { return false; @@ -3130,4 +3154,4 @@ class Net_SSH2 { } return $this->exit_status; } -} +} \ No newline at end of file