feat: wip network packet encryption
This commit is contained in:
@@ -12,6 +12,7 @@ namespace Engine.Systems.Network;
|
||||
public abstract class LiteNetLibCommunicatorBase : Behaviour, IEnterUniverse, IExitUniverse, INetworkCommunicator
|
||||
{
|
||||
protected readonly NetPacketProcessor netPacketProcessor = new();
|
||||
protected readonly PacketCryptor cryptor = new("At4ywW9PGoWH3g==", "NmpMFTvd3pvUbA=="); // TODO implement public key exchange
|
||||
|
||||
private readonly Dictionary<Type, Event<IConnection, object>> listeners = [];
|
||||
private readonly Dictionary<string, IConnection> _connections = [];
|
||||
@@ -54,7 +55,20 @@ public abstract class LiteNetLibCommunicatorBase : Behaviour, IEnterUniverse, IE
|
||||
|
||||
private void NetworkReceiveEvent(NetPeer peer, NetPacketReader reader, byte channel, DeliveryMethod deliveryMethod)
|
||||
{
|
||||
try { netPacketProcessor.ReadAllPackets(reader, peer); }
|
||||
try
|
||||
{
|
||||
bool isEncrypted = reader.GetBool();
|
||||
if (isEncrypted) // TODO performance improvements
|
||||
{
|
||||
byte[] encryptedData = reader.GetBytesWithLength();
|
||||
byte[] decryptedData = cryptor.Decrypt(encryptedData);
|
||||
NetDataReader innerReader = new(decryptedData);
|
||||
netPacketProcessor.ReadAllPackets(innerReader, peer);
|
||||
return;
|
||||
}
|
||||
|
||||
netPacketProcessor.ReadAllPackets(reader, peer);
|
||||
}
|
||||
catch (Exception exception) { logger?.LogException(this, exception, force: true); }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user