/// <summary> /// Logs the current db out /// </summary> /// <returns>false if already logged out, else true</returns> public bool Logout() { if (!_IsLoggedIn) { return(false); } _Password = null; _Salt = null; _Tries = 0; _Database = null; _Needs2FA = false; _IsLoggedIn = false; _Encryption = null; return(true); }
/// <summary> /// Updates the password of a virtual database /// </summary> /// <param name="oldpass">The current password</param> /// <param name="newpass">The new password</param> /// <returns>False if the current pass is wrong or it failed, true if it succeed</returns> public bool UpdatePassword(string oldpass, string newpass) { try { var accounts = GetAccounts(); if (oldpass == _Password) { using (var context = new PassContext()) { //try //{ _Database.Passhash = Easy.Hashing.Hash(newpass); _Password = newpass; _Encryption = new Easy.Encryption(Aes.Create(), _Password, _Salt, 10000); context.Databases.Update(_Database); context.SaveChanges(); //try //{ foreach (var account in accounts) { if (!Update(account)) { throw new ArgumentException("Updating an entry failed"); } } return(true); //} //catch (Exception e) { Console.WriteLine(e.Message); return false; } //} //catch(Exception e) { Console.WriteLine(e.Message); return false; } } } else { return(false); } } catch (Exception e) { throw e; } }
/// <summary> /// Opens and verifys an virtual database /// </summary> /// <param name="database">The name of the virtual database you want to open</param> /// <param name="password">The password used for encryption</param> /// <returns>LoginResult</returns> public LoginResult Login(string database, string password) { if (_Tries > 10) { return(LoginResult.TooMuchTries); } var dbs = GetDB(database); if (dbs == null) { return(LoginResult.Database_Not_Exist); } using (var context = new PassContext()) { var db = context.Databases.First(d => d.Id == dbs.Id); if (Easy.Hashing.Verify(db.Passhash, password)) { _Tries = 0; _Database = db; _Password = password; _Salt = db.Salt; _Encryption = new Easy.Encryption(Aes.Create(), _Password, _Salt, 10000); if (!string.IsNullOrEmpty(db.TwoFactorSecret)) { _Needs2FA = true; return(LoginResult.Needs2FA); } _IsLoggedIn = true; return(LoginResult.Success); } else { _Tries++; return(LoginResult.PasswordWrong); } } }