private static void transferWithPGP(AdvanceStream stream)
        {
            AES aes = AES.getInstance();
            RSA rsa = new RSA("Server");

            byte[] encrypytedSessionKey = stream.ReadBytes();
            byte[] sessionKeyBytes      = rsa.decrypt(encrypytedSessionKey, KeysManager.RSAPrivateKey);
            string encrypteTransferData = stream.ReadString();
            string decrptedTransferData = aes.Decrypt(encrypteTransferData, getString(sessionKeyBytes));


            MainWindow.instance.Log("Encrypted Session Key", Convert.ToBase64String(encrypytedSessionKey));
            MainWindow.instance.Log("Decrypted Session Key", Convert.ToBase64String(sessionKeyBytes));
            MainWindow.instance.Log("Encrypted Transfer Data", encrypteTransferData);
            MainWindow.instance.Log("Decrypted Transfer Data", decrptedTransferData);


            string clientPublicKey = stream.ReadString();

            MainWindow.instance.Log("Client Public RSA Key", clientPublicKey);


            byte[] signture = stream.ReadBytes();

            string recivedMessage = getString(encrypytedSessionKey) + encrypteTransferData;

            if (rsa.verifyData(getBytes(recivedMessage), clientPublicKey, signture))
            {
                TransactionObject tran = TransactionObject.newLoginObject(decrptedTransferData);

                if (DBContext.DoTransaction(tran.senderID, tran.reciverID, tran.amount))
                {
                    MainWindow.instance.Log("Transfer money done");
                }
                else
                {
                    MainWindow.instance.Log("Can't transfer money");
                }
            }
            else
            {
                MainWindow.instance.Log("Can't transfer money invalide signture");
            }
            MainWindow.instance.Log();
        }
        private static void transferWithRSA(AdvanceStream stream)
        {
            RSA rsa = new RSA("Server");

            byte[] encrypytedTransferBytes = stream.ReadBytes();
            byte[] decryptedTransferBytes  = rsa.decrypt(encrypytedTransferBytes, KeysManager.RSAPrivateKey);
            MainWindow.instance.Log("Encrypted Transfer Data", getString(encrypytedTransferBytes));
            MainWindow.instance.Log("Decrypted Transfer Data", getString(decryptedTransferBytes));

            TransactionObject tran = TransactionObject.newLoginObject(getString(decryptedTransferBytes));

            if (DBContext.DoTransaction(tran.senderID, tran.reciverID, tran.amount))
            {
                MainWindow.instance.Log("Transaction Ok");
            }
            else
            {
                MainWindow.instance.Log("Transaction Error");
            }

            MainWindow.instance.Log();
        }