Initial Commit
This commit is contained in:
50
iTechSharp/srcbc/openpgp/PgpCompressedData.cs
Normal file
50
iTechSharp/srcbc/openpgp/PgpCompressedData.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user