Example #1
0
        static void Main(string[] args)
        {
            IPEndPoint       point         = new IPEndPoint(IPAddress.Parse(ip), port);
            Socket           serverSocket  = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            TlsServerManager serverManager = new TlsServerManager();
            RsaManager       rsaManager    = new RsaManager();

            serverSocket.Bind(point);
            try
            {
                Console.WriteLine("Server is listeting");
                serverSocket.Listen(1);

                using (var socketHandler = serverSocket.Accept())
                {
                    Console.WriteLine("Connected!");
                    byte[]        buffer  = new byte[256];
                    StringBuilder builder = new StringBuilder();

                    string serverHello = serverManager.GetConnectMessage();
                    buffer = Encoding.Unicode.GetBytes(serverHello);
                    socketHandler.Send(buffer);

                    do
                    {
                        int bytes = socketHandler.Receive(buffer);
                        builder.Append(Encoding.Unicode.GetString(buffer, 0, bytes));
                    } while (socketHandler.Available > 0);

                    string clientHello = builder.ToString();
                    serverManager.SetClientPublicKey(serverManager.ParseConnectAnswer(clientHello));

                    string message;
                    bool   isSuccess;
                    while (true)
                    {
                        Console.Write($"{DateTime.Now} You: ");
                        message = Console.ReadLine();
                        socketHandler.Send(SerializateMessage(message, serverManager, rsaManager));

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

                        buffer = new byte[socketHandler.Available];
                        socketHandler.Receive(buffer);
                        string answer = DeserializateMessage(buffer, serverManager, rsaManager, out isSuccess);
                        if (isSuccess)
                        {
                            Console.WriteLine($"{DateTime.Now} Client: {answer}");
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
            }
        }
Example #2
0
        public void ParseConnectManager_GetNumber_ReturnTrue()
        {
            string           answer  = (new Random()).Next(0, int.MaxValue).ToString();
            TlsServerManager manager = new TlsServerManager();

            Assert.AreEqual(answer, manager.ParseConnectAnswer(answer));
        }
Example #3
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);
        }
Example #4
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);
        }