private void Call_Password_Window(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = FileDialog.CreateDefaultDialog(false); if (openFileDialog.ShowDialog() == true) { store_path = openFileDialog.FileName; try { CryptoFile cryptoFile = CryptoProtocol.Read(store_path); PasswordEnterWindow passwordEnterWindow = new PasswordEnterWindow(cryptoFile); if (passwordEnterWindow.ShowDialog() == true) { Window window = new MainWindow(passwordEnterWindow.Password, passwordEnterWindow.Items, store_path); window.Show(); this.Close(); return; } } catch (FileFormatException exp) { string file_isnot_store_string = (string)Application.Current.FindResource("file_isnot_store_string"); MessageBox.Show(file_isnot_store_string, file_isnot_store_string, MessageBoxButton.OK, MessageBoxImage.Error); } } }
public void storeData() { Crypter crypter = new Crypter(MasterPassword.Password); StringBuilder str = new StringBuilder(); foreach (ServiceLoginPassword slp in items) { str.Append($"{slp.ServiceName} : {slp.Login} : {slp.Password.Password}\n"); } byte[] encrypted = crypter.Encrypt(str.ToString()); byte[] salty = UsefulTools.ComputeSaltySHA256(Encoding.UTF8.GetBytes(str.ToString()), crypter.Salt); CryptoFile cryptoFile = new CryptoFile(encrypted, salty, crypter.IV, crypter.Salt); CryptoProtocol.Save(cryptoFile, store_path); }
public static CryptoFile Read(string filepath) { CryptoFile file = new CryptoFile(); int size; using (BinaryReader streamReader = new BinaryReader(File.Open(filepath, FileMode.OpenOrCreate))) { if (streamReader.BaseStream.Position == streamReader.BaseStream.Length) { throw new FileFormatException("Invalid store file format!"); } byte version = streamReader.ReadByte(); if (streamReader.BaseStream.Position == streamReader.BaseStream.Length) { throw new FileFormatException("Invalid store file format!"); } while (streamReader.BaseStream.Position != streamReader.BaseStream.Length) { byte code = streamReader.ReadByte(); switch (code) { case cipher_byte: size = streamReader.ReadInt32(); file.Cipher_text = streamReader.ReadBytes(size); break; case hash_byte: size = streamReader.ReadInt32(); file.Hash = streamReader.ReadBytes(size); break; case IV_byte: size = streamReader.ReadInt32(); file.IV = streamReader.ReadBytes(size); break; case salt_byte: size = streamReader.ReadInt32(); file.Salt = streamReader.ReadBytes(size); break; default: throw new FileFormatException("Invalid store file format!"); } } } return(file); }
public static void Save(CryptoFile crypto_file, string filepath) { using (BinaryWriter writer = new BinaryWriter(File.Open(filepath, FileMode.Create))) { writer.Write(version_byte); writer.Write(cipher_byte); writer.Write(crypto_file.Cipher_text.Length); writer.Write(crypto_file.Cipher_text); writer.Write(hash_byte); writer.Write(32); writer.Write(crypto_file.Hash); writer.Write(IV_byte); writer.Write(crypto_file.IV.Length); writer.Write(crypto_file.IV); writer.Write(salt_byte); writer.Write(crypto_file.Salt.Length); writer.Write(crypto_file.Salt); } }
private void Call_Empty_Store_Window(object sender, RoutedEventArgs e) { OpenFileDialog openFileDialog = FileDialog.CreateDefaultDialog(true); if (openFileDialog.ShowDialog() == true) { store_path = openFileDialog.FileName; EmptyStoreWindow emptyStoreWindow = new EmptyStoreWindow(); if (emptyStoreWindow.ShowDialog() == true) { Crypter crypter = new Crypter(emptyStoreWindow.Password.Password); byte[] encrypted = crypter.Encrypt(""); byte[] salty = UsefulTools.ComputeSaltySHA256(Encoding.UTF8.GetBytes(""), crypter.Salt); CryptoFile cryptoFile = new CryptoFile(encrypted, salty, crypter.IV, crypter.Salt); CryptoProtocol.Save(cryptoFile, store_path); Window window = new MainWindow(emptyStoreWindow.Password, new List <ServiceLoginPassword>(), store_path); window.Show(); this.Close(); return; } } }
public static CryptoFile getEmptyStore() { CryptoFile cryptoFile = new CryptoFile(); return(cryptoFile); }
public PasswordEnterWindow(CryptoFile cryptoFile) { InitializeComponent(); this.cryptoFile = cryptoFile; Password1.Focus(); }