public override AuthenticationResult Authenticate(Session session)
{
if (session == null)
throw new ArgumentNullException("session");
_session = session;
session.UserAuthenticationSuccessReceived += Session_UserAuthenticationSuccessReceived;
session.UserAuthenticationFailureReceived += Session_UserAuthenticationFailureReceived;
session.UserAuthenticationPasswordChangeRequiredReceived += Session_UserAuthenticationPasswordChangeRequiredReceived;
try
{
session.RegisterMessage("SSH_MSG_USERAUTH_PASSWD_CHANGEREQ");
session.SendMessage(_requestMessage);
session.WaitOnHandle(_authenticationCompleted);
}
finally
{
session.UnRegisterMessage("SSH_MSG_USERAUTH_PASSWD_CHANGEREQ");
session.UserAuthenticationSuccessReceived -= Session_UserAuthenticationSuccessReceived;
session.UserAuthenticationFailureReceived -= Session_UserAuthenticationFailureReceived;
session.UserAuthenticationPasswordChangeRequiredReceived -= Session_UserAuthenticationPasswordChangeRequiredReceived;
}
if (_exception != null)
throw _exception;
return _authenticationResult;
}