示例#1
0
        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);
            }
        }
示例#2
0
 internal void SendMessageAesEncrypted <T>(T message, byte[] aesKey) where T : Message
 {
     aesEncryption.SetKey(aesKey);
     tcpClient.Send(aesEncryption.Encrypt(coding.GetBytes(JsonSerializer.Serialize(message))));
 }