PgpCompressedData
using Org.BouncyCastle.Utilities.IO.Compression;
using System.IO;
namespace Org.BouncyCastle.Bcpg.OpenPgp
{
public class PgpCompressedData : PgpObject
{
private readonly CompressedDataPacket data;
public CompressionAlgorithmTag Algorithm => data.Algorithm;
public PgpCompressedData(BcpgInputStream bcpgInput)
{
Packet packet = bcpgInput.ReadPacket();
CompressedDataPacket compressedDataPacket = packet as CompressedDataPacket;
if (compressedDataPacket == null)
throw new IOException("unexpected packet in stream: " + packet?.ToString());
data = compressedDataPacket;
}
public Stream GetInputStream()
{
return data.GetInputStream();
}
public Stream GetDataStream()
{
switch (Algorithm) {
case CompressionAlgorithmTag.Uncompressed:
return GetInputStream();
case CompressionAlgorithmTag.Zip:
return Zip.DecompressInput(GetInputStream(), false);
case CompressionAlgorithmTag.ZLib:
return ZLib.DecompressInput(GetInputStream(), false);
case CompressionAlgorithmTag.BZip2:
return Bzip2.DecompressInput(GetInputStream(), false);
default:
throw new PgpException("can't recognise compression algorithm: " + Algorithm.ToString());
}
}
}
}