Exemple #1
0
        /// <summary>
        /// Metoda służąca do przeprowadzenia procedury logowania
        /// </summary>
        private void LoginMethod()
        {
            if (PwdTextBox.Text != "" && LoginTextBox.Text != "")
            {
                //Zebranie danych z pol okna logowania
                string login = LoginTextBox.Text;
                string pwd   = PwdTextBox.Text;
                //Zaszyfrowanie hasla i usuniecie z pamieci
                byte[] pwdArray = BindingModule.enc.GetBytes(pwd);
                StatusLabel.Text = "Login in progress";
                pwd = "";
                PwdTextBox.ResetText();
                //Uruchomienie modulu komunkacji
                if (!mw.cm.Run("localhost", "pkryserver.jumpingcrab.com"))
                {
                    StatusLabel.Text = "Not able to tart comunnication module";
                    return;
                }
                //Wyslanie loginu i oczekiwanie na odp
                int n = mw.cm.SendLogin(login);
                //Reakcja na bledny login
                if (n == 0)
                {
                    StatusLabel.Text = "Signing in failed, wrong login";
                    mw.cm.Stop();
                }
                //Poprawny login hashowanie i wyslanie hasla
                else
                {
                    pwdArray = CryptoModule.HashNTimes(pwdArray, --n);
                    //send pwdArray
                    //Poczekaj na odpowiedz

                    // bool response = mw.cm.SendPwd(pwdArray);
                    if (mw.cm.SendPwd(pwdArray))
                    {
                        BindingModule.setLogin(login);
                        //Udane logowanie, czekam na certyfikat
                        StatusLabel.Text = "Waiting for certificate";
                        //Otrzymany certyfikat
                        byte[]           certificateRawData = mw.cm.GetCertificate();
                        X509Certificate2 certificate        = CryptoModule.CreatePrivateCertFromRawData(certificateRawData);
                        CryptoModule.ImportKey(certificate, true, false);
                        CryptoModule.ImportKey(certificate, true, true);

                        mw.EnableDisableControls(true);
                        mw.DisableLogBtn();
                        mw.WriteInLog("Logged in!");
                        mw.cm.Run();
                        this.Close();
                    }
                    else
                    {
                        StatusLabel.Text = "Signing in failed, wrong password";
                    }
                }
            }
            else
            {
                StatusLabel.Text = "Need more data to proceed";
            }
        }