Exemple #1
0
        public override void TransformBytes(byte[] a_data, int a_index, int a_length)
        {
            Debug.Assert(a_index >= 0);
            Debug.Assert(a_length >= 0);
            Debug.Assert(a_index + a_length <= a_data.Length);

            if (!m_buffer.IsEmpty)
            {
                if (m_buffer.Feed(a_data, ref a_index, ref a_length, ref m_processed_bytes))
                {
                    TransformBuffer();
                }
            }

            while (a_length >= m_buffer.Length)
            {
                m_processed_bytes += (ulong)m_buffer.Length;
                TransformBlock(a_data, a_index);
                a_index  += m_buffer.Length;
                a_length -= m_buffer.Length;
            }

            if (a_length > 0)
            {
                m_buffer.Feed(a_data, ref a_index, ref a_length, ref m_processed_bytes);
            }
        }