private void DoLogin(object parameter) { UIServices.SetBusyState(); _logger.Info("reset error msg"); ErrorMsg = string.Empty; _logger.Info("starting with login process"); if (!string.IsNullOrEmpty(_login) && _login.Length >= 6) { var values = (object[])parameter; var passwordBox = values[0] as PasswordBox; if (passwordBox != null) { _logger.Info("password parameter is not null"); string password = passwordBox.Password; if (!string.IsNullOrEmpty(password)) { _logger.Info("password is not null or empty"); _logger.Info("check for exsisting login"); var database = Container.Resolve <IDataAccessLayer>(); List <MasterLogin> logins = database.GetAll <MasterLogin>(); if (logins.Count == 1) { var login = database.GetSingleByName <MasterLogin>(_login); if (login != null) { _logger.Info("login do exsits"); byte[] hashedPassword = _cryptographyService.HashPassword(password, login.Salt); _logger.Info("compare passwords..."); if (_cryptographyService.Compare(hashedPassword, login.Password)) { _logger.Info("...login verified."); OpenMainView(values); } else { _logger.Error("...login failed."); ErrorMsg = "Login failed!"; } } else { _logger.Error("master login already exists"); ErrorMsg = "Master login already exists!"; } } else if (logins.Count == 0) { _logger.Info("login do not exsits"); byte[] salt = _cryptographyService.GenerateSalt(); byte[] hashedPassword = _cryptographyService.HashPassword(password, salt); _cryptographyService.AssignNewKeys(); var masterLogin = new MasterLogin { Name = _login, Password = hashedPassword, Salt = salt, PrivateKey = _cryptographyService.GetPrivateKeyAsXml(), PublicKey = _cryptographyService.GetPublicKey(), }; database.Insert(masterLogin); OpenMainView(values); } } else { _logger.Error("password is null or empty!"); ErrorMsg = "Password is empty!"; } } } else { _logger.Error("login is null, empty or have less then 6 characters!"); ErrorMsg = "Login have less then 6 characters!"; } }
public void CompareTest() { var array1 = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5 }; var array2 = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5 }; bool result = _cryptographyService.Compare(array1, array2); Assert.IsTrue(result); var array3 = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5 }; var array4 = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x4 }; bool result2 = _cryptographyService.Compare(array3, array4); Assert.IsFalse(result2); var array5 = new byte[] { 0x1, 0x2, 0x3, 0x4, 0x5 }; var array6 = new byte[] { 0x0, 0x2, 0x3, 0x4, 0x4 }; bool result3 = _cryptographyService.Compare(array5, array6); Assert.IsFalse(result3); }
private void Confirm(object obj) { UIServices.SetBusyState(); _logger.Info("password change confirmed"); _logger.Info("parsing parameters"); var parameters = (object[])obj; var oldPasswordBox = parameters[0] as PasswordBox; var newPasswordBox = parameters[1] as PasswordBox; var newPassword2Box = parameters[2] as PasswordBox; if (oldPasswordBox != null && newPasswordBox != null && newPassword2Box != null) { _logger.Info("parameters not null"); _logger.Info("get login data"); MasterLogin login = _database.GetAll <MasterLogin>().First(); _logger.Info("hash entered password"); byte[] hashedPassword = _cryptographyService.HashPassword(oldPasswordBox.Password, login.Salt); _logger.Info("compare entered and stored passwords"); if (_cryptographyService.Compare(hashedPassword, login.Password)) { _logger.Info("password are correct"); string newPassword1 = newPasswordBox.Password; string newPassword2 = newPassword2Box.Password; _logger.Info("compare new passwords"); if (newPassword1 == newPassword2) { _logger.Info("hash new password"); byte[] newSalt = _cryptographyService.GenerateSalt(); byte[] newHashedPassword = _cryptographyService.HashPassword(newPassword1, newSalt); login.Salt = newSalt; login.Password = newHashedPassword; _logger.Info("save changes"); _database.Update(login); _logger.Info("changes are saved"); InformUserAndClose(parameters); } else { _logger.Error("new passwords do not match"); ErrorMsg = "Passwords do not match!"; } } else { _logger.Error("current password is wrong!"); ErrorMsg = "Old Password is wrong!"; } } else { _logger.Error("parameters are null!"); ErrorMsg = "Something went wrong, pleas try again."; } }