1package IO::Compress::Zip::Constants;
2
3use strict ;
4use warnings;
5
6require Exporter;
7
8our ($VERSION, @ISA, @EXPORT, %ZIP_CM_MIN_VERSIONS);
9
10$VERSION = '2.204';
11
12@ISA = qw(Exporter);
13
14@EXPORT= qw(
15
16    ZIP_CM_STORE
17    ZIP_CM_DEFLATE
18    ZIP_CM_BZIP2
19    ZIP_CM_LZMA
20    ZIP_CM_PPMD
21    ZIP_CM_XZ
22    ZIP_CM_ZSTD
23    ZIP_CM_AES
24
25    ZIP_LOCAL_HDR_SIG
26    ZIP_DATA_HDR_SIG
27    ZIP_CENTRAL_HDR_SIG
28    ZIP_END_CENTRAL_HDR_SIG
29    ZIP64_END_CENTRAL_REC_HDR_SIG
30    ZIP64_END_CENTRAL_LOC_HDR_SIG
31    ZIP64_ARCHIVE_EXTRA_SIG
32    ZIP64_DIGITAL_SIGNATURE_SIG
33
34    ZIP_GP_FLAG_ENCRYPTED_MASK
35    ZIP_GP_FLAG_STREAMING_MASK
36    ZIP_GP_FLAG_PATCHED_MASK
37    ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK
38    ZIP_GP_FLAG_LZMA_EOS_PRESENT
39    ZIP_GP_FLAG_LANGUAGE_ENCODING
40
41    ZIP_EXTRA_ID_ZIP64
42    ZIP_EXTRA_ID_EXT_TIMESTAMP
43    ZIP_EXTRA_ID_INFO_ZIP_UNIX2
44    ZIP_EXTRA_ID_INFO_ZIP_UNIXN
45    ZIP_EXTRA_ID_INFO_ZIP_Upath
46    ZIP_EXTRA_ID_INFO_ZIP_Ucom
47    ZIP_EXTRA_ID_JAVA_EXE
48
49    ZIP_OS_CODE_UNIX
50    ZIP_OS_CODE_DEFAULT
51
52    ZIP_IFA_TEXT_MASK
53
54    %ZIP_CM_MIN_VERSIONS
55    ZIP64_MIN_VERSION
56
57    ZIP_A_RONLY
58    ZIP_A_HIDDEN
59    ZIP_A_SYSTEM
60    ZIP_A_LABEL
61    ZIP_A_DIR
62    ZIP_A_ARCHIVE
63    );
64
65# Compression types supported
66use constant ZIP_CM_STORE                      => 0 ;
67use constant ZIP_CM_DEFLATE                    => 8 ;
68use constant ZIP_CM_BZIP2                      => 12 ;
69use constant ZIP_CM_LZMA                       => 14 ;
70use constant ZIP_CM_ZSTD                       => 93 ;
71use constant ZIP_CM_XZ                         => 95 ;
72use constant ZIP_CM_PPMD                       => 98 ; # Not Supported yet
73use constant ZIP_CM_AES                        => 99 ;
74
75# General Purpose Flag
76use constant ZIP_GP_FLAG_ENCRYPTED_MASK        => (1 << 0) ;
77use constant ZIP_GP_FLAG_STREAMING_MASK        => (1 << 3) ;
78use constant ZIP_GP_FLAG_PATCHED_MASK          => (1 << 5) ;
79use constant ZIP_GP_FLAG_STRONG_ENCRYPTED_MASK => (1 << 6) ;
80use constant ZIP_GP_FLAG_LZMA_EOS_PRESENT      => (1 << 1) ;
81use constant ZIP_GP_FLAG_LANGUAGE_ENCODING     => (1 << 11) ;
82
83# Internal File Attributes
84use constant ZIP_IFA_TEXT_MASK                 => 1;
85
86# Signatures for each of the headers
87use constant ZIP_LOCAL_HDR_SIG                 => 0x04034b50;
88use constant ZIP_DATA_HDR_SIG                  => 0x08074b50;
89use constant packed_ZIP_DATA_HDR_SIG           => pack "V", ZIP_DATA_HDR_SIG;
90use constant ZIP_CENTRAL_HDR_SIG               => 0x02014b50;
91use constant ZIP_END_CENTRAL_HDR_SIG           => 0x06054b50;
92use constant ZIP64_END_CENTRAL_REC_HDR_SIG     => 0x06064b50;
93use constant ZIP64_END_CENTRAL_LOC_HDR_SIG     => 0x07064b50;
94use constant ZIP64_ARCHIVE_EXTRA_SIG           => 0x08064b50;
95use constant ZIP64_DIGITAL_SIGNATURE_SIG       => 0x05054b50;
96
97use constant ZIP_OS_CODE_UNIX                  => 3;
98use constant ZIP_OS_CODE_DEFAULT               => 3;
99
100# Extra Field ID's
101use constant ZIP_EXTRA_ID_ZIP64                => pack "v", 1;
102use constant ZIP_EXTRA_ID_EXT_TIMESTAMP        => "UT";
103use constant ZIP_EXTRA_ID_INFO_ZIP_UNIX2       => "Ux";
104use constant ZIP_EXTRA_ID_INFO_ZIP_UNIXN       => "ux";
105use constant ZIP_EXTRA_ID_INFO_ZIP_Upath       => "up";
106use constant ZIP_EXTRA_ID_INFO_ZIP_Ucom        => "uc";
107use constant ZIP_EXTRA_ID_JAVA_EXE             => pack "v", 0xCAFE;
108
109# DOS Attributes
110use constant ZIP_A_RONLY                       => 0x01;
111use constant ZIP_A_HIDDEN                      => 0x02;
112use constant ZIP_A_SYSTEM                      => 0x04;
113use constant ZIP_A_LABEL                       => 0x08;
114use constant ZIP_A_DIR                         => 0x10;
115use constant ZIP_A_ARCHIVE                     => 0x20;
116
117use constant ZIP64_MIN_VERSION                 => 45;
118
119%ZIP_CM_MIN_VERSIONS = (
120            ZIP_CM_STORE()                     => 20,
121            ZIP_CM_DEFLATE()                   => 20,
122            ZIP_CM_BZIP2()                     => 46,
123            ZIP_CM_LZMA()                      => 63,
124            ZIP_CM_PPMD()                      => 63,
125            ZIP_CM_ZSTD()                      => 20, # Winzip needs these to be 20
126            ZIP_CM_XZ()                        => 20,
127            );
128
129
1301;
131
132__END__
133