ICSharpCode.SharpZipLib.Zip.ZipFile.CreateAndInitEncryptionStream C# (CSharp) Method

CreateAndInitEncryptionStream() private method

private CreateAndInitEncryptionStream ( Stream baseStream, ZipEntry entry ) : Stream
baseStream Stream
entry ZipEntry
return Stream
        private Stream CreateAndInitEncryptionStream(Stream baseStream, ZipEntry entry) {
            CryptoStream result=null;
            if ((entry.Version<ZipConstants.VersionStrongEncryption)
                ||(entry.Flags&(int)GeneralBitFlags.StrongEncryption)==0) {
                var classicManaged=new PkzipClassicManaged();

                OnKeysRequired(entry.Name);
                if (HaveKeys==false) {
                    throw new ZipException("No password available for encrypted stream");
                }

                // Closing a CryptoStream will close the base stream as well so wrap it in an UncompressedStream
                // which doesnt do this.
                result=new CryptoStream(new UncompressedStream(baseStream),
                                          classicManaged.CreateEncryptor(key, null), CryptoStreamMode.Write);

                if ((entry.Crc<0)||(entry.Flags&8)!=0) {
                    WriteEncryptionHeader(result, entry.DosTime<<16);
                } else {
                    WriteEncryptionHeader(result, entry.Crc);
                }
            }
            return result;
        }