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]

Table C–1,“Support for records”, specifies the requirements for package production, consumption, and editing in regard to particular top-level records or fields described in the ZIP Appnote.txt.
Note: Editing, in this context, means in-place modification of individual records. A format specification can require editing applications to instead modify content in-memory and re-write all parts and relationships on each save in order to maintain more rigorous control of ZIP record usage.
Table 1. C–1. Support for records

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.

Table 2. C–2. Support for record components

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.

Table 3. C–3. Support for Version Needed to Extract field

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.

Table 4. C–4. Support for Compression Method field

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.

Table 5. C–5. Support for modes/structures defined by general purpose bit flags

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

Bit 2

Bit 1

0

0

Normal (-en) compression option was used.

0

1

Maximum (-exx/-ex) compression option was used.

1

0

Fast (-ef) compression option was used.

1

1

Super Fast (-es) compression option was used.

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.

Table 6. C–6. Support for Extra field (variable size), PKWARE-reserved

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.

Table 7. C–7. Support for Extra field (variable size), third-party extensions

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]