Example #1
0
        private void TestCompression()
        {
            Compress cmp = new Compress();
            MemoryStream cstm;

            /*string folder = @"C:\Tests\Compression Test";
            cstm = cmp.CompressArchive(folder);
            cstm.Position = 0;
            cmp.DeCompressArchive(cstm, folder + @"\Out");*/

            byte[] data = new CSPRng().GetBytes(1000);
            cstm = cmp.CompressStream(new MemoryStream(data));
            cstm.Position = 0;
            MemoryStream cmp2 = cmp.DeCompressStream(cstm);
            cmp2.Position = 0;

            if (!Compare.AreEqual(data, cmp2.ToArray()))
                throw new Exception("CompressionTest: decompressed array is not equal!");

            cmp.CompressionFormat = Compress.CompressionFormats.GZip;
            cstm = cmp.CompressStream(new MemoryStream(data));
            cstm.Position = 0;
            cmp2 = cmp.DeCompressStream(cstm);
            cmp2.Position = 0;

            if (!Compare.AreEqual(data, cmp2.ToArray()))
                throw new Exception("CompressionTest: decompressed array is not equal!");
        }
Example #2
0
        /// <summary>
        /// Initialize internal state
        /// </summary>
        /// 
        /// <param name="DirectoryPath">The Source directory, or destination path</param>
        /// <param name="DataStream">The input or output stream</param>
        /// <param name="CompressionFormat">The type of compression to apply to the stream stream</param>
        /// <param name="DisposeStream">Dispose of streams when Dispose() on this class is called</param>
        /// 
        /// <exception cref="CryptoProcessingException">Thrown if the directory path has no files, does not exist, or is not writeable</exception>
        public void Initialize(string DirectoryPath, Stream DataStream, Compress.CompressionFormats CompressionFormat = Compress.CompressionFormats.Deflate, bool DisposeStream = false)
        {
            _dirPath = DirectoryPath;
            _cmpEngine = new Compress(CompressionFormat);

            if (_isCompression)
            {
                if (!DirectoryTools.Exists(DirectoryPath))
                    throw new CryptoProcessingException("CompressionCipher:Initialize", "The directory does not exist!", new ArgumentException());
                if (DirectoryTools.FileCount(DirectoryPath) < 1)
                    throw new CryptoProcessingException("CompressionCipher:Initialize", "There are no files in this directory!", new ArgumentException());

                MemoryStream inStream = _cmpEngine.CompressArchive(DirectoryPath);
                inStream.Seek(0, SeekOrigin.Begin);
                base.Initialize(inStream, DataStream, DisposeStream);
            }
            else
            {
                if (!DirectoryTools.Exists(DirectoryPath))
                    Directory.CreateDirectory(DirectoryPath);
                if (!DirectoryTools.IsWritable(DirectoryPath))
                    throw new CryptoProcessingException("CompressionCipher:Initialize", "Directory path is not writable! Check permissions.", new AccessViolationException());

                MemoryStream outStream = new MemoryStream();
                base.Initialize(DataStream, outStream, DisposeStream);
            }
        }