Example #1
0
        // 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);
        }