コード例 #1
0
        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}");
        }
コード例 #2
0
 public void InitialiseEncryption(byte[] key)
 {
     clientEncryption    = new Arc4Provider(key);
     serverNewEncryption = new Arc4Provider(key);
     log.Trace($"Initialised RC4, Key: {BitConverter.ToString(key).Replace("-", "")}");
 }