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 Insert() { List<Contact> contacts = _dataAccess.GetAll<Contact>(); Assert.IsTrue(contacts.Count == 0); List<MasterLogin> materLogins = _dataAccess.GetAll<MasterLogin>(); Assert.IsTrue(materLogins.Count == 0); var hybridEncrypter = new HybridRsaAes(); hybridEncrypter.AssignNewRSAKeys(); var contact = new Contact { Name = "Marcel", PublicKey = hybridEncrypter.GetPublicRSAKey() }; _dataAccess.Insert(contact); contacts = _dataAccess.GetAll<Contact>(); Assert.IsTrue(contacts.Count == 1); var salt = PBKDF2Impl.GenerateSalt(); hybridEncrypter = new HybridRsaAes(); hybridEncrypter.AssignNewRSAKeys(); var materLogin = new MasterLogin { Name = "MasterMan", Password = PBKDF2Impl.HashPassword(Encoding.UTF8.GetBytes("password123"), salt), Salt = salt, PrivateKey = hybridEncrypter.GetPrivateRSAKeyAsXml(), PublicKey = hybridEncrypter.GetPublicRSAKey() }; _dataAccess.Insert(materLogin); materLogins = _dataAccess.GetAll<MasterLogin>(); Assert.IsTrue(materLogins.Count == 1); }