public void OnData(byte[] data, int offset, int length) { _buffer.Write(data, offset, length); int expectedLength = SSHUtil.ReadInt32(_buffer.UnderlyingBuffer, 0); if (expectedLength + 4 <= _buffer.Length) { SSH2DataReader r = new SSH2DataReader(new DataFragment(_buffer.UnderlyingBuffer, 4, _buffer.Length - 4)); AgentForwadPacketType pt = (AgentForwadPacketType)r.ReadByte(); //remaining len-1 _buffer.SetOffset(0); switch (pt) { case AgentForwadPacketType.SSH2_AGENTC_REQUEST_IDENTITIES: SendKeyList(); break; case AgentForwadPacketType.SSH2_AGENTC_SIGN_REQUEST: SendSign(r); break; default: //Debug.WriteLine("Unknown agent packet " + pt.ToString()); TransmitWriter(OpenWriter(AgentForwadPacketType.SSH_AGENT_FAILURE)); break; } } }
//writer util private SSH2DataWriter OpenWriter(AgentForwadPacketType pt) { SSH2DataWriter wr = new SSH2DataWriter(); wr.WriteInt32(0); //length field wr.WriteByte((byte)pt); return(wr); }
//writer util private SSH2DataWriter OpenWriter(AgentForwadPacketType pt) { SSH2DataWriter wr = new SSH2DataWriter(); wr.WriteInt32(0); //length field wr.WriteByte((byte)pt); return wr; }