public override void init(Session session, byte[] V_S, byte[] V_C, byte[] I_S, byte[] I_C) { m_session = session; m_V_S = V_S; m_V_C = V_C; m_I_S = I_S; m_I_C = I_C; try { Type t = Type.GetType(session.getConfig("sha-1")); m_sha = (HASH)(Activator.CreateInstance(t)); m_sha.init(); } catch (Exception ex) { throw ex; } m_buf = new Buffer(); m_packet = new Packet(m_buf); try { Type t = Type.GetType(session.getConfig("dh")); m_dh = (DH)(Activator.CreateInstance(t)); m_dh.init(); } catch (Exception ee) { throw ee; } m_dh.P = m_p; m_dh.G = m_g; // The client responds with: // byte SSH_MSG_KEXDH_INIT(30) // mpint e <- g^x mod p // x is a random number (1 < x < (p-1)/2) m_e = m_dh.E; m_packet.reset(); m_buf.putByte((byte)SSH_MSG_KEXDH_INIT); m_buf.putMPInt(m_e); session.write(m_packet); m_state = SSH_MSG_KEXDH_REPLY; }
public override void init(Session session, byte[] V_S, byte[] V_C, byte[] I_S, byte[] I_C) { m_session = session; m_V_S = V_S; m_V_C = V_C; m_I_S = I_S; m_I_C = I_C; try { Type t = Type.GetType(session.getConfig("sha-1")); m_sha = (HASH)(Activator.CreateInstance(t)); m_sha.init(); } catch (Exception) { } m_buf = new Buffer(); m_packet = new Packet(m_buf); try { Type t = Type.GetType(session.getConfig("dh")); m_dh = (DH)(Activator.CreateInstance(t)); m_dh.init(); } catch (Exception e) { throw e; } m_packet.reset(); m_buf.putByte((byte)0x22); m_buf.putInt(m_min); m_buf.putInt(m_preferred); m_buf.putInt(m_max); session.write(m_packet); m_state = SSH_MSG_KEX_DH_GEX_GROUP; }