All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.bouncycastle.cms.CMSCompressedDataGenerator Maven / Gradle / Ivy

There is a newer version: 1.12.0
Show newest version
package org.bouncycastle.cms;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;

import org.bouncycastle.asn1.ASN1OctetString;
import org.bouncycastle.asn1.BEROctetString;
import org.bouncycastle.asn1.cms.CMSObjectIdentifiers;
import org.bouncycastle.asn1.cms.CompressedData;
import org.bouncycastle.asn1.cms.ContentInfo;
import org.bouncycastle.asn1.x509.AlgorithmIdentifier;
import org.bouncycastle.operator.OutputCompressor;

/**
 * General class for generating a compressed CMS message.
 * 

* A simple example of usage. *

*

 *      CMSCompressedDataGenerator  fact = new CMSCompressedDataGenerator();
 *
 *      CMSCompressedData           data = fact.generate(content, new ZlibCompressor());
 * 
*/ public class CMSCompressedDataGenerator { public static final String ZLIB = "1.2.840.113549.1.9.16.3.8"; /** * base constructor */ public CMSCompressedDataGenerator() { } /** * generate an object that contains an CMS Compressed Data */ public CMSCompressedData generate( CMSTypedData content, OutputCompressor compressor) throws CMSException { AlgorithmIdentifier comAlgId; ASN1OctetString comOcts; try { ByteArrayOutputStream bOut = new ByteArrayOutputStream(); OutputStream zOut = compressor.getOutputStream(bOut); content.write(zOut); zOut.close(); comAlgId = compressor.getAlgorithmIdentifier(); comOcts = new BEROctetString(bOut.toByteArray()); } catch (IOException e) { throw new CMSException("exception encoding data.", e); } ContentInfo comContent = new ContentInfo( content.getContentType(), comOcts); ContentInfo contentInfo = new ContentInfo( CMSObjectIdentifiers.compressedData, new CompressedData(comAlgId, comContent)); return new CMSCompressedData(contentInfo); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy