<PackageReference Include="BouncyCastle.Cryptography" Version="2.6.1" />

CmsCompressedData

public class CmsCompressedData
using Org.BouncyCastle.Asn1; using Org.BouncyCastle.Asn1.Cms; using Org.BouncyCastle.Utilities.IO.Compression; using System; using System.IO; namespace Org.BouncyCastle.Cms { public class CmsCompressedData { private readonly ContentInfo m_contentInfo; private readonly CompressedData m_compressedData; public CompressedData CompressedData => m_compressedData; public ContentInfo ContentInfo => m_contentInfo; public CmsCompressedData(byte[] compressedData) : this(CmsUtilities.ReadContentInfo(compressedData)) { } public CmsCompressedData(Stream compressedDataStream) : this(CmsUtilities.ReadContentInfo(compressedDataStream)) { } public CmsCompressedData(ContentInfo contentInfo) { m_contentInfo = contentInfo; m_compressedData = CompressedData.GetInstance(contentInfo.Content); } public byte[] GetContent() { return Decompress((Stream zIn) => CmsUtilities.StreamToByteArray(zIn)); } public byte[] GetContent(int limit) { return Decompress((Stream zIn) => CmsUtilities.StreamToByteArray(zIn, limit)); } public byte[] GetEncoded() { return m_contentInfo.GetEncoded(); } private byte[] Decompress(Func<Stream, byte[]> converter) { Asn1OctetString instance = Asn1OctetString.GetInstance(CompressedData.EncapContentInfo.Content); try { using (Stream arg = ZLib.DecompressInput(instance.GetOctetStream(), false)) return converter(arg); } catch (IOException innerException) { throw new CmsException("exception reading compressed stream.", innerException); } } } }