Skip to content

Organize a clear list of all ZIP features and triage them. #675

@im7mortal

Description

@im7mortal

There are many issues asking to implement some features from the standard, but some of them can be considered "Won't implement"

So I quickly asked AI to review APPNOTE.TXT and create a table. Here it is:

AI GENERATED UNTIL THE NEXT COMMENT. PROCEED TO THE NEXT COMMENT FOR CONTINUATION.

ZIP Format Feature Implementation Status

This document lists all major features from the ZIP File Format Specification (APPNOTE.TXT v6.3.10) and their implementation status in this library.

Compression Methods

Method ID Method Name Reading Writing Notes
0 Stored (no compression) Fully supported
1 Shrink ✅ (legacy-zip) Legacy method, read-only with feature flag
2-5 Reduce (factors 1-4) ✅ (legacy-zip) Legacy method, read-only with feature flag
6 Implode ✅ (legacy-zip) Legacy method, read-only with feature flag
8 Deflate Default compression method
9 Deflate64 Decompression only
10 PKWARE Data Compression Library Imploding Not implemented
12 BZIP2 Fully supported
14 LZMA Decompression only
16 IBM z/OS CMPSC Compression Not implemented
18 IBM TERSE (new) Not implemented
19 IBM LZ77 z Architecture Not implemented
93 Zstandard (zstd) Fully supported
94 MP3 Compression Not implemented
95 XZ Compression Fully supported
96 JPEG variant Not implemented
97 WavPack compressed data Not implemented
98 PPMd version I, Rev 1 Fully supported
99 AE-x encryption marker ✅ (aes-crypto) ✅ (aes-crypto) See Encryption section

Encryption

Feature Reading Writing Notes
Traditional PKWARE Encryption (ZipCrypto) Weak encryption, supported for compatibility
Strong Encryption - AES ✅ (aes-crypto) ✅ (aes-crypto) AES-128, AES-192, AES-256 (AE-1, AE-2)
Strong Encryption - DES Not implemented
Strong Encryption - 3DES Not implemented
Strong Encryption - RC2 Not implemented
Strong Encryption - RC4 Not implemented
Strong Encryption - Blowfish Not implemented
Strong Encryption - Twofish Not implemented
Certificate-based Encryption Not implemented
Central Directory Encryption Not implemented
Password-based Encryption Via ZipCrypto and AES
X.509 Certificate Encryption Not implemented

ZIP64 Extensions

Feature Reading Writing Notes
ZIP64 Extended Information Extra Field (0x0001) For files > 4GB
ZIP64 End of Central Directory Record Fully supported
ZIP64 End of Central Directory Locator Fully supported
ZIP64 Central Directory Fully supported
ZIP64 Local Header Fully supported
ZIP64 Data Descriptor Fully supported

Extra Fields

Extra Field ID Name Reading Writing Notes
0x0001 Zip64 extended information Fully supported
0x0007 AV Info Recognized but not parsed
0x0008 Reserved for extended language encoding data (PFS) Recognized but not parsed
0x0009 OS/2 Recognized but not parsed
0x000a NTFS Fully supported
0x000c OpenVMS Recognized but not parsed
0x000d UNIX Recognized but not parsed
0x000e Reserved for file stream and fork descriptors Recognized but not parsed
0x000f Patch Descriptor Recognized but not parsed
0x0014 PKCS#7 Store for X.509 Certificates Recognized but not parsed
0x0015 X.509 Certificate ID and Signature for individual file Recognized but not parsed
0x0016 X.509 Certificate ID for Central Directory Recognized but not parsed
0x0017 Strong Encryption Header Recognized but not parsed
0x0018 Record Management Controls Recognized but not parsed
0x0019 PKCS#7 Encryption Recipient Certificate List Recognized but not parsed
0x0020 Reserved for Timestamp record Recognized but not parsed
0x0021 Policy Decryption Key Record Recognized but not parsed
0x0022 Smartcrypt Key Provider Record Recognized but not parsed
0x0023 Smartcrypt Policy Key Data Record Recognized but not parsed
0x0065 IBM S/390 (Z390), AS/400 (I400) attributes Recognized but not parsed
0x0066 Reserved for IBM S/390 (Z390), AS/400 (I400) attributes - compressed Recognized but not parsed
0x5455 Extended Timestamp Fully supported
0x6375 Info-ZIP Unicode Comment Extra Field Fully supported
0x7075 Info-ZIP Unicode Path Extra Field Fully supported
0x9901 AE-x encryption structure Fully supported
0xa11e Data Stream Alignment (Apache Commons-Compress) Fully supported

File Structure Features

Feature Reading Writing Notes
Local File Header Fully supported
Central Directory Header Fully supported
End of Central Directory Record Fully supported
Data Descriptor Fully supported (with and without signature)
Archive Decryption Header Not implemented (Central Directory Encryption)
Archive Extra Data Record Not implemented (Central Directory Encryption)
Digital Signature Not implemented
File Comments Fully supported
Archive Comments Fully supported

General Purpose Bit Flags

Bit Flag Name Reading Writing Notes
0 Encrypted Fully supported
1 Compression option (Deflate) / Dictionary size (Implode) / EOS marker (LZMA) Supported per method
2 Compression option (Deflate) / Shannon-Fano trees (Implode) Supported per method
3 Data Descriptor Fully supported
4 Enhanced deflating Not implemented
5 Compressed patched data Not implemented
6 Strong encryption ✅ (aes-crypto) ✅ (aes-crypto) AES encryption
7 Unused N/A N/A Reserved
8 Unused N/A N/A Reserved
9 Unused N/A N/A Reserved
10 Unused N/A N/A Reserved
11 Language encoding flag (EFS) - UTF-8 Fully supported
12 Reserved by PKWARE Not implemented
13 Central Directory Encryption masking Not implemented
14 Reserved by PKWARE Not implemented
15 Reserved by PKWARE Not implemented

Advanced Features

Feature Reading Writing Notes
Multi-disk/Split Archives Not implemented
Spanned Archives Not implemented
Self-extracting Archives (PKSFX) Not implemented
Streaming ZIP Creation Via data descriptors
Streaming ZIP Reading Partial support
Manifest Files Not implemented (application-specific)
UTF-8 Filenames (Bit 11) Fully supported
UTF-8 Comments (Bit 11) Fully supported
MS-DOS Date/Time Format Fully supported
CRC-32 Checksums Fully supported
External File Attributes Basic support (Unix permissions)
Internal File Attributes Basic support

System Compatibility

System Reading Writing Notes
MS-DOS / Windows (FAT/VFAT/FAT32) Fully supported
UNIX Unix permissions supported
OS/2 Basic support
Macintosh Basic support
NTFS NTFS extra field supported
OpenVMS Not implemented
VM/CMS Not implemented
Atari ST Not implemented
Amiga Not implemented
OS X (Darwin) Basic support
IBM z/OS Not implemented
AS/400 Not implemented

Summary

Fully Implemented Features

  • ✅ Core ZIP file structure (local headers, central directory, EOCD)
  • ✅ ZIP64 extensions for large files
  • ✅ Data descriptors
  • ✅ UTF-8 filename/comment support (Bit 11 and extra fields)
  • ✅ Multiple compression methods (Stored, Deflate, Deflate64, BZIP2, Zstd, LZMA, XZ, PPMd)
  • ✅ Traditional PKWARE encryption (ZipCrypto)
  • ✅ AES encryption (AE-1, AE-2)
  • ✅ Key extra fields (ZIP64, NTFS, Extended Timestamp, Unicode paths/comments, AES, Data Alignment)
  • ✅ File and archive comments
  • ✅ CRC-32 integrity checking

Partially Implemented Features

  • ⚠️ Legacy compression methods (Shrink, Reduce, Implode) - read-only with feature flag
  • ⚠️ LZMA and Deflate64 - decompression only
  • ⚠️ Streaming - reading supported, writing via data descriptors

Not Implemented Features

  • ❌ Multi-disk/split archives
  • ❌ Strong encryption methods (DES, 3DES, RC2, RC4, Blowfish, Twofish)
  • ❌ Certificate-based encryption
  • ❌ Central Directory Encryption
  • ❌ Digital signatures
  • ❌ Most extra fields (recognized but not parsed)
  • ❌ Self-extracting archives
  • ❌ Platform-specific attributes (OpenVMS, VM/CMS, IBM z/OS, AS/400)

Legend

  • ✅ = Fully implemented
  • ⚠️ = Partially implemented
  • ❌ = Not implemented
  • N/A = Not applicable

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions