Hi, I know that the implementation of the PKWARE AES crypto is subject to
license restrictions but is it possible to recognize the extension fields
so anyone scanning an unfamiliar file will at least know what the extra
field headers contain?

I don't know if code to parse the contents (solely using the standard JCE)
would trigger export restrictions. This would NOT be decrypting the data,
just adding a thin layer of code to parse a standardized ASN.1 object.

(BTW there are some other header types documented but except for a few I
don't know what they are.)

The header IDs (per
https://pkware.cachefly.net/webdocs/casestudies/APPNOTE.TXT) are:

      0x0014        PKCS#7 Store for X.509 Certificates
      0x0015        X.509 Certificate ID and Signature for
                    individual file
      0x0016        X.509 Certificate ID for Central Directory
      0x0017        Strong Encryption Header
      0x0019        PKCS#7 Encryption Recipient Certificate List

The definitions are:

   4.5.9 -PKCS#7 Store for X.509 Certificates (0x0014):

        This field MUST contain information about each of the certificates
        files may be signed with. When the Central Directory Encryption
        feature is enabled for a ZIP file, this record will appear in
        the Archive Extra Data Record, otherwise it will appear in the
        first central directory record and will be ignored in any
        other record.


        Note: all fields stored in Intel low-byte/high-byte order.

        Value     Size     Description
        -----     ----     -----------
(Store) 0x0014    2 bytes  Tag for this "extra" block type
        TSize     2 bytes  Size of the store data
        TData     TSize    Data about the store


   4.5.10 -X.509 Certificate ID and Signature for individual file (0x0015):

        This field contains the information about which certificate in
        the PKCS#7 store was used to sign a particular file. It also
        contains the signature data. This field can appear multiple
        times, but can only appear once per certificate.

        Note: all fields stored in Intel low-byte/high-byte order.

        Value     Size     Description
        -----     ----     -----------
(CID)   0x0015    2 bytes  Tag for this "extra" block type
        TSize     2 bytes  Size of data that follows
        TData     TSize    Signature Data

   4.5.11 -X.509 Certificate ID and Signature for central directory (0x0016):

        This field contains the information about which certificate in
        the PKCS#7 store was used to sign the central directory structure.
        When the Central Directory Encryption feature is enabled for a
        ZIP file, this record will appear in the Archive Extra Data Record,
        otherwise it will appear in the first central directory record.

        Note: all fields stored in Intel low-byte/high-byte order.

        Value     Size     Description
        -----     ----     -----------
(CDID)  0x0016    2 bytes  Tag for this "extra" block type
        TSize     2 bytes  Size of data that follows
        TData     TSize    Data

   4.5.12 -Strong Encryption Header (0x0017):

        Value     Size     Description
        -----     ----     -----------
        0x0017    2 bytes  Tag for this "extra" block type
        TSize     2 bytes  Size of data that follows
        Format    2 bytes  Format definition for this record
        AlgID     2 bytes  Encryption algorithm identifier
        Bitlen    2 bytes  Bit length of encryption key
        Flags     2 bytes  Processing flags
        CertData  TSize-8  Certificate decryption extra field data
                           (refer to the explanation for CertData
                            in the section describing the
                            Certificate Processing Method under
                            the Strong Encryption Specification)

        See the section describing the Strong Encryption Specification
        for details.  Refer to the section in this document entitled
        "Incorporating PKWARE Proprietary Technology into Your Product"
        for more information.

   4.5.14 -PKCS#7 Encryption Recipient Certificate List (0x0019):

        This field MAY contain information about each of the certificates
        used in encryption processing and it can be used to identify who is
        allowed to decrypt encrypted files.  This field should only appear
        in the archive extra data record. This field is not required and
        serves only to aid archive modifications by preserving public
        encryption key data. Individual security requirements may dictate
        that this data be omitted to deter information exposure.

        Note: all fields stored in Intel low-byte/high-byte order.

         Value     Size     Description
         -----     ----     -----------
(CStore) 0x0019    2 bytes  Tag for this "extra" block type
         TSize     2 bytes  Size of the store data
         TData     TSize    Data about the store

         TData:

         Value     Size     Description
         -----     ----     -----------
         Version   2 bytes  Format version number - must 0x0001 at this time
         CStore    (var)    PKCS#7 data blob

         See the section describing the Strong Encryption Specification
         for details.  Refer to the section in this document entitled
         "Incorporating PKWARE Proprietary Technology into Your Product"
         for more information.

Reply via email to