public ConnectionService(Session session, UserAuthArgs auth) : base(session) { Contract.Requires(auth != null); _auth = auth; }
private void HandleMessage(PasswordRequestMessage message) { var verifed = true; var args = new UserAuthArgs(message.Username, message.Password); if (verifed && UserAuth != null) { UserAuth(this, args); verifed = args.Result; } if (verifed) { _session.RegisterService(message.ServiceName, args); Succeed?.Invoke(this, message.ServiceName); _session.SendMessage(new SuccessMessage()); return; } else { _session.SendMessage(new FailureMessage()); //throw new SshConnectionException("Authentication fail.", DisconnectReason.NoMoreAuthMethodsAvailable); } }
public SessionRequestedArgs(SessionChannel channel, string command, UserAuthArgs userauthArgs) { Contract.Requires(channel != null); Contract.Requires(command != null); Contract.Requires(userauthArgs != null); Channel = channel; CommandText = command; AttachedUserauthArgs = userauthArgs; }
public ConnectionService(Session session, UserAuthArgs auth) : base(session) { Contract.Requires(auth != null); _auth = auth; // Send keep-alives if no incoming messages within 5 seconds _keepAliveTimer = new KeepAliveTimer(5000, SendKeepAlive); _session.Disconnected += (ss, ee) => { _keepAliveTimer.Dispose(); }; }
private void HandleMessage(PublicKeyRequestMessage message) { if (Session._publicKeyAlgorithms.ContainsKey(message.KeyAlgorithmName)) { if (!message.HasSignature) { _session.SendMessage(new PublicKeyOkMessage { KeyAlgorithmName = message.KeyAlgorithmName, PublicKey = message.PublicKey }); return; } var keyAlg = Session._publicKeyAlgorithms[message.KeyAlgorithmName](null); keyAlg.LoadKeyAndCertificatesData(message.PublicKey); var sig = keyAlg.GetSignature(message.Signature); var verifed = false; using (var worker = new SshDataWorker()) { worker.WriteBinary(_session.SessionId); worker.Write(message.PayloadWithoutSignature); verifed = keyAlg.VerifyData(worker.ToByteArray(), sig); } var args = new UserAuthArgs(message.KeyAlgorithmName, keyAlg.GetFingerprint(), message.PublicKey); if (verifed && UserAuth != null) { UserAuth(this, args); verifed = args.Result; } if (verifed) { _session.RegisterService(message.ServiceName, args); Succeed?.Invoke(this, message.ServiceName); _session.SendMessage(new SuccessMessage()); return; } else { _session.SendMessage(new FailureMessage()); throw new SshConnectionException("Authentication fail.", DisconnectReason.NoMoreAuthMethodsAvailable); } } _session.SendMessage(new FailureMessage()); }
public PtyArgs(SessionChannel channel, string terminal, uint heightPx, uint heightRows, uint widthPx, uint widthChars, string modes, UserAuthArgs userauthArgs) { Contract.Requires(channel != null); Contract.Requires(terminal != null); Contract.Requires(modes != null); Contract.Requires(userauthArgs != null); Channel = channel; Terminal = terminal; HeightPx = heightPx; HeightRows = heightRows; WidthPx = widthPx; WidthChars = widthChars; Modes = modes; AttachedUserAuthArgs = userauthArgs; }
public SessionRequestedArgs(SessionChannel channel, string command, UserAuthArgs userauthArgs) : this(channel, null, command, userauthArgs) { }