private void searchButton_Click(object sender, EventArgs e) { if (searchTextBox.Text.Length > 0) { internetCredential = database.SearchCredentialByName(searchTextBox.Text); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } else { MessageBox.Show("No result found.", "No Results"); } } else { MessageBox.Show("Search field cannot be empty.", "Missing Search Text"); } }
private void exportToolStripMenuItem_Click(object sender, EventArgs e) { List <Credential> allCredentials; Stream stream; StreamWriter streamWriter; if (exportSaveFileDialog.ShowDialog() == DialogResult.OK) { allCredentials = database.SelectAllCredentials(); stream = (Stream)exportSaveFileDialog.OpenFile(); streamWriter = new StreamWriter(stream); // Write the full credential record to the file foreach (Credential internetCredential in allCredentials) { streamWriter.WriteLine("Name: " + internetCredential.name + "\r\nUsername: "******"\r\nPassword: "******"\r\nURL: " + internetCredential.url + "\r\nDescription: " + internetCredential.description + "\r\n"); } streamWriter.Close(); stream.Close(); } }
private void categoryTreeView_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { if (e.Node.Equals(categoryTreeView.Nodes[0])) { // Don't do anything if the root element was clicked } else { // Get the text of the child node that has been clicked internetCredential = database.SelectCredentialByName(e.Node.Text); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } } }
private void newToolStripMenuItem_Click(object sender, EventArgs e) { if (database == null) { database = new SQLiteDatabase(); } if (File.Exists(Properties.Settings.Default.DatabaseFilename)) { if (MessageBox.Show("Are you sure you wish to create a new credential database?\nDoing so will delete the current database and ALL of its data!", "Make New Database", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { DeactivateMainForm(); database.DeleteDatabase(); NewPasswordForm newPasswordForm = new NewPasswordForm(); newPasswordForm.ShowDialog(); // Rederive key after getting new password from user CredentialEncryption.DeriveKey(); ActivateMainForm(); } } else { NewPasswordForm newPasswordForm = new NewPasswordForm(); newPasswordForm.ShowDialog(); ActivateMainForm(); } }
private void okButton_Click(object sender, EventArgs e) { if (nameTextBox.Text.Length < 1) { MessageBox.Show("Name cannot be blank.", "Missing Credential Name"); } else if (usernameTextBox.Text.Length < 1) { MessageBox.Show("Username cannot be blank.", "Missing Credential Username"); } else if (passwordTextBox.Text.Length < 1) { MessageBox.Show("Password cannot be blank.", "Missing Credential Password"); } else { if (MessageBox.Show("Save changes to this credential?", "Save Credential Changes", MessageBoxButtons.YesNo) == DialogResult.Yes) { database = new SQLiteDatabase(); internetCredential.name = nameTextBox.Text; internetCredential.username = CredentialEncryption.EncryptCredential(usernameTextBox.Text); internetCredential.password = CredentialEncryption.EncryptCredential(passwordTextBox.Text); internetCredential.url = urlTextBox.Text; internetCredential.description = descriptionTextBox.Text; database.UpdateInternetCredential(internetCredential, internetCredential.id); MessageBox.Show("New credential information saved.", "Changes Saved"); // Bypass the form closing event since the user already pressed the ok button userAlreadyClosing = true; this.Close(); } } }
private void EditCredentialForm_Load(object sender, EventArgs e) { encryptCredential = new CredentialEncryption(); idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; }
private void MainForm_Activated(object sender, EventArgs e) { Application.Idle += new EventHandler(Application_Idle); // Place the generated password into the password field when the users confirms copying it in the password generator if (SharedObject.generatedPassword.Length > 0) { passwordTextBox.Text = SharedObject.generatedPassword; SharedObject.generatedPassword = ""; internetCredential.id = Convert.ToInt32(idLabel.Text); internetCredential.name = nameTextBox.Text; internetCredential.username = CredentialEncryption.EncryptCredential(usernameTextBox.Text); internetCredential.password = CredentialEncryption.EncryptCredential(passwordTextBox.Text); internetCredential.url = urlTextBox.Text; internetCredential.description = descriptionTextBox.Text; database.UpdateInternetCredential(internetCredential, internetCredential.id); } else if (SharedObject.newCredentialAdded) { SharedObject.newCredentialAdded = false; // Depopulate treeview and then repopuate it with the new record categoryTreeView.Nodes[0].Nodes.Clear(); allNames = database.SelectCredentialNames(); if (allNames != null) { foreach (string name in allNames) { categoryTreeView.Nodes[0].Nodes.Add(name); } categoryTreeView.ExpandAll(); } // Show the recently added record to the user internetCredential = database.SelectInternetCredential(database.CountCredentials()); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } } }
private void nextButton_Click(object sender, EventArgs e) { internetCredential = database.SelectInternetCredential(Convert.ToInt32(idLabel.Text) + 1); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } }
private void editCredentialToolStripMenuItem_Click(object sender, EventArgs e) { if (nameTextBox.Text.Length > 0) { internetCredential.id = Convert.ToInt32(idLabel.Text); internetCredential.name = nameTextBox.Text; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); internetCredential.url = urlTextBox.Text; internetCredential.description = descriptionTextBox.Text; EditCredentialForm editCredentialForm = new EditCredentialForm(internetCredential); editCredentialForm.ShowDialog(); } else { MessageBox.Show("No credential exists to be edited.", "No Credential"); } }
private void deleteCredentialToolStripMenuItem_Click(object sender, EventArgs e) { if (nameTextBox.Text.Length > 0) { if (MessageBox.Show("Do you wish to delete this credential?\nThis data cannot be recovered once it is deleted.", "Delete Credential", MessageBoxButtons.YesNo) == DialogResult.Yes) { database.DeleteInternetCredential(Convert.ToInt32(idLabel.Text)); // Depopulate treeview and then repopuate it with the new record categoryTreeView.Nodes[0].Nodes.Clear(); allNames = database.SelectCredentialNames(); if (allNames != null) { foreach (string name in allNames) { categoryTreeView.Nodes[0].Nodes.Add(name); } categoryTreeView.ExpandAll(); } // Populate fields internetCredential = database.SelectFirstCredential(); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } } } else { MessageBox.Show("No credential exists to be deleted.", "No Credential"); } }
private void okButton_Click(object sender, EventArgs e) { if (nameTextBox.Text.Length < 1) { MessageBox.Show("Name cannot be blank.", "Missing Credential Name"); } else if (usernameTextBox.Text.Length < 1) { MessageBox.Show("Username cannot be blank.", "Missing Credential Username"); } else if (passwordTextBox.Text.Length < 1) { MessageBox.Show("Password cannot be blank.", "Missing Credential Password"); } else { if (MessageBox.Show("Add this credential to the database?", "Add New Credential", MessageBoxButtons.YesNo) == DialogResult.Yes) { internetCredential = new Credential(); database = new SQLiteDatabase(); encryptCredential = new CredentialEncryption(); internetCredential.name = nameTextBox.Text; internetCredential.username = CredentialEncryption.EncryptCredential(usernameTextBox.Text); internetCredential.password = CredentialEncryption.EncryptCredential(passwordTextBox.Text); internetCredential.url = urlTextBox.Text; internetCredential.description = descriptionTextBox.Text; database.InsertInternetCredential(internetCredential); MessageBox.Show("Credential added to the database.", "Credential Added"); SharedObject.newCredentialAdded = true; // Bypass the form closing event since the user already pressed the ok button userAlreadyClosing = true; this.Close(); } } }
private void okButton_Click(object sender, EventArgs e) { if (masterEntryTextBox.Text.Trim().Equals("") || masterConfirmTextBox.Text.Trim().Equals("")) { MessageBox.Show("Password fields cannot be blank.", "Missing Password"); } else { if (masterEntryTextBox.Text.Equals(masterConfirmTextBox.Text)) { database = new SQLiteDatabase(); credentials = database.SelectAllSecureCredentials(); // Decrypt all the usernames and passwords using the old key for (int i = 0; i < credentials.Count; i++) { credentials[i].username = CredentialEncryption.DecryptCredential(credentials[i].username); credentials[i].password = CredentialEncryption.DecryptCredential(credentials[i].password); } string hashString; if (Properties.Settings.Default.UseSHA3Hashing) { IHash hash = HashFactory.Crypto.SHA3.CreateKeccak512(); HashResult hashResult = hash.ComputeString(masterEntryTextBox.Text); hashString = hashResult.ToString(); } else { hashString = PasswordHash.CreateHash(masterEntryTextBox.Text); } database.UpdateHash(hashString); // Update salt? // Put user's password in a secure string for later use SharedObject.encryptedPassword.Clear(); foreach (char c in masterEntryTextBox.Text) { SharedObject.encryptedPassword.AppendChar(c); } // Re-encrypt all the usernames and password using the new key CredentialEncryption.DeriveKey(); for (int i = 0; i < credentials.Count; i++) { credentials[i].username = CredentialEncryption.EncryptCredential(credentials[i].username); credentials[i].password = CredentialEncryption.EncryptCredential(credentials[i].password); database.UpdateSecureCredential(credentials[i], credentials[i].id); } // SharedObject.passwordGood = true; this.Close(); } else { MessageBox.Show("Passwords do not match.", "Mismatched Passwords"); } } }
public void ActivateMainForm() { internetCredential = new Credential(); if (database == null) { database = new SQLiteDatabase(); } CredentialEncryption.DeriveKey(); // Activate window controls categoryTreeView.Visible = true; nameLabel.Visible = true; nameTextBox.Visible = true; usernameLabel.Visible = true; usernameTextBox.Visible = true; passwordLabel.Visible = true; passwordTextBox.Visible = true; urlLabel.Visible = true; urlTextBox.Visible = true; descriptionLabel.Visible = true; descriptionTextBox.Visible = true; searchTextBox.Visible = true; searchButton.Visible = true; // Activate menu controls openToolStripMenuItem.Enabled = false; closeToolStripMenuItem.Enabled = true; saveBackupAsToolStripMenuItem.Enabled = true; changeMasterPasswordToolStripMenuItem.Enabled = true; exportToolStripMenuItem.Enabled = true; lockToolStripMenuItem.Enabled = true; lockToolStripMenuItem.Text = "&Lock"; addCredentialToolStripMenuItem.Enabled = true; editCredentialToolStripMenuItem.Enabled = true; deleteCredentialToolStripMenuItem.Enabled = true; copyUsernameToolStripMenuItem.Enabled = true; copyPasswordToolStripMenuItem.Enabled = true; hideUsernamePasswordToolStripMenuItem.Enabled = true; passwordGeneratorToolStripMenuItem.Enabled = true; goToWebsiteToolStripMenuItem.Enabled = true; optionsToolStripMenuItem.Enabled = true; // Populate treeview allNames = database.SelectCredentialNames(); if (allNames != null) { foreach (string name in allNames) { categoryTreeView.Nodes[0].Nodes.Add(name); } categoryTreeView.ExpandAll(); } // Set all tooltips treeviewToolTip.SetToolTip(categoryTreeView, "Click on a credential record's name to go directly to that record."); searchToolTip.SetToolTip(searchButton, "Enter the name of a credential record to search for."); // Populate fields internetCredential = database.SelectFirstCredential(); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } }
private void categoryTreeView_KeyUp(object sender, KeyEventArgs e) { if (e.KeyCode == Keys.Left) { // Stop the control from registering the left key press e.Handled = true; } else if (e.KeyCode == Keys.Right) { // Stop the control from registering the right key press e.Handled = true; } else if (e.KeyCode == Keys.Up) { if (categoryTreeView.SelectedNode.Equals(categoryTreeView.Nodes[0])) { // Don't do anything if the root element was selected } else { // Get the text of the child node that has been selected internetCredential = database.SelectCredentialByName(categoryTreeView.SelectedNode.Text); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } } } else if (e.KeyCode == Keys.Down) { if (categoryTreeView.SelectedNode.Equals(categoryTreeView.Nodes[0])) { // Don't do anything if the root element was selected } else { // Get the text of the child node that has been selected internetCredential = database.SelectCredentialByName(categoryTreeView.SelectedNode.Text); if (internetCredential != null) { if (internetCredential.name != null) { idLabel.Text = internetCredential.id.ToString(); nameTextBox.Text = internetCredential.name; usernameTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.username); passwordTextBox.Text = CredentialEncryption.DecryptCredential(internetCredential.password); urlTextBox.Text = internetCredential.url; descriptionTextBox.Text = internetCredential.description; } } } } }