1
0
mirror of https://github.com/oliverbooth/TcpDotNet synced 2024-10-18 08:36:11 +00:00

Switch to AES encryption prior to sending session token

This commit is contained in:
Oliver Booth 2022-07-09 10:47:39 +01:00
parent f7a546850c
commit a0d686109c
No known key found for this signature in database
GPG Key ID: 32A00B35503AF634
2 changed files with 8 additions and 6 deletions

View File

@ -32,10 +32,9 @@ internal sealed class EncryptionResponsePacketHandler : PacketHandler<Encryption
client.Aes = CryptographyUtils.GenerateAes(key); client.Aes = CryptographyUtils.GenerateAes(key);
client.State = ClientState.Connected; client.State = ClientState.Connected;
client.ParentListener.OnClientConnect(client); client.ParentListener.OnClientConnect(client);
client.UseEncryption = true;
var sessionPacket = new SessionExchangePacket(client.SessionId); var sessionPacket = new SessionExchangePacket(client.SessionId);
await client.SendPacketAsync(sessionPacket, cancellationToken); await client.SendPacketAsync(sessionPacket, cancellationToken);
client.UseEncryption = true;
} }
} }

View File

@ -114,13 +114,16 @@ public sealed class ProtocolClient : BaseClientNode
var key = new byte[128]; var key = new byte[128];
using var rng = new RNGCryptoServiceProvider(); using var rng = new RNGCryptoServiceProvider();
rng.GetBytes(key); rng.GetBytes(key);
Aes = CryptographyUtils.GenerateAes(key); Aes = CryptographyUtils.GenerateAes(key);
var encryptionResponse = new EncryptionResponsePacket(encryptedPayload, rsa.Encrypt(key, true)); byte[] aesKey = rsa.Encrypt(key, true);
var sessionPacket = await SendAndReceiveAsync<EncryptionResponsePacket, SessionExchangePacket>(encryptionResponse, cancellationToken); var encryptionResponse = new EncryptionResponsePacket(encryptedPayload, aesKey);
await SendPacketAsync(encryptionResponse, cancellationToken);
UseEncryption = true;
var sessionPacket = await WaitForPacketAsync<SessionExchangePacket>(cancellationToken);
SessionId = sessionPacket.Session; SessionId = sessionPacket.Session;
UseEncryption = true;
State = ClientState.Connected; State = ClientState.Connected;
} }