From 67ae57619252bc3a888219ba5042081a0facda92 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Fri, 6 Dec 2019 22:53:04 -0500 Subject: [PATCH] Updated to .Net Core 3.1 --- Source/BNetServer/BNetServer.csproj | 3 +- Source/Framework/Cryptography/PacketCrypt.cs | 38 +++++--------------- Source/Framework/Framework.csproj | 10 +++--- Source/Game/Game.csproj | 2 +- Source/Game/Network/WorldSocket.cs | 4 +-- Source/Scripts/Scripts.csproj | 2 +- Source/WorldServer/WorldServer.csproj | 2 +- 7 files changed, 18 insertions(+), 43 deletions(-) diff --git a/Source/BNetServer/BNetServer.csproj b/Source/BNetServer/BNetServer.csproj index d18f4effa..5eb6a9878 100644 --- a/Source/BNetServer/BNetServer.csproj +++ b/Source/BNetServer/BNetServer.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.2 + netcoreapp3.1 BNetServer.Server Red.ico @@ -19,5 +19,4 @@ PreserveNewest - diff --git a/Source/Framework/Cryptography/PacketCrypt.cs b/Source/Framework/Cryptography/PacketCrypt.cs index df994f882..3aeca256e 100644 --- a/Source/Framework/Cryptography/PacketCrypt.cs +++ b/Source/Framework/Cryptography/PacketCrypt.cs @@ -15,7 +15,6 @@ * along with this program. If not, see . */ -using Security.Cryptography; using System; using System.Security.Cryptography; @@ -31,46 +30,25 @@ namespace Framework.Cryptography if (IsInitialized) throw new InvalidOperationException("PacketCrypt already initialized!"); - _clientDecrypt = new AuthenticatedAesCng(); - _clientDecrypt.Key = key; - _clientDecrypt.CngMode = CngChainingMode.Gcm; - _clientDecrypt.TagSize = 96; - - _serverEncrypt = new AuthenticatedAesCng(); - _serverEncrypt.Key = key; - _serverEncrypt.CngMode = CngChainingMode.Gcm; - _serverEncrypt.TagSize = 96; + _serverEncrypt = new AesGcm(key); + _clientDecrypt = new AesGcm(key); IsInitialized = true; } - public bool Encrypt(ref byte[] data, int length, ref byte[] tag) + public bool Encrypt(ref byte[] data, ref byte[] tag) { if (IsInitialized) - { - _serverEncrypt.IV = BitConverter.GetBytes(_serverCounter).Combine(BitConverter.GetBytes(0x52565253)); - - using (IAuthenticatedCryptoTransform encryptor = _serverEncrypt.CreateAuthenticatedEncryptor()) - { - data = encryptor.TransformFinalBlock(data, 0, length); - tag = encryptor.GetTag(); - } - } + _serverEncrypt.Encrypt(BitConverter.GetBytes(_serverCounter).Combine(BitConverter.GetBytes(0x52565253)), data, data, tag); ++_serverCounter; return true; } - public bool Decrypt(ref byte[] data, int length, byte[] tag) + public bool Decrypt(ref byte[] data, byte[] tag) { if (IsInitialized) - { - _clientDecrypt.IV = BitConverter.GetBytes(_clientCounter).Combine(BitConverter.GetBytes(0x544E4C43)); - _clientDecrypt.Tag = tag; - - using (ICryptoTransform decryptor = _clientDecrypt.CreateDecryptor()) - data = decryptor.TransformFinalBlock(data, 0, length); - } + _clientDecrypt.Decrypt(BitConverter.GetBytes(_clientCounter).Combine(BitConverter.GetBytes(0x544E4C43)), data, tag, data); ++_clientCounter; return true; @@ -83,8 +61,8 @@ namespace Framework.Cryptography public bool IsInitialized { get; set; } - AuthenticatedAesCng _clientDecrypt; - AuthenticatedAesCng _serverEncrypt; + AesGcm _serverEncrypt; + AesGcm _clientDecrypt; ulong _clientCounter; ulong _serverCounter; } diff --git a/Source/Framework/Framework.csproj b/Source/Framework/Framework.csproj index 91d9cc2ef..047fb819c 100644 --- a/Source/Framework/Framework.csproj +++ b/Source/Framework/Framework.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + netstandard2.1 x64 true @@ -11,11 +11,9 @@ - - - - - + + + diff --git a/Source/Game/Game.csproj b/Source/Game/Game.csproj index 12ce67d3c..61028b248 100644 --- a/Source/Game/Game.csproj +++ b/Source/Game/Game.csproj @@ -1,7 +1,7 @@ - netstandard2.0 + netstandard2.1 x64 true 7.3 diff --git a/Source/Game/Network/WorldSocket.cs b/Source/Game/Network/WorldSocket.cs index 4c499cc8e..acdb07e83 100644 --- a/Source/Game/Network/WorldSocket.cs +++ b/Source/Game/Network/WorldSocket.cs @@ -157,7 +157,7 @@ namespace Game.Network var data = new byte[header.Size]; Buffer.BlockCopy(GetReceiveBuffer(), 16, data, 0, header.Size); - if (!_worldCrypt.Decrypt(ref data, header.Size, header.Tag)) + if (!_worldCrypt.Decrypt(ref data, header.Tag)) { Log.outError(LogFilter.Network, $"WorldSocket.ReadHandler(): client {GetRemoteIpAddress().ToString()} failed to decrypt packet (size: {header.Size})"); return; @@ -315,7 +315,7 @@ namespace Game.Network PacketHeader header = new PacketHeader(); header.Size = packetSize; - _worldCrypt.Encrypt(ref data, header.Size, ref header.Tag); + _worldCrypt.Encrypt(ref data, ref header.Tag); ByteBuffer byteBuffer = new ByteBuffer(); header.Write(byteBuffer); diff --git a/Source/Scripts/Scripts.csproj b/Source/Scripts/Scripts.csproj index 2ec347b4d..818fc7602 100644 --- a/Source/Scripts/Scripts.csproj +++ b/Source/Scripts/Scripts.csproj @@ -1,6 +1,6 @@ - netstandard2.0 + netstandard2.1 x64 diff --git a/Source/WorldServer/WorldServer.csproj b/Source/WorldServer/WorldServer.csproj index a4b710641..42c98386e 100644 --- a/Source/WorldServer/WorldServer.csproj +++ b/Source/WorldServer/WorldServer.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.2 + netcoreapp3.1 Blue.ico WorldServer.Server