51 lines
1.5 KiB
C#
51 lines
1.5 KiB
C#
using System.IO;
|
|
|
|
using Org.BouncyCastle.Apache.Bzip2;
|
|
using Org.BouncyCastle.Utilities.Zlib;
|
|
|
|
namespace Org.BouncyCastle.Bcpg.OpenPgp
|
|
{
|
|
/// <remarks>Compressed data objects</remarks>
|
|
public class PgpCompressedData
|
|
: PgpObject
|
|
{
|
|
private readonly CompressedDataPacket data;
|
|
|
|
public PgpCompressedData(
|
|
BcpgInputStream bcpgInput)
|
|
{
|
|
data = (CompressedDataPacket) bcpgInput.ReadPacket();
|
|
}
|
|
|
|
/// <summary>The algorithm used for compression</summary>
|
|
public CompressionAlgorithmTag Algorithm
|
|
{
|
|
get { return data.Algorithm; }
|
|
}
|
|
|
|
/// <summary>Get the raw input stream contained in the object.</summary>
|
|
public Stream GetInputStream()
|
|
{
|
|
return data.GetInputStream();
|
|
}
|
|
|
|
/// <summary>Return an uncompressed input stream which allows reading of the compressed data.</summary>
|
|
public Stream GetDataStream()
|
|
{
|
|
switch (Algorithm)
|
|
{
|
|
case CompressionAlgorithmTag.Uncompressed:
|
|
return GetInputStream();
|
|
case CompressionAlgorithmTag.Zip:
|
|
return new ZInflaterInputStream(GetInputStream(), true);
|
|
case CompressionAlgorithmTag.ZLib:
|
|
return new ZInflaterInputStream(GetInputStream());
|
|
case CompressionAlgorithmTag.BZip2:
|
|
return new CBZip2InputStream(GetInputStream());
|
|
default:
|
|
throw new PgpException("can't recognise compression algorithm: " + Algorithm);
|
|
}
|
|
}
|
|
}
|
|
}
|