private void AuthenticationChange() { MyCatPacket packet = driver.Packet; packet.Clear(); byte[] moreData = MoreData(null); while (moreData != null && moreData.Length > 0) { packet.Clear(); packet.Write(moreData); driver.SendPacket(packet); packet = ReadPacket(); byte prefixByte = packet.Buffer[0]; if (prefixByte != 1) { return; } // a prefix of 0x01 means need more auth data byte[] responseData = new byte[packet.Length - 1]; Array.Copy(packet.Buffer, 1, responseData, 0, responseData.Length); moreData = MoreData(responseData); } // we get here if MoreData returned null but the last packet read was a more data packet ReadPacket(); }