Bouncy Castle Cryptography Library 1.85

org.bouncycastle.cms
Class CMSEnvelopedDataStreamGenerator

java.lang.Object
  extended byorg.bouncycastle.cms.CMSEnvelopedGenerator
      extended byorg.bouncycastle.cms.CMSEnvelopedDataStreamGenerator

public class CMSEnvelopedDataStreamGenerator
extends CMSEnvelopedGenerator

General class for generating a CMS enveloped-data message stream.

A simple example of usage. CMSEnvelopedDataStreamGenerator edGen = new CMSEnvelopedDataStreamGenerator(); edGen.addRecipientInfoGenerator(new JceKeyTransRecipientInfoGenerator(recipientCert).setProvider("BC")); ByteArrayOutputStream bOut = new ByteArrayOutputStream(); OutputStream out = edGen.open( bOut, new JceCMSContentEncryptorBuilder(CMSAlgorithm.DES_EDE3_CBC) .setProvider("BC").build()); out.write(data); out.close();

Stream handling note: The returned OutputStream must be closed to finalize the CMS structure. Closing the returned stream does not close the underlying OutputStream passed to . Callers are responsible for closing the underlying OutputStream separately. If the underlying OutputStream is a buffering encoder whose tail state only flushes on close (e.g. Apache Commons ), failing to close it will cause the encoded output to be truncated.


Field Summary
 
Fields inherited from class org.bouncycastle.cms.CMSEnvelopedGenerator
AES128_CBC, AES128_WRAP, AES192_CBC, AES192_WRAP, AES256_CBC, AES256_WRAP, CAMELLIA128_CBC, CAMELLIA128_WRAP, CAMELLIA192_CBC, CAMELLIA192_WRAP, CAMELLIA256_CBC, CAMELLIA256_WRAP, CAST5_CBC, DES_EDE3_CBC, DES_EDE3_WRAP, ECDH_SHA1KDF, ECMQV_SHA1KDF, ECMQV_SHA224KDF, ECMQV_SHA256KDF, ECMQV_SHA384KDF, ECMQV_SHA512KDF, encoding, IDEA_CBC, originatorInfo, RC2_CBC, SEED_CBC, SEED_WRAP, unprotectedAttributeGenerator
 
Constructor Summary
CMSEnvelopedDataStreamGenerator()
          base constructor
 
Method Summary
protected  java.io.OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, java.io.OutputStream out, org.bouncycastle.asn1.ASN1EncodableVector recipientInfos, OutputEncryptor encryptor)
           
 java.io.OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, java.io.OutputStream out, long inputLength, OutputEncryptor encryptor)
          Generate an enveloped object that contains a CMS Enveloped Data object for content octets of the passed in type, using the given encryptor - see open(OutputStream, long, OutputEncryptor).
 java.io.OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType, java.io.OutputStream out, OutputEncryptor encryptor)
          generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor and marking the data as being of the passed in type.
protected  java.io.OutputStream open(java.io.OutputStream out, org.bouncycastle.asn1.ASN1EncodableVector recipientInfos, OutputEncryptor encryptor)
           
 java.io.OutputStream open(java.io.OutputStream out, long inputLength, OutputEncryptor encryptor)
          Generate an enveloped object that contains a CMS Enveloped Data object for content octets, using the given encryptor.
 java.io.OutputStream open(java.io.OutputStream out, OutputEncryptor encryptor)
          generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor.
 void setBEREncodeRecipients(boolean berEncodeRecipientSet)
          Use a BER Set to store the recipient information
 void setBufferSize(int bufferSize)
          Set the underlying string size for encapsulated data
 
Methods inherited from class org.bouncycastle.cms.CMSEnvelopedGenerator
addRecipientInfoGenerator, setEncoding, setOriginatorInfo, setUnprotectedAttributeGenerator
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CMSEnvelopedDataStreamGenerator

public CMSEnvelopedDataStreamGenerator()
base constructor

Method Detail

setBufferSize

public void setBufferSize(int bufferSize)
Set the underlying string size for encapsulated data

Parameters:
bufferSize - length of octet strings to buffer the data.

setBEREncodeRecipients

public void setBEREncodeRecipients(boolean berEncodeRecipientSet)
Use a BER Set to store the recipient information


open

protected java.io.OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType,
                                    java.io.OutputStream out,
                                    org.bouncycastle.asn1.ASN1EncodableVector recipientInfos,
                                    OutputEncryptor encryptor)
                             throws java.io.IOException
Throws:
java.io.IOException

open

protected java.io.OutputStream open(java.io.OutputStream out,
                                    org.bouncycastle.asn1.ASN1EncodableVector recipientInfos,
                                    OutputEncryptor encryptor)
                             throws CMSException
Throws:
CMSException

open

public java.io.OutputStream open(java.io.OutputStream out,
                                 OutputEncryptor encryptor)
                          throws CMSException,
                                 java.io.IOException
generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor.

Throws:
CMSException
java.io.IOException

open

public java.io.OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType,
                                 java.io.OutputStream out,
                                 OutputEncryptor encryptor)
                          throws CMSException,
                                 java.io.IOException
generate an enveloped object that contains an CMS Enveloped Data object using the given encryptor and marking the data as being of the passed in type.

Throws:
CMSException
java.io.IOException

open

public java.io.OutputStream open(java.io.OutputStream out,
                                 long inputLength,
                                 OutputEncryptor encryptor)
                          throws CMSException,
                                 java.io.IOException
Generate an enveloped object that contains a CMS Enveloped Data object for content octets, using the given encryptor. In definite-length mode (see CMSEnvelopedGenerator.setEncoding(String)) the length is used to pre-compute every enclosing header, so exactly that many content octets must then be written to the returned stream - a mismatch fails with an IOException, by which point the output is unusable and must be discarded. In BER mode the length is ignored.

In definite-length mode the buffer size and BER recipient set settings are ignored (an indefinite-length encoding may not appear inside a definite-length one). Nothing is buffered, so content larger than a Java array can carry is supported.

Throws:
CMSException
java.io.IOException

open

public java.io.OutputStream open(org.bouncycastle.asn1.ASN1ObjectIdentifier dataType,
                                 java.io.OutputStream out,
                                 long inputLength,
                                 OutputEncryptor encryptor)
                          throws CMSException,
                                 java.io.IOException
Generate an enveloped object that contains a CMS Enveloped Data object for content octets of the passed in type, using the given encryptor - see open(OutputStream, long, OutputEncryptor).

Throws:
CMSException
java.io.IOException

Bouncy Castle Cryptography Library 1.85