66 lines
2.0 KiB
C#
66 lines
2.0 KiB
C#
|
using System.IO;
|
|||
|
|
|||
|
namespace SharpCompress.Common.Zip.Headers
|
|||
|
{
|
|||
|
internal enum ExtraDataType : ushort
|
|||
|
{
|
|||
|
WinZipAes = 0x9901,
|
|||
|
}
|
|||
|
|
|||
|
internal class ExtraData
|
|||
|
{
|
|||
|
internal ExtraDataType Type { get; set; }
|
|||
|
internal ushort Length { get; set; }
|
|||
|
internal byte[] DataBytes { get; set; }
|
|||
|
}
|
|||
|
|
|||
|
internal class LocalEntryHeader : ZipFileEntry
|
|||
|
{
|
|||
|
public LocalEntryHeader()
|
|||
|
: base(ZipHeaderType.LocalEntry)
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
internal override void Read(BinaryReader reader)
|
|||
|
{
|
|||
|
Version = reader.ReadUInt16();
|
|||
|
Flags = (HeaderFlags) reader.ReadUInt16();
|
|||
|
CompressionMethod = (ZipCompressionMethod) reader.ReadUInt16();
|
|||
|
LastModifiedTime = reader.ReadUInt16();
|
|||
|
LastModifiedDate = reader.ReadUInt16();
|
|||
|
Crc = reader.ReadUInt32();
|
|||
|
CompressedSize = reader.ReadUInt32();
|
|||
|
UncompressedSize = reader.ReadUInt32();
|
|||
|
ushort nameLength = reader.ReadUInt16();
|
|||
|
ushort extraLength = reader.ReadUInt16();
|
|||
|
byte[] name = reader.ReadBytes(nameLength);
|
|||
|
byte[] extra = reader.ReadBytes(extraLength);
|
|||
|
Name = DecodeString(name);
|
|||
|
LoadExtra(extra);
|
|||
|
}
|
|||
|
|
|||
|
internal override void Write(BinaryWriter writer)
|
|||
|
{
|
|||
|
writer.Write(Version);
|
|||
|
writer.Write((ushort) Flags);
|
|||
|
writer.Write((ushort) CompressionMethod);
|
|||
|
writer.Write(LastModifiedTime);
|
|||
|
writer.Write(LastModifiedDate);
|
|||
|
writer.Write(Crc);
|
|||
|
writer.Write(CompressedSize);
|
|||
|
writer.Write(UncompressedSize);
|
|||
|
|
|||
|
byte[] nameBytes = EncodeString(Name);
|
|||
|
|
|||
|
writer.Write((ushort) nameBytes.Length);
|
|||
|
writer.Write((ushort) 0);
|
|||
|
//if (Extra != null)
|
|||
|
//{
|
|||
|
// writer.Write(Extra);
|
|||
|
//}
|
|||
|
writer.Write(nameBytes);
|
|||
|
}
|
|||
|
|
|||
|
internal ushort Version { get; private set; }
|
|||
|
}
|
|||
|
}
|