Esempio n. 1
0
        public static DarkRiftReader DecryptReaderRSA(this DarkRiftReader reader, RSAParameters privateKey)
        {
            if (reader.Length > 256)
            {
                throw new ArgumentOutOfRangeException(nameof(reader), "reader mustn't contain more then 256 bytes");
            }

            byte[] data = new byte[256];
            for (int i = 0; i < 256; i++)
            {
                data[i] = reader.ReadByte();
            }

            data = DecryptRSA(data, privateKey);

            DarkRiftWriter writer = DarkRiftWriter.Create();

            writer.WriteRaw(data, 0, data.Length);
            Message        message   = Message.Create(0, writer);
            DarkRiftReader newReader = message.GetReader();

            message.Dispose();
            writer.Dispose();
            reader.Dispose();
            return(newReader);
        }
Esempio n. 2
0
        public void WeaponUpdateMessageRecieved(object sender, MessageReceivedEventArgs e)
        {
            using (Message message = e.GetMessage() as Message)
            {
                if (message.Tag == Tags.WeaponFireStartTag || message.Tag == Tags.WeaponFireEndTag || message.Tag == Tags.WeaponActionTag)
                {
                    using (DarkRiftReader reader = message.GetReader())
                    {
                        WeaponFireClientDTO data = reader.ReadSerializable <WeaponFireClientDTO>(); //Read the weapon fire dto off the stack

                        using (DarkRiftWriter fireStartWriter = DarkRiftWriter.Create())
                        {
                            WeaponFireServerDTO fireData = new WeaponFireServerDTO();
                            fireData.playerID = e.Client.ID;
                            fireData.fireNum  = data.fireNum;

                            fireStartWriter.Write(fireData);
                            int    extrastart   = reader.Position;
                            int    extralength  = reader.Length - reader.Position;
                            byte[] rawExtradata = reader.ReadRaw(extralength);
                            fireStartWriter.WriteRaw(rawExtradata, 0, extralength); //Write the extra data from the message
                            //TODO: Think about security implications of sending raw data from client to all clients

                            using (Message fireStartMessage = Message.Create(message.Tag, fireStartWriter)) //Repeat the incoming tagname as all message bodies are the same
                            {
                                foreach (IClient client in worldManager.clients[e.Client].World.GetClients().Where(x => x != e.Client))
                                {
                                    client.SendMessage(fireStartMessage, SendMode.Reliable);
                                }
                            }
                        }
                    }
                }
            }
        }
Esempio n. 3
0
 public bool ClientSend(byte dataChannel, DeliveryMethod deliveryMethod, NetDataWriter writer)
 {
     using (DarkRiftWriter drWriter = DarkRiftWriter.Create(writer.Length))
     {
         drWriter.WriteRaw(writer.Data, 0, writer.Length);
         using (Message message = Message.Create(0, drWriter))
         {
             return(Client.SendMessage(message, GetSendMode(deliveryMethod)));
         }
     }
 }
        void IClientTransportLayer.SendData(byte[] data, uint offset, uint length)
        {
            using (DarkRiftWriter writer = DarkRiftWriter.Create())
            {
                writer.WriteRaw(data, (int)offset, (int)length);

                using (var message = DarkRift.Message.Create(0, writer))
                {
                    this.client.SendMessage(message, SendMode.Reliable);
                }
            }
        }
Esempio n. 5
0
        public static DarkRiftWriter EncryptWriterRSA(this DarkRiftWriter writer, RSAParameters publicKey)
        {
            Message        message = Message.Create(0, writer);
            DarkRiftReader reader  = message.GetReader();

            byte[] data = reader.ReadRaw(reader.Length);
            data   = EncryptRSA(data, publicKey);
            writer = DarkRiftWriter.Create();
            writer.WriteRaw(data, 0, data.Length);

            message.Dispose();
            reader.Dispose();
            return(writer);
        }
Esempio n. 6
0
        public static DarkRiftWriter EncryptWriterAES(this DarkRiftWriter writer, byte[] key)
        {
            Message        message = Message.Create(0, writer);
            DarkRiftReader reader  = message.GetReader();

            byte[] data = reader.ReadRaw(reader.Length);
            data = Encrypt_Aes(data, key);
            DarkRiftWriter _writer = DarkRiftWriter.Create();

            _writer.WriteRaw(data, 0, data.Length);

            message.Dispose();
            reader.Dispose();
            return(_writer);
        }
Esempio n. 7
0
 public bool ServerSend(long connectionId, byte dataChannel, DeliveryMethod deliveryMethod, NetDataWriter writer)
 {
     if (IsServerStarted && serverPeers.ContainsKey(connectionId) && serverPeers[connectionId].ConnectionState == DarkRift.ConnectionState.Connected)
     {
         using (DarkRiftWriter drWriter = DarkRiftWriter.Create(writer.Length))
         {
             drWriter.WriteRaw(writer.Data, 0, writer.Length);
             using (Message message = Message.Create(0, drWriter))
             {
                 return(serverPeers[connectionId].SendMessage(message, GetSendMode(deliveryMethod)));
             }
         }
     }
     return(false);
 }