Class PKWareExtraHeader

java.lang.Object
org.apache.commons.compress.archivers.zip.PKWareExtraHeader
All Implemented Interfaces:
ZipExtraField
Direct Known Subclasses:
X0014_X509Certificates, X0015_CertificateIdForFile, X0016_CertificateIdForCentralDirectory, X0017_StrongEncryptionHeader, X0019_EncryptionRecipientCertificateList

public abstract class PKWareExtraHeader extends Object implements ZipExtraField
Base class for all PKWare strong crypto extra headers.

This base class acts as a marker so you know you can ignore all extra fields that extend this class if you are not interested in the meta data of PKWare strong encryption.

Algorithm IDs - integer identifier of the encryption algorithm from the following range
  • 0x6601 - DES
  • 0x6602 - RC2 (version needed to extract < 5.2)
  • 0x6603 - 3DES 168
  • 0x6609 - 3DES 112
  • 0x660E - AES 128
  • 0x660F - AES 192
  • 0x6610 - AES 256
  • 0x6702 - RC2 (version needed to extract >= 5.2)
  • 0x6720 - Blowfish
  • 0x6721 - Twofish
  • 0x6801 - RC4
  • 0xFFFF - Unknown algorithm
Hash Algorithms - integer identifier of the hash algorithm from the following range
  • 0x0000 - none
  • 0x0001 - CRC32
  • 0x8003 - MD5
  • 0x8004 - SHA1
  • 0x8007 - RIPEMD160
  • 0x800C - SHA256
  • 0x800D - SHA384
  • 0x800E - SHA512
Since:
1.11
  • Field Details

    • headerId

      private final ZipShort headerId
    • localData

      private byte[] localData
      Extra field data in local file data - without Header-ID or length specifier.
    • centralData

      private byte[] centralData
      Extra field data in central directory - without Header-ID or length specifier.
  • Constructor Details

    • PKWareExtraHeader

      protected PKWareExtraHeader(ZipShort headerId)
  • Method Details

    • getHeaderId

      public ZipShort getHeaderId()
      Get the header id.
      Specified by:
      getHeaderId in interface ZipExtraField
      Returns:
      the header id
    • setLocalFileDataData

      public void setLocalFileDataData(byte[] data)
      Set the extra field data in the local file data - without Header-ID or length specifier.
      Parameters:
      data - the field data to use
    • getLocalFileDataLength

      public ZipShort getLocalFileDataLength()
      Get the length of the local data.
      Specified by:
      getLocalFileDataLength in interface ZipExtraField
      Returns:
      the length of the local data
    • getLocalFileDataData

      public byte[] getLocalFileDataData()
      Get the local data.
      Specified by:
      getLocalFileDataData in interface ZipExtraField
      Returns:
      the local data
    • setCentralDirectoryData

      public void setCentralDirectoryData(byte[] data)
      Set the extra field data in central directory.
      Parameters:
      data - the data to use
    • getCentralDirectoryLength

      public ZipShort getCentralDirectoryLength()
      Get the central data length. If there is no central data, get the local file data length.
      Specified by:
      getCentralDirectoryLength in interface ZipExtraField
      Returns:
      the central data length
    • getCentralDirectoryData

      public byte[] getCentralDirectoryData()
      Get the central data.
      Specified by:
      getCentralDirectoryData in interface ZipExtraField
      Returns:
      the central data if present, else return the local file data
    • parseFromLocalFileData

      public void parseFromLocalFileData(byte[] data, int offset, int length) throws ZipException
      Description copied from interface: ZipExtraField
      Populate data from this array as if it was in local file data.
      Specified by:
      parseFromLocalFileData in interface ZipExtraField
      Parameters:
      data - the array of bytes.
      offset - the source location in the data array.
      length - the number of bytes to use in the data array.
      Throws:
      ZipException - on error
      See Also:
    • parseFromCentralDirectoryData

      public void parseFromCentralDirectoryData(byte[] data, int offset, int length) throws ZipException
      Description copied from interface: ZipExtraField
      Populate data from this array as if it was in central directory data.
      Specified by:
      parseFromCentralDirectoryData in interface ZipExtraField
      Parameters:
      data - the array of bytes.
      offset - the source location in the data array.
      length - the number of bytes to use in the data array.
      Throws:
      ZipException - on error
      See Also:
    • assertMinimalLength

      protected final void assertMinimalLength(int minimum, int length) throws ZipException
      Throws:
      ZipException