35 lines
934 B
C#
35 lines
934 B
C#
using System.IO;
|
|
using Org.BouncyCastle.Apache.Bzip2;
|
|
using Org.BouncyCastle.Utilities.Zlib;
|
|
|
|
namespace Org.BouncyCastle.Bcpg.OpenPgp;
|
|
|
|
public class PgpCompressedData : PgpObject
|
|
{
|
|
private readonly CompressedDataPacket data;
|
|
|
|
public CompressionAlgorithmTag Algorithm => data.Algorithm;
|
|
|
|
public PgpCompressedData(BcpgInputStream bcpgInput)
|
|
{
|
|
data = (CompressedDataPacket)bcpgInput.ReadPacket();
|
|
}
|
|
|
|
public Stream GetInputStream()
|
|
{
|
|
return data.GetInputStream();
|
|
}
|
|
|
|
public Stream GetDataStream()
|
|
{
|
|
return Algorithm switch
|
|
{
|
|
CompressionAlgorithmTag.Uncompressed => GetInputStream(),
|
|
CompressionAlgorithmTag.Zip => new ZInputStream(GetInputStream(), nowrap: true),
|
|
CompressionAlgorithmTag.ZLib => new ZInputStream(GetInputStream()),
|
|
CompressionAlgorithmTag.BZip2 => new CBZip2InputStream(GetInputStream()),
|
|
_ => throw new PgpException("can't recognise compression algorithm: " + Algorithm),
|
|
};
|
|
}
|
|
}
|