diff --git a/SabreTools.Models/PKZIP/AesEncryptionStructure.cs b/SabreTools.Models/PKZIP/AesEncryptionStructure.cs new file mode 100644 index 0000000..5c821bb --- /dev/null +++ b/SabreTools.Models/PKZIP/AesEncryptionStructure.cs @@ -0,0 +1,33 @@ +namespace SabreTools.Models.PKZIP +{ + /// + /// WinZip AES encryption data + /// + /// Header ID = 0x9901 + /// + public class AesEncryptionStructure : ExtensibleDataField + { + /// + /// Compression type + /// + /// Values 0f 0x01 and 0x02 are accepted + public ushort CompressionType { get; set; } + + /// + /// Vendor ID + /// + /// Should be 0x4541 + public ushort VendorID { get; set; } + + /// + /// Unknown + /// + /// This value is unreferenced + public byte Unknown { get; set; } + + /// + /// Compression method + /// + public CompressionMethod CompressionMethod { get; set; } + } +} \ No newline at end of file diff --git a/SabreTools.Models/PKZIP/Enums.cs b/SabreTools.Models/PKZIP/Enums.cs index f93445e..95b165a 100644 --- a/SabreTools.Models/PKZIP/Enums.cs +++ b/SabreTools.Models/PKZIP/Enums.cs @@ -1002,6 +1002,18 @@ namespace SabreTools.Models.PKZIP */ } + [Flags] + public enum RecordedTimeFlag : byte + { + None = 0, + + LastModified = 1, + + LastAccessed = 2, + + Created = 4, + } + [Flags] public enum ZipItInternalSettings : ushort { diff --git a/SabreTools.Models/PKZIP/ExtendedTimestampExtraField.cs b/SabreTools.Models/PKZIP/ExtendedTimestampExtraField.cs new file mode 100644 index 0000000..cf4711a --- /dev/null +++ b/SabreTools.Models/PKZIP/ExtendedTimestampExtraField.cs @@ -0,0 +1,33 @@ +namespace SabreTools.Models.PKZIP +{ + /// + /// The unix modified time, last access time, and creation time, if set + /// + /// Header ID = 0x5455 + /// + public class ExtendedTimestampExtraField : ExtensibleDataField + { + /// + /// Indicates what tiemstamps are included + /// + public RecordedTimeFlag Flags { get; set; } + + /// + /// Last modified time + /// + /// Only available when is set + public uint? LastModified { get; set; } + + /// + /// Last accessed time + /// + /// Only available when is set + public uint? LastAccessed { get; set; } + + /// + /// Created on time + /// + /// Only available when is set + public uint? CreatedOn { get; set; } + } +} \ No newline at end of file