// encode will bin invoked in write with synchronization. public void encode(Packet packet) { if (m_deflater != null) packet.m_buffer.m_index = m_deflater.compress(packet.m_buffer.m_buffer, 5, packet.m_buffer.m_index); if (m_c2scipher != null) { packet.padding(m_c2scipher.IVSize); int pad = packet.m_buffer.m_buffer[4]; lock (m_random) { m_random.fill(packet.m_buffer.m_buffer, packet.m_buffer.m_index - pad, pad); } } else packet.padding(8); byte[] mac = null; if (m_c2smac != null) { m_c2smac.update(m_seq_o); m_c2smac.update(packet.m_buffer.m_buffer, 0, packet.m_buffer.m_index); mac = m_c2smac.doFinal(); } if (m_c2scipher != null) { byte[] buf = packet.m_buffer.m_buffer; m_c2scipher.update(buf, 0, packet.m_buffer.m_index, buf, 0); } if (mac != null) packet.m_buffer.putByte(mac); }