feat: wip network packet encryption

This commit is contained in:
2025-10-28 19:47:54 +03:00
parent 0691d7092c
commit 0bd2b0618d
5 changed files with 92 additions and 3 deletions

View File

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