ICSharpCode.SharpZipLib.Zip.ZipEntry.ProcessAESExtraData C# (CSharp) Method

ProcessAESExtraData() private method

private ProcessAESExtraData ( ZipExtraData extraData ) : void
extraData ZipExtraData
return void
        private void ProcessAESExtraData(ZipExtraData extraData)
        {
            if (extraData.Find(0x9901)) {
                // Set version and flag for Zipfile.CreateAndInitDecryptionStream
                versionToExtract = ZipConstants.VERSION_AES;            // Ver 5.1 = AES see "Version" getter
                                                                        // Set StrongEncryption flag for ZipFile.CreateAndInitDecryptionStream
                Flags = Flags | (int)GeneralBitFlags.StrongEncryption;
                //
                // Unpack AES extra data field see http://www.winzip.com/aes_info.htm
                int length = extraData.ValueLength;         // Data size currently 7
                if (length < 7)
                    throw new ZipException("AES Extra Data Length " + length + " invalid.");
                int ver = extraData.ReadShort();            // Version number (1=AE-1 2=AE-2)
                int vendorId = extraData.ReadShort();       // 2-character vendor ID 0x4541 = "AE"
                int encrStrength = extraData.ReadByte();    // encryption strength 1 = 128 2 = 192 3 = 256
                int actualCompress = extraData.ReadShort(); // The actual compression method used to compress the file
                _aesVer = ver;
                _aesEncryptionStrength = encrStrength;
                method = (CompressionMethod)actualCompress;
            } else
                throw new ZipException("AES Extra Data missing");
        }