package org.bouncycastle.cms;

import java.io.IOException;
import java.io.InputStream;

import org.bouncycastle.asn1.ASN1ObjectIdentifier;
import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.cms.CompressedData;
import org.bouncycastle.asn1.cms.ContentInfo;
import org.bouncycastle.operator.InputExpander;
import org.bouncycastle.operator.InputExpanderProvider;
import org.bouncycastle.util.Encodable;

containing class for an CMS Compressed Data object
    CMSCompressedData cd = new CMSCompressedData(inputStream);
    process(cd.getContent(new ZlibExpanderProvider()));
/** * containing class for an CMS Compressed Data object * <pre> * CMSCompressedData cd = new CMSCompressedData(inputStream); * * process(cd.getContent(new ZlibExpanderProvider())); * </pre> */
public class CMSCompressedData implements Encodable { ContentInfo contentInfo; CompressedData comData; public CMSCompressedData( byte[] compressedData) throws CMSException { this(CMSUtils.readContentInfo(compressedData)); } public CMSCompressedData( InputStream compressedData) throws CMSException { this(CMSUtils.readContentInfo(compressedData)); } public CMSCompressedData( ContentInfo contentInfo) throws CMSException { this.contentInfo = contentInfo; try { this.comData = CompressedData.getInstance(contentInfo.getContent()); } catch (ClassCastException e) { throw new CMSException("Malformed content.", e); } catch (IllegalArgumentException e) { throw new CMSException("Malformed content.", e); } } public ASN1ObjectIdentifier getContentType() { return contentInfo.getContentType(); }
Return the uncompressed content.
Params:
  • expanderProvider – a provider of expander algorithm implementations.
Throws:
  • CMSException – if there is an exception un-compressing the data.
Returns:the uncompressed content
/** * Return the uncompressed content. * * @param expanderProvider a provider of expander algorithm implementations. * @return the uncompressed content * @throws CMSException if there is an exception un-compressing the data. */
public byte[] getContent(InputExpanderProvider expanderProvider) throws CMSException { ContentInfo content = comData.getEncapContentInfo(); ASN1OctetString bytes = (ASN1OctetString)content.getContent(); InputExpander expander = expanderProvider.get(comData.getCompressionAlgorithmIdentifier()); InputStream zIn = expander.getInputStream(bytes.getOctetStream()); try { return CMSUtils.streamToByteArray(zIn); } catch (IOException e) { throw new CMSException("exception reading compressed stream.", e); } }
return the ContentInfo
/** * return the ContentInfo */
public ContentInfo toASN1Structure() { return contentInfo; }
return the ASN.1 encoded representation of this object.
/** * return the ASN.1 encoded representation of this object. */
public byte[] getEncoded() throws IOException { return contentInfo.getEncoded(); } }