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); }
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); } } } } } } }
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); } } }
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); }
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); }
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); }