Example #1
0
        public void SaveVault(string filename)
        {
            /// Serialize
            MemoryStream    stream     = new MemoryStream();
            BinaryFormatter serializer = new BinaryFormatter();

            serializer.Serialize(stream, Entries);

            byte [] serializedVault = stream.ToArray();

            /// Encrypt
            IEncryptionUtility encryptor =
                EncryptionUtilityFactory.BuildEncryptionUtility();

            byte [] encryptedVault = encryptor.EncryptBinary(
                serializedVault, this.Password);

            /// Save encrypted contents to file, overwritting if exists
            FileStream outputFile = new FileStream(filename, FileMode.Create);

            outputFile.Write(encryptedVault, 0, encryptedVault.Length);
            outputFile.Close();

            isUnsavedChanges = false;
        }
Example #2
0
        public void OpenVault(string filename)
        {
            // open file
            FileStream inputFile = new FileStream(filename, FileMode.Open);

            byte [] encryptedVault = new byte [inputFile.Length];
            inputFile.Read(encryptedVault, 0, ( int )inputFile.Length);
            inputFile.Close();

            IEncryptionUtility decryptor =
                EncryptionUtilityFactory.BuildEncryptionUtility();

            byte [] serializedVault;

            try
            {
                /// Decrypt
                serializedVault = decryptor.DecryptBinary(
                    encryptedVault, this.Password);

                MemoryStream stream = new MemoryStream(serializedVault);

                // Deserialize
                BinaryFormatter deserializer = new BinaryFormatter();
                this.Entries = (ObservableCollection <Entry>)deserializer.Deserialize(stream);
            }
            catch (CryptographicException)
            {
                throw new VaultOpeningException(
                          "Unable to decrypt vault, check your password.");
            }
            catch (SerializationException)
            {
                throw new VaultOpeningException(
                          "Unable to open vault, check your password, " +
                          "or the file may be corrupt.");
            }
        }