コード例 #1
0
        // Tworzy pod wskazaną ścieżką nowy plik archiwum i pozostawia go otwartym
        public static FileArchive Create(string filepath, string password, bool compression)
        {
            if (File.Exists(filepath))
            {
                throw new Exception("Plik pod wskazaną ścieżką już istnieje");
            }

            EncryptionKey key = EncryptionKey.Generate(password);

            FileArchive archive = new FileArchive();

            archive.FilePath     = filepath;
            archive.ArchiveKey   = key;
            archive.IsCompressed = compression;

            archive.CreateArchiveFile();

            return(archive);
        }
コード例 #2
0
        // Tworzy głęboką kopię wystąpienia (niezbędne dla przechowania backupu)
        public FileArchive Clone()
        {
            FileArchive copy = new FileArchive();

            copy.FilePath     = FilePath;
            copy.ArchiveKey   = ArchiveKey.Clone();
            copy.IsCompressed = IsCompressed;

            Hashtable idFileNamePairs = new Hashtable();

            foreach (int id in IdFileNamePairs.Keys)
            {
                idFileNamePairs.Add(id, IdFileNamePairs[id]);
            }
            copy.IdFileNamePairs = idFileNamePairs;

            copy.Connection = (SQLiteConnection)Connection.Clone();

            return(copy);
        }
コード例 #3
0
        /*
         *  Metody publiczne zwracające obiekt klasy wg. wzorca factory
         */

        // Otwiera istniejący pod wskazaną ścieżką plik archiwum
        public static FileArchive Open(string filepath, string password)
        {
            if (!File.Exists(filepath))
            {
                throw new Exception("Plik pod wskazaną ścieżką nie istnieje!");
            }

            FileArchive archive = new FileArchive();

            archive.FilePath = filepath;

            // Wyciągnięcie z archiwum informacji o kluczu i kompresji
            archive.SelectArchiveInfo();

            // Wyprowadzenie klucza na podstawie podanego hasła
            archive.DeriveKey(password);

            // Wyciągnięcie z archiwum listy nazw plików w formie jawnej
            archive.SelectPlaintextFileNames();

            return(archive);
        }