Class PGPCompressedData
- All Implemented Interfaces:
CompressionAlgorithmTags
-
Field Summary
Fields inherited from interface CompressionAlgorithmTags
BZIP2, UNCOMPRESSED, ZIP, ZLIB -
Constructor Summary
ConstructorsConstructorDescriptionPGPCompressedData(byte[] encData) Construct a PGP compressed data object from the passed in byte array.PGPCompressedData(InputStream inStream) Construct a PGP compressed data object from the passed in input stream.Construct a compressed data object, reading a singlePacketTags.COMPRESSED_DATApacket from the stream. -
Method Summary
Modifier and TypeMethodDescriptionintReturn thecompression algorithmused for this packet.Return an input stream that decompresses and returns data in the compressed packet.getDataStream(long limit) Return an input stream that decompresses and returns data in the compressed packet, failing with aStreamOverflowException(anIOException) once more thanlimitdecompressed bytes have been read.Return the raw input stream contained in the object.
-
Constructor Details
-
PGPCompressedData
Construct a PGP compressed data object from the passed in byte array.- Parameters:
encData- an encoding of PGP compressed data.- Throws:
IOException- if an error occurs reading from the PGP input.
-
PGPCompressedData
Construct a PGP compressed data object from the passed in input stream.- Parameters:
inStream- an input stream containing an encoding of PGP compressed data.- Throws:
IOException- if an error occurs reading from the PGP input.
-
PGPCompressedData
Construct a compressed data object, reading a singlePacketTags.COMPRESSED_DATApacket from the stream.- Parameters:
pIn- a PGP input stream, with a compressed data packet as the current packet.- Throws:
IOException- if an error occurs reading the packet from the stream.
-
-
Method Details
-
getAlgorithm
public int getAlgorithm()Return thecompression algorithmused for this packet.- Returns:
- the compression algorithm code
-
getInputStream
Return the raw input stream contained in the object.Note that this stream is shared with the decompression stream, so consuming the returned stream will affect decompression.
- Returns:
- the raw data in the compressed data packet.
-
getDataStream
Return an input stream that decompresses and returns data in the compressed packet.The OpenPGP compressed data packet carries no decompressed-length field, so the returned stream is unbounded: a small compressed packet can expand into an arbitrarily large amount of data (a "decompression bomb"). When processing untrusted input, a caller that buffers the full decompressed output should bound it — by reading incrementally, or by using
getDataStream(long)to cap the number of decompressed bytes.- Returns:
- a stream over the uncompressed data.
- Throws:
PGPException- if an error occurs constructing the decompression stream.
-
getDataStream
Return an input stream that decompresses and returns data in the compressed packet, failing with aStreamOverflowException(anIOException) once more thanlimitdecompressed bytes have been read. This caps the "decompression bomb" amplification of an untrusted compressed packet for callers that buffer the decompressed output.The limit applies to the decompressed byte count. For BZIP2 the underlying decompressor still allocates its fixed working buffers — sized by the packet's block-size header, up to ~4.5MB — when the stream is constructed, independently of this limit.
- Parameters:
limit- the maximum number of decompressed bytes that may be read, or a negative value for no limit (equivalent togetDataStream()).- Returns:
- a stream over the uncompressed data, bounded to
limitbytes. - Throws:
PGPException- if an error occurs constructing the decompression stream.
-