123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- #if !BESTHTTP_DISABLE_ALTERNATE_SSL && (!UNITY_WEBGL || UNITY_EDITOR)
- #pragma warning disable
- using System;
- using System.IO;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Asn1.Cms;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities;
- using BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Zlib;
- namespace BestHTTP.SecureProtocol.Org.BouncyCastle.Cms
- {
- /**
- * containing class for an CMS Compressed Data object
- */
- public class CmsCompressedData
- {
- internal ContentInfo contentInfo;
- public CmsCompressedData(
- byte[] compressedData)
- : this(CmsUtilities.ReadContentInfo(compressedData))
- {
- }
- public CmsCompressedData(
- Stream compressedDataStream)
- : this(CmsUtilities.ReadContentInfo(compressedDataStream))
- {
- }
- public CmsCompressedData(
- ContentInfo contentInfo)
- {
- this.contentInfo = contentInfo;
- }
- /**
- * Return the uncompressed content.
- *
- * @return the uncompressed content
- * @throws CmsException if there is an exception uncompressing the data.
- */
- public byte[] GetContent()
- {
- CompressedData comData = CompressedData.GetInstance(contentInfo.Content);
- ContentInfo content = comData.EncapContentInfo;
- Asn1OctetString bytes = (Asn1OctetString) content.Content;
- ZInputStream zIn = new ZInputStream(bytes.GetOctetStream());
- try
- {
- return CmsUtilities.StreamToByteArray(zIn);
- }
- catch (IOException e)
- {
- throw new CmsException("exception reading compressed stream.", e);
- }
- finally
- {
- BestHTTP.SecureProtocol.Org.BouncyCastle.Utilities.Platform.Dispose(zIn);
- }
- }
- /**
- * Return the uncompressed content, throwing an exception if the data size
- * is greater than the passed in limit. If the content is exceeded getCause()
- * on the CMSException will contain a StreamOverflowException
- *
- * @param limit maximum number of bytes to read
- * @return the content read
- * @throws CMSException if there is an exception uncompressing the data.
- */
- public byte[] GetContent(int limit)
- {
- CompressedData comData = CompressedData.GetInstance(contentInfo.Content);
- ContentInfo content = comData.EncapContentInfo;
- Asn1OctetString bytes = (Asn1OctetString)content.Content;
- ZInputStream zIn = new ZInputStream(new MemoryStream(bytes.GetOctets(), false));
- try
- {
- return CmsUtilities.StreamToByteArray(zIn, limit);
- }
- catch (IOException e)
- {
- throw new CmsException("exception reading compressed stream.", e);
- }
- }
- /**
- * return the ContentInfo
- */
- public ContentInfo ContentInfo
- {
- get { return contentInfo; }
- }
- /**
- * return the ASN.1 encoded representation of this object.
- */
- public byte[] GetEncoded()
- {
- return contentInfo.GetEncoded();
- }
- }
- }
- #pragma warning restore
- #endif
|