internal Crisis.Ionic.Crc.CrcCalculatorStream InternalOpenReader(string password)
{
ValidateCompression();
ValidateEncryption();
SetupCryptoForExtract(password);
// workitem 7958
if (this._Source != ZipEntrySource.ZipFile)
throw new BadStateException("You must call ZipFile.Save before calling OpenReader");
// LeftToRead is a count of bytes remaining to be read (out)
// from the stream AFTER decompression and decryption.
// It is the uncompressed size, unless ... there is no compression in which
// case ...? :< I'm not sure why it's not always UncompressedSize
Int64 LeftToRead = (_CompressionMethod_FromZipFile == (short)CompressionMethod.None)
? this._CompressedFileDataSize
: this.UncompressedSize;
Stream input = this.ArchiveStream;
this.ArchiveStream.Seek(this.FileDataPosition, SeekOrigin.Begin);
// workitem 10178
Crisis.Ionic.Zip.SharedUtilities.Workaround_Ladybug318918(this.ArchiveStream);
_inputDecryptorStream = GetExtractDecryptor(input);
Stream input3 = GetExtractDecompressor(_inputDecryptorStream);
return new Crisis.Ionic.Crc.CrcCalculatorStream(input3, LeftToRead);
}