Beispiel #1
0
        /// <summary>
        /// Inflate (decompress) an archive
        /// </summary>
        ///
        /// <param name="DirectoryPath">The directory path where files will be written</param>
        /// <param name="InStream">The stream containing the compressed archive</param>
        public void Inflate(string DirectoryPath, Stream InStream)
        {
            if (!m_isInitialized)
            {
                throw new CryptoProcessingException("CompressionCipher:Compress", "The class is not be Initialized!", new ArgumentException());
            }
            if (!DirectoryTools.Exists(DirectoryPath))
            {
                Directory.CreateDirectory(DirectoryPath);
            }
            if (!DirectoryTools.IsWritable(DirectoryPath))
            {
                throw new CryptoProcessingException("CompressionCipher:InFlate", "Directory path is not writable! Check permissions.", new AccessViolationException());
            }

            // decrypt stream
            MemoryStream outStream = new MemoryStream();

            base.Write(InStream, outStream);
            outStream.Seek(0, SeekOrigin.Begin);
            // decompress
            m_cmpEngine.DeCompressArchive(outStream, DirectoryPath);
        }