[runtime] Fix corlib out of date error with disabled COM
[mono.git] / mcs / class / System.IO.Compression / SharpCompress / Common / Zip / Headers / LocalEntryHeader.cs
1 using System.IO;
2
3 namespace SharpCompress.Common.Zip.Headers
4 {
5     internal enum ExtraDataType : ushort
6     {
7         WinZipAes = 0x9901,
8     }
9
10     internal class ExtraData
11     {
12         internal ExtraDataType Type { get; set; }
13         internal ushort Length { get; set; }
14         internal byte[] DataBytes { get; set; }
15     }
16
17     internal class LocalEntryHeader : ZipFileEntry
18     {
19         public LocalEntryHeader()
20             : base(ZipHeaderType.LocalEntry)
21         {
22         }
23
24         internal override void Read(BinaryReader reader)
25         {
26             Version = reader.ReadUInt16();
27             Flags = (HeaderFlags) reader.ReadUInt16();
28             CompressionMethod = (ZipCompressionMethod) reader.ReadUInt16();
29             LastModifiedTime = reader.ReadUInt16();
30             LastModifiedDate = reader.ReadUInt16();
31             Crc = reader.ReadUInt32();
32             CompressedSize = reader.ReadUInt32();
33             UncompressedSize = reader.ReadUInt32();
34             ushort nameLength = reader.ReadUInt16();
35             ushort extraLength = reader.ReadUInt16();
36             byte[] name = reader.ReadBytes(nameLength);
37             byte[] extra = reader.ReadBytes(extraLength);
38             Name = DecodeString(name);
39             LoadExtra(extra);
40         }
41
42         internal override void Write(BinaryWriter writer)
43         {
44             writer.Write(Version);
45             writer.Write((ushort) Flags);
46             writer.Write((ushort) CompressionMethod);
47             writer.Write(LastModifiedTime);
48             writer.Write(LastModifiedDate);
49             writer.Write(Crc);
50             writer.Write(CompressedSize);
51             writer.Write(UncompressedSize);
52
53             byte[] nameBytes = EncodeString(Name);
54
55             writer.Write((ushort) nameBytes.Length);
56             writer.Write((ushort) 0);
57             //if (Extra != null)
58             //{
59             //    writer.Write(Extra);
60             //}
61             writer.Write(nameBytes);
62         }
63
64         internal ushort Version { get; private set; }
65     }
66 }