private void FlushPacket(ServerStsPacket packet) { using (var stream = new MemoryStream()) using (var writer = new StreamWriter(stream)) { writer.Write(packet.Protocol); writer.Write(" "); writer.Write(packet.StatusCode); writer.Write(" "); writer.Write(" "); writer.Write(packet.Status); writer.Write("\r\n"); foreach ((string name, string value) in packet.Headers) { writer.Write($"{name}:{value}"); writer.Write("\r\n"); } writer.Write("\r\n"); writer.Write(packet.Body); writer.Flush(); byte[] buffer = stream.ToArray(); if (packet.Encrypt) { serverEncryption.Encrypt(buffer); } SendRaw(buffer); } if (serverNewEncryption != null) { serverEncryption = serverNewEncryption; serverNewEncryption = null; } log.Trace($"Sent packet response {packet.StatusCode}, {packet.Status}"); }
public void InitialiseEncryption(byte[] key) { clientEncryption = new Arc4Provider(key); serverNewEncryption = new Arc4Provider(key); log.Trace($"Initialised RC4, Key: {BitConverter.ToString(key).Replace("-", "")}"); }