diff src/ch/ethz/ssh2/transport/ServerTransportManager.java @ 342:175c7d68f3c4

merge ganymed into mainline
author Carl Byington <carl@five-ten-sg.com>
date Thu, 31 Jul 2014 16:33:38 -0700
parents 071eccdff8ea
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/ch/ethz/ssh2/transport/ServerTransportManager.java	Thu Jul 31 16:33:38 2014 -0700
@@ -0,0 +1,34 @@
+package ch.ethz.ssh2.transport;
+
+import java.io.IOException;
+import java.net.Socket;
+
+import ch.ethz.ssh2.server.ServerConnectionState;
+
+/**
+ * @version $Id: ServerTransportManager.java 151 2014-04-28 10:03:39Z dkocher@sudo.ch $
+ */
+public class ServerTransportManager extends TransportManager {
+
+    private final Socket sock;
+
+    public ServerTransportManager(final Socket socket) {
+        super(socket);
+        // TCP connection is already established
+        this.sock = socket;
+    }
+
+    public void connect(ServerConnectionState state) throws IOException {
+        /* Parse the client lin
+        e and say hello - important: this information is later needed for the
+         * key exchange (to stop man-in-the-middle attacks) - that is why we wrap it into an object
+        * for later use.
+        */
+        state.csh = ClientServerHello.serverHello(state.softwareversion, sock.getInputStream(), sock.getOutputStream());
+        TransportConnection tc = new TransportConnection(sock.getInputStream(), sock.getOutputStream(), state.generator);
+        KexManager km = new ServerKexManager(state);
+        super.init(tc, km);
+        km.initiateKEX(state.next_cryptoWishList, null, state.next_dsa_key, state.next_rsa_key, state.next_ec_key);
+        this.startReceiver();
+    }
+}