Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            IPEndPoint       point         = new IPEndPoint(IPAddress.Parse(ip), port);
            Socket           clientSocket  = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            TlsClientManager clientManager = new TlsClientManager();
            RsaManager       rsaManager    = new RsaManager();

            try
            {
                clientSocket.Connect(point);

                StringBuilder builder = new StringBuilder();
                byte[]        buffer  = new byte[256];

                do
                {
                    int bytes = clientSocket.Receive(buffer);
                    builder.Append(Encoding.Unicode.GetString(buffer, 0, bytes));
                } while (clientSocket.Available > 0);
                clientManager.ParseSetConnectMessage(builder.ToString());
                builder.Clear();

                clientSocket.Send(Encoding.Unicode.GetBytes(clientManager.GetConnectAnswer()));

                while (true)
                {
                    while (clientSocket.Available == 0)
                    {
                        Thread.Sleep(100);
                    }

                    buffer = new byte[clientSocket.Available];
                    clientSocket.Receive(buffer);
                    bool   isSuccess;
                    string message = DeserializateMessage(buffer, clientManager, rsaManager, out isSuccess);
                    if (isSuccess)
                    {
                        Console.WriteLine($"{DateTime.Now} Server: {message}");
                    }

                    Console.Write($"{DateTime.Now} You: ");
                    string answer = Console.ReadLine();
                    clientSocket.Send(SerializateMessage(answer, clientManager, rsaManager));
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                Console.ReadKey();
            }
        }
Ejemplo n.º 2
0
        public void CompleteTest_EncryptAndDecryptMessage_ReturnTrue()
        {
            string           message        = RandomString((new Random()).Next(10, 1000));
            TlsServerManager serverManager  = new TlsServerManager();
            string           connectMessage = serverManager.GetConnectMessage();
            TlsClientManager clientManager  = new TlsClientManager();

            clientManager.ParseSetConnectMessage(connectMessage);
            var answer = serverManager.ParseConnectAnswer(clientManager.GetConnectAnswer());

            serverManager.SetClientPublicKey(answer);
            var IV = new byte[16];

            byte[] hashSum = null;
            bool   isSuccess;
            var    encryptManag = serverManager.EncryptMessage(message, out IV, out hashSum);
            string result       = clientManager.DecryptMessage(encryptManag, IV, hashSum, out isSuccess);

            Assert.IsTrue(isSuccess);
        }
Ejemplo n.º 3
0
        public void TestSerialization()
        {
            string           message        = RandomString((new Random()).Next(10, 1000));
            TlsServerManager serverManager  = new TlsServerManager();
            string           connectMessage = serverManager.GetConnectMessage();
            TlsClientManager clientManager  = new TlsClientManager();

            clientManager.ParseSetConnectMessage(connectMessage);
            var answer = serverManager.ParseConnectAnswer(clientManager.GetConnectAnswer());

            clientManager.ClearData();
            serverManager.SetClientPublicKey(answer);
            RsaManager rsaManager = new RsaManager();

            byte[] resultSerialize = Server.Program.SerializateMessage(message, serverManager, rsaManager);
            bool   isSuccess;
            string resultString = Server.Program.DeserializateMessage(resultSerialize, serverManager, rsaManager, out isSuccess);

            Assert.AreEqual(message, resultString);
        }