Table Key
“Yes” — During consumption of a package, a "Yes" value for a field in a table in Annex C indicates a package implementer shall support reading the ZIP archive containing this record or field, however, support may mean ignoring. [M3.15] During production of a package, a “Yes” value for a field in a table in Annex C indicates that the package implementer shall write out this record or field. [M3.16]
“No” — A “No” value for a field in a table in Annex C indicates the package implementer shall not use this record or field during consumption or production of packages. [M3.17]
“Optional” — An “Optional” value for a record in a table in Annex C indicates that package implementers might write this record during production. [O3.2]
“Partially, details below” — A “Partially, details below” value for a record in a table in Annex C indicates that the record contains fields that might not be supported by package implementers during production or consumption. See the details in the corresponding table to determine requirements. [M3.18]
“Only used when needed” — The value “Only used when needed” associated with a record in a table in Annex C indicates that the package implementer shall use the record only when needed to store data in the ZIP archive. [M3.19]
Record name |
Supported on Consumption |
Supported on Production |
Pass through on editing |
---|---|---|---|
Local File Header |
Yes (partially, details below) |
Yes (partially, details below) |
Yes |
File data |
Yes |
Yes |
Yes |
Data descriptor |
Yes |
Optional |
Optional |
Archive decryption header |
No |
No |
No |
Archive extra data record |
No |
No |
No |
Central directory structure: File header |
Yes (partially, details below) |
Yes (partially, details below) |
Yes |
Central directory structure: Digital signature |
Yes (ignore the signature data) |
Optional |
Optional |
Zip64 end of central directory record V1 (from spec version 4.5) |
Yes (partially, details below) |
Yes (partially, details below, used only when needed) |
Optional |
Zip64 end of central directory record V2 (from spec version 6.2) |
No |
No |
No |
Zip64 end of central directory locator |
Yes (partially, details below) |
Yes (partially, details below, used only when needed) |
Optional |
End of central directory record |
Yes (partially, details below) |
Yes (partially, details below, used only when needed) |
Yes |
Table C–2, “Support for record components”, specifies the requirements for package production, consumption, and editing in regard to individual record components described in the ZIP Appnote.txt.
Record |
Field |
Supported on Consumption |
Supported on Production |
Pass through on editing |
---|---|---|---|---|
Local File Header |
Local file header signature |
Yes |
Yes |
Yes |
Version needed to extract |
Yes (partially, see Table C–3) |
Yes (partially, see Table C–3) |
Yes (partially, see Table C–3) |
|
General purpose bit flag |
Yes (partially, see Table C–5) |
Yes (partially, see Table C–5) |
Yes (partially, see Table C–5) |
|
Compression method |
Yes (partially, see Table C–4) |
Yes (partially, see Table C–4) |
Yes (partially, see Table C–4) |
|
Last mod file time |
Yes |
Yes |
Yes |
|
Last mod file date |
Yes |
Yes |
Yes |
|
Crc-32 |
Yes |
Yes |
Yes |
|
Compressed size |
Yes |
Yes |
Yes |
|
Uncompressed size |
Yes |
Yes |
Yes |
|
File name length |
Yes |
Yes |
Yes |
|
Extra field length |
Yes |
Yes |
Yes |
|
File name (variable size) |
Yes |
Yes |
Yes |
|
Extra field (variable size) |
Yes (partially, see Table C–6) |
Yes (partially, see Table C–6) |
Yes (partially, see Table C–6) |
|
Central directory structure: File header |
Central file header signature |
Yes |
Yes |
Yes |
version made by: high byte |
Yes |
Yes (0 = MS-DOS is default publishing value) |
Yes |
|
Version made by: low byte |
Yes |
Yes |
Yes |
|
Version needed to extract (see Table C–3 for details) |
Yes (partially, see Table C–3) |
Yes (1.0, 1.1, 2.0, 4.5) |
Yes |
|
General purpose bit flag |
Yes (partially, see Table C–5) |
Yes (partially, see Table C–5) |
Yes (partially, see Table C–5) |
|
Compression method |
Yes (partially, see Table C–4) |
Yes (partially, see Table C–4) |
Yes (partially, see Table C–4) |
|
Last mod file time (Pass through, no interpretation) |
Yes |
Yes |
Yes |
|
Last mod file date (Pass through, in interpretation) |
Yes |
Yes |
Yes |
|
Crc-32 |
Yes |
Yes |
Yes |
|
Compressed size |
Yes |
Yes |
Yes |
|
Uncompressed size |
Yes |
Yes |
Yes |
|
File name length |
Yes |
Yes |
Yes |
|
Extra field length |
Yes |
Yes |
Yes |
|
File comment length |
Yes |
Yes (always set to 0) |
Yes |
|
Disk number start |
Yes (partial — no multi disk archives) |
Yes (always 1 disk) |
Yes (partial — no multi disk archives) |
|
Internal file attributes |
Yes |
Yes |
Yes |
|
External file attributes (Pass through, no interpretation) |
Yes |
Yes (MS DOS default value) |
Yes |
|
Relative offset of local header |
Yes |
Yes |
Yes |
|
File name (variable size) |
Yes |
Yes |
Yes |
|
Extra field (variable size) |
Yes (partially, see Table C–6) |
Yes (partially, see Table C–6) |
Yes (partially, see Table C–6) |
|
File comment (variable size) |
Yes |
Yes (always set to empty) |
Yes |
|
Zip64 end of central directory V1 (from spec version 4.5, only used when needed) |
Zip64 end of central directory signature |
Yes |
Yes |
Yes |
Size of zip64 end of central directory |
Yes |
Yes |
Yes |
|
Version made by: high byte (Pass through, no interpretation) |
Yes |
Yes (0 = MS-DOS is default publishing value) |
Yes |
|
Version made by: low byte |
Yes |
Yes (always 4.5 or above) |
Yes |
|
Version needed to extract (see Table C–3 for details) |
Yes (4.5) |
Yes (4.5) |
Yes (4.5) |
|
Number of this disk |
Yes (partial — no multi disk archives) |
Yes (always 1 disk) |
Yes (partial — no multi disk archives) |
|
Number of the disk with the start of the central directory |
Yes (partial — no multi disk archives) |
Yes (always 1 disk) |
Yes (partial — no multi disk archives) |
|
Total number of entries in the central directory on this disk |
Yes |
Yes |
Yes |
|
Total number of entries in the central directory |
Yes |
Yes |
Yes |
|
Size of the central directory |
Yes |
Yes |
Yes |
|
Offset of start of central directory with respect to the starting disk number |
Yes |
Yes |
Yes |
|
Zip64 extensible data sector |
Yes |
No |
Yes |
|
Zip64 end of central directory locator (only used when needed) |
Zip64 end of central dir locator signature |
Yes |
Yes |
Yes |
Number of the disk with the start of the zip64 end of central directory |
Yes (partial — no multi disk archives) |
Yes (always 1 disk) |
Yes (partial — no multi disk archives) |
|
Relative offset of the zip64 end of central directory record |
Yes |
Yes |
Yes |
|
Total number of disks |
Yes (partial — no multi disk archives) |
Yes (always 1 disk) |
Yes (partial — no multi disk archives) |
|
End of central directory record |
End of central dir signature |
Yes |
Yes |
Yes |
Number of this disk |
Yes (partial — no multi disk archives) |
Yes (always 1 disk) |
Yes (partial — no multi disk archives) |
|
Number of the disk with the start of the central directory |
Yes (partial — no multi disk archive) |
Yes (always 1 disk) |
Yes (partial — no multi disk archive) |
|
Total number of entries in the central directory on this disk |
Yes |
Yes |
Yes |
|
Total number of entries in the central directory |
Yes |
Yes |
Yes |
|
Size of the central directory |
Yes |
Yes |
Yes |
|
Offset of start of central directory with respect to the starting disk number |
Yes |
Yes |
Yes |
|
ZIP file comment length |
Yes |
Yes |
Yes |
|
ZIP file comment |
Yes |
No |
Yes |
Table C–3, “Support for Version Needed to Extract field”, specifies the detailed production, consumption, and editing requirements for the Extract field, which is fully described in the ZIP Appnote.txt.
Version |
Feature |
Supported on Consumption |
Supported on Production |
Pass through on editing |
---|---|---|---|---|
1.0 |
Default value |
Yes |
Yes |
Yes |
1.1 |
File is a volume label |
Ignore |
No |
(rewrite/remove) |
2.0 |
File is a folder (directory) |
Ignore |
No |
(rewrite/remove) |
2.0 |
File is compressed using Deflate compression |
Yes |
Yes |
Yes |
2.0 |
File is encrypted using traditional PKWARE encryption |
No |
No |
No |
2.1 |
File is compressed using Deflate64(tm) |
No |
No |
No |
2.5 |
File is compressed using PKWARE DCL Implode |
No |
No |
No |
2.7 |
File is a patch data set |
No |
No |
No |
4.5 |
File uses ZIP64 format extensions |
Yes |
Yes |
Yes |
4.6 |
File is compressed using BZIP2 compression |
No |
No |
No |
5.0 |
File is encrypted using DES |
No |
No |
No |
5.0 |
File is encrypted using 3DES |
No |
No |
No |
5.0 |
File is encrypted using original RC2 encryption |
No |
No |
No |
5.0 |
File is encrypted using RC4 encryption |
No |
No |
No |
5.1 |
File is encrypted using AES encryption |
No |
No |
No |
5.1 |
File is encrypted using corrected RC2 encryption |
No |
No |
No |
5.2 |
File is encrypted using corrected RC2-64 encryption |
No |
No |
No |
6.1 |
File is encrypted using non-OAEP key wrapping |
No |
No |
No |
6.2 |
Central directory encryption |
No |
No |
No |
Table C–4, “Support for Compression Method field”, specifies the detailed production, consumption, and editing requirements for the Compression Method field, which is fully described in the ZIP Appnote.txt.
Code |
Method |
Supported on Consumption |
Supported on Production |
Pass through on editing |
---|---|---|---|---|
0 |
The file is stored (no compression) |
Yes |
Yes |
Yes |
1 |
The file is Shrunk |
No |
No |
No |
2 |
The file is Reduced with compression factor 1 |
No |
No |
No |
3 |
The file is Reduced with compression factor 2 |
No |
No |
No |
4 |
The file is Reduced with compression factor 3 |
No |
No |
No |
5 |
The file is Reduced with compression factor 4 |
No |
No |
No |
6 |
The file is Imploded |
No |
No |
No |
7 |
Reserved for Tokenizing compression algorithm |
No |
No |
No |
8 |
The file is Deflated |
Yes |
Yes |
Yes |
9 |
Enhanced Deflating using Deflate64™ |
No |
No |
No |
10 |
PKWARE Data Compression Library Imploding |
No |
No |
No |
11 |
Reserved by PKWARE |
No |
No |
No |
Table C–5, “Support for modes/structures defined by general purpose bit flags”, specifies the detailed production, consumption, and editing requirements when utilizing these general-purpose bit flags within records.
Bit |
Feature |
Supported on Consumption |
Supported on Production |
Pass through on editing |
|||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0 |
If set, indicates that the file is encrypted. |
No |
No |
No |
|||||||||||||||
1, 2 |
|
Yes |
Yes |
Yes |
|||||||||||||||
3 |
If this bit is set, the fields crc-32, compressed size and uncompressed size are set to zero in the local header. The correct values are put in the data descriptor immediately following the compressed data. (PKZIP version 2.04g for DOS only recognizes this bit for method 8 compression, newer versions of PKZIP recognize this bit for any compression method.) |
Yes |
Yes |
Yes |
|||||||||||||||
4 |
Reserved for use with method 8, for enhanced deflating |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
5 |
If this bit is set, this indicates that the file is compressed patched data. (Requires PKZIP version 2.70 or greater.) |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
6 |
Strong encryption. If this bit is set, you should set the version needed to extract value to at least 50 and you must also set bit 0. If AES encryption is used, the version needed to extract value must be at least 51. |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
7 |
Currently unused |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
8 |
Currently unused |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
9 |
Currently unused |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
10 |
Currently unused |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
11 |
Currently unused |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
12 |
Reserved by PKWARE for enhanced compression |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
13 |
Used when encrypting the Central Directory to indicate selected data values in the Local Header are masked to hide their actual values. See the section describing the Strong Encryption Specification for details. |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
14 |
Reserved by PKWARE |
Ignore |
Bits set to 0 |
Yes |
|||||||||||||||
15 |
Reserved by PKWARE |
Ignore |
Bits set to 0 |
Yes |
Table C–6, “Support for Extra field (variable size), PKWARE-reserved”, specifies the detailed production, consumption, and editing requirements for the Extra field entries reserved by PKWARE and described in the ZIP Appnote.txt.
Field ID |
Field description |
Supported on Consumption |
Supported on Production |
Pass through on editing |
---|---|---|---|---|
0x0001 |
ZIP64 extended information extra field |
Yes |
Yes |
Optional |
0x0007 |
AV Info |
Ignore |
No |
Yes |
0x0008 |
Reserved for future Unicode file name data (PFS) |
Ignore |
No |
Yes |
0x0009 |
OS/2 |
Ignore |
No |
Yes |
0x000a |
NTFS |
Ignore |
No |
Yes |
0x000c |
OpenVMS |
Ignore |
No |
Yes |
0x000d |
Unix |
Ignore |
No |
Yes |
0x000e |
Reserved for file stream and fork descriptors |
Ignore |
No |
Yes |
0x000f |
Patch Descriptor |
Ignore |
No |
Yes |
0x0014 |
PKCS#7 Store for X.509 Certificates |
Ignore |
No |
Yes |
0x0015 |
X.509 Certificate ID and Signature for individual file |
Ignore |
No |
Yes |
0x0016 |
X.509 Certificate ID for Central Directory |
Ignore |
No |
Yes |
0x0017 |
Strong Encryption Header |
Ignore |
No |
Yes |
0x0018 |
Record Management Controls |
Ignore |
No |
Yes |
0x0019 |
PKCS#7 Encryption Recipient Certificate List |
Ignore |
No |
Yes |
0x0065 |
IBM S/390 (Z390), AS/400 (I400) attributes — uncompressed |
Ignore |
No |
Yes |
0x0066 |
Reserved for IBM S/390 (Z390), AS/400 (I400) attributes — compressed |
Ignore |
No |
Yes |
0x4690 |
POSZIP 4690 (reserved) |
Ignore |
No |
Yes |
Table C–7, “Support for Extra field (variable size), third-party extensions”, specifies the detailed production, consumption, and editing requirements for the Extra field entries reserved by third parties and described in the ZIP Appnote.txt.
Field ID |
Field description |
Supported on Consumption |
Supported on Production |
Pass through on editing |
---|---|---|---|---|
0x07c8 |
Macintosh |
Ignore |
No |
Yes |
0x2605 |
ZipIt Macintosh |
Ignore |
No |
Yes |
0x2705 |
ZipIt Macintosh 1.3.5+ |
Ignore |
No |
Yes |
0x2805 |
ZipIt Macintosh 1.3.5+ |
Ignore |
No |
Yes |
0x334d |
Info-ZIP Macintosh |
Ignore |
No |
Yes |
0x4341 |
Acorn/SparkFS |
Ignore |
No |
Yes |
0x4453 |
Windows NT security descriptor (binary ACL) |
Ignore |
No |
Yes |
0x4704 |
VM/CMS |
Ignore |
No |
Yes |
0x470f |
MVS |
Ignore |
No |
Yes |
0x4b46 |
FWKCS MD5 (see below) |
Ignore |
No |
Yes |
0x4c41 |
OS/2 access control list (text ACL) |
Ignore |
No |
Yes |
0x4d49 |
Info-ZIP OpenVMS |
Ignore |
No |
Yes |
0x4f4c |
Xceed original location extra field |
Ignore |
No |
Yes |
0x5356 |
AOS/VS (ACL) |
Ignore |
No |
Yes |
0x5455 |
extended timestamp |
Ignore |
No |
Yes |
0x554e |
Xceed unicode extra field |
Ignore |
No |
Yes |
0x5855 |
Info-ZIP Unix (original, also OS/2, NT, etc) |
Ignore |
No |
Yes |
0x6542 |
BeOS/BeBox |
Ignore |
No |
Yes |
0x756e |
ASi Unix |
Ignore |
No |
Yes |
0x7855 |
Info-ZIP Unix (new) |
Ignore |
No |
Yes |
0xa220 |
Padding, Microsoft |
Optional |
Optional |
Optional |
0xfd4a |
SMS/QDOS |
Ignore |
No |
Yes |
The package implementer shall ensure that all 64-bit stream record sizes and offsets have the high-order bit = 0. [M3.20]
The package implementer shall ensure that all fields that contain “number of entries” do not exceed 2,147,483,647
. [M3.21]