com.fitbur.bouncycastle.cms.CMSCompressedDataParser Maven / Gradle / Ivy
package com.fitbur.bouncycastle.cms;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import com.fitbur.bouncycastle.asn1.ASN1OctetStringParser;
import com.fitbur.bouncycastle.asn1.ASN1SequenceParser;
import com.fitbur.bouncycastle.asn1.BERTags;
import com.fitbur.bouncycastle.asn1.cms.CompressedDataParser;
import com.fitbur.bouncycastle.asn1.cms.ContentInfoParser;
import com.fitbur.bouncycastle.operator.InputExpander;
import com.fitbur.bouncycastle.operator.InputExpanderProvider;
/**
* Class for reading a CMS Compressed Data stream.
*
* CMSCompressedDataParser cp = new CMSCompressedDataParser(inputStream);
*
* process(cp.getContent(new ZlibExpanderProvider()).getContentStream());
*
* Note: this class does not introduce buffering - if you are processing large files you should create
* the parser with:
*
* CMSCompressedDataParser ep = new CMSCompressedDataParser(new BufferedInputStream(inputStream, bufSize));
*
* where bufSize is a suitably large buffer size.
*/
public class CMSCompressedDataParser
extends CMSContentInfoParser
{
public CMSCompressedDataParser(
byte[] com.fitburpressedData)
throws CMSException
{
this(new ByteArrayInputStream(com.fitburpressedData));
}
public CMSCompressedDataParser(
InputStream com.fitburpressedData)
throws CMSException
{
super(com.fitburpressedData);
}
/**
* Return a typed stream which will allow the reading of the com.fitburpressed content in
* expanded form.
*
* @param expanderProvider a provider of expander algorithm implementations.
* @return a type stream which will yield the un-com.fitburpressed content.
* @throws CMSException if there is an exception parsing the CompressedData object.
*/
public CMSTypedStream getContent(InputExpanderProvider expanderProvider)
throws CMSException
{
try
{
CompressedDataParser com.fitburData = new CompressedDataParser((ASN1SequenceParser)_contentInfo.getContent(BERTags.SEQUENCE));
ContentInfoParser content = com.fitburData.getEncapContentInfo();
InputExpander expander = expanderProvider.get(com.fitburData.getCompressionAlgorithmIdentifier());
ASN1OctetStringParser bytes = (ASN1OctetStringParser)content.getContent(BERTags.OCTET_STRING);
return new CMSTypedStream(content.getContentType().getId(), expander.getInputStream(bytes.getOctetStream()));
}
catch (IOException e)
{
throw new CMSException("IOException reading com.fitburpressed content.", e);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy