private void KeyExchange() { //todo: add handling of an unsuccessful key exchange ReadServerPublicKey(); AesKeyExchangeRequest keyExchangeRequest = new AesKeyExchangeRequest(aesEncryption.GetKey(), aesEncryption.GetIV(), UserName); tcpClient.Send(rsa.Encrypt(coding.GetBytes(JsonSerializer.Serialize(keyExchangeRequest)), false)); byte[] rawResponse = tcpClient.GetMessage(); Response response = ParseMessage <Response>(rawResponse, serverKey); if (response.Code == StatusCode.Ok) { userState = UserState.Connected; } else { Console.WriteLine(response.Message); } }
internal void SendMessageAesEncrypted <T>(T message, byte[] aesKey) where T : Message { aesEncryption.SetKey(aesKey); tcpClient.Send(aesEncryption.Encrypt(coding.GetBytes(JsonSerializer.Serialize(message)))); }